3/10
[22일차]
문제풀이
난수업 자리수 구분 연습
to_char 다음 to_number함수
단일행함수 중에서 일반함수
4) 일반함수
#1. NVL(컬럼명, default값) : null값을 만나면 default값으로 치환해서 처리// 데이터 타입만 맞춰서 해주면 됨
#2. NVL2(컬럼1, 컬럼2, 컬럼3) : null값이 아닐 경우 다른 컬럼으로 대치.
컬럼1이 null이 아니면 컬럼2,
컬럼1이 null이면 컬럼3
DECODE()
# DECODE() : if(삼항연산자)를 오라클 sql로 가져온 함수, 오라클에서만 존재하는 함수
# 타입1. DECODE(A, B, '1', null) : 마지막 null은 생략 가능 // A- B 같으면 1, 다르면 뒤.
sql02.sql 새파일
table생성 : CREATE TABLE
CREATE TABLE [테이블명]
컬럼명 컬럼데이터타입 (옵션),
컬럼명 컬럼데이터타입 (옵션),
...
);
컬럼명 : 변수명 (알파벳소문자붙여서, 띄어씌기x기호x숫자x공백x)
데이터타입 : 반드시 명시 문자 : varchar2(글자길이값필수지정), 숫자:number (뒤 길이 자동잡히니까 소괄호생략), 날짜:date
옵션 : 제약조건 constraint (생략가능)
부적절한 자료가 입력되는 것을 방지하기 위해서 여러가지 규칙을 적용해 놓은것
not null : null 값이 들어올 수 없다.
unique : 중복요소 올 수 없다.
primary key : 중요. not null+ unique 형태.
테이블당 한 개는 있는 형태가 좋고, 테이블당 한 개 컬럼만 pk지정가능.
레코드(가로한줄)를 구분짓는 기준이 됨. 보통 앞에 숫자붙이는 1,2,3,... 이름은 중복값이 나올수 있으니까 pk가 될 수 없쥐. 전화번호는 중복이 안되지만 바뀔 수 있으니까 애매해
foreign key : 두개 테이블을 연결시킬 때 다른 테이블의 PK가 되는 컬럼을
현재 테이블에 FK로 지정
default : 디폴트 뒤에 있는 값으로 기본값 지정
check : 조건 체크 등 검사하고 들어갈 수 있는
*테이블 생성시 주의사항
- 테이블 이름과 컬럼은 항상 알파벳으로 시작
A-Z 문자, 0-9 숫자, $#_사용가능, 공백X
- 컬럼명 예약어 사용 불가 위에 옵션들이나, 명령어..
- 한 계정에서 테이블명 중복 불가, 다른테이블에서의 컬럼이름과 동일해도 무관.
2. 레코드 추가 : INSERT ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1) 모든 컬럼에 데이터 추가 (테이블명뒤에 컬럼명생략, 값순서 주의)
INSERT INTO [테이블명] VALUES ( [값들을 쉽표구분자로 컬럼순서대로 나열] );
2) 원하는 컬럼만 데이터 추가 (컬럼명 순서는 마음대로, 대신 값은 작성한 컬렴명 순서대로)
INSERT INTO [테이블명(컬럼명,컬럼명,..)] VALUES( [컬럼명작성한 순서대로 값들 나열] );
default 옵션은 2)버전일 경우만 처리됨.
3. 레코드 수정 : UPDATE
1) 일괄 수정
UPDATE [테이블명] SET [컬럼명=값] ;
2) 레코드 조건 수정
UPDATE [테이블명] SET [컬럼명=값 (,컬럼명=값,...)]
WHERE [조건식];
4. 레코드 삭제 : DELETE
1) 전체 레코드 삭제
DELETE FROM [테이블명]; : 테이블의 모든 데이터 삭제, 공간 반납은 안해줌 (테이블유지)
TRUNCATE TABLE [테이블명]; : 테이블의 모든 데이터 삭제, 사용하던 공간도 반납 (테이블유지)
2) 레코드 조건 삭제
DELETE FROM [테이블명]
WHERE [조건식];
5. 테이블 수정 구조바꾸기(ALTER) 수정이나 테이블삭제등...
1) 컬럼 추가
ALTER TABLE [테이블명] ADD ( [컬럼명 데이터타입 (옵션) ];
* 컬럼과 컬럼 사이에 초가 불가, 항상 맨 뒤에 추가
* 테이블에 이미 데이터가 들어가 있을 때는 not null옵션 줄 수 없다. default 가능.
2) 컬럼 타입 변경
ALTER TABLE [테이블명] MODIFY ( [컬럼명 테이터타입 (옵션) ] );
*컬럼 병경시 고려사항
- 해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못함, 기존 데이터 훼손 우려.
- 해당 컬럼의 NULL 값만 가지고 있거나 테이블에 아무 레코드기 옶으면 컬럼의 크기를 줄일 수 있다.
- 해당 컬럼의 NULL 값만을 가지고 있으면 데이터 유형을 변경할 수 있다.
- 해당 컬럼의 DEFAULT 값을 바꾸면 변경 이후에 발생하는 레코드 삽입에만 영향을 준다. 이전은 그대로
- 해당 컬럼에 NULL값이 없을 경우에만 NOT NULL 제약조건 추가 가능.
3) 컬럼 이름 변경 ALTER - RENAME
ALTER TABLE [테이블명] RENAME COLUMN [구 컬럼명] TO [새 컬럼명];
4) 컬럼 삭제 ATER - DROP
ALTER TABLE [테이블명] DROP COLUMN [컬럼명];
* 한번에 한개의 컬럼만 삭제 가능, 삭제 후 테이블에 한개이상의 컬럼이 남아있어야 함.
6. 테이블 삭제 : DROP 오후 12:58 2022-03-10
: 테이블 자체를 삭제
DROP TABLE [테이블명];
7. 예명(별칭) : ALIAS
: 조회된 결과에 일종의 별명 (alias)을 부여해서 컬럼 레이블(명)을 변경할 수 있다.
실제 테이블의 컬럼명이 변경되지 않고, 검색시 표에 예명으로 한번 붙는다.
SELECT [컬럼명] [예명], [컬럼명] [예명] from [테이블명];
SELECT [컬럼명] as [예명], [컬럼명] as [예명] from [테이블명];
* 예명은 컬럼명 바로 뒤에 작성
* 컬럼명과 예명 사이에 AS, as 키워드를 사용할 수도 있다.
* 예명은 쌍따옴표로 묶어서 표현하면 예명에 공백이나 특수문자, 대소문자 포함시킬 수 있고,
대소문자 구분하게 할 수도 있다.
* FROM절에 테이블 예명을 설명하면, SELECT 문장에서 테이블명 대신 사용 가능.
8. 트랜젝션 Transaction
: 데이터 처리되는 한 단위
트랜젝션 : 이전 커밋이 일어난 후 ~ 다음 커밋 전까지의 작업. 커밋하면 롤백불가. 커밋 안하면 다른사람 접근수정불가.
9. 그룹함수
1) 종류
COUNT : 데이터의 개수
SUM : 데이터의 합
AVG : 데이터의 평균
MAX : 데이터 중 최대값
MIN : 데이터 중 최소값
...
* 하나 또는 여러행을 주고, 하나의 결과값을 반환하는 형태
10. GROUP BY : 특정 조건으로 세부적인 그룹화 오후 2:48 2022-03-10
GROUP BY [그루핑 기준]
* WHERE 절 뒤/ ORDER BY 전.
11. HAVING 절
WHERE 절에는 집계함수 사용 불가
집계함수로 조건 비교할 때 사용
12. 서브쿼리
: 쿼리문 안에 쿼리문을 작성하는 형태
SELECT * FROM [테이블명];
SELECT * FROM ( 서브쿼리문 );
SELECT * FROM ( 서브쿼리문( 서브쿼리 ) );
계속 문제 연습 <<
13. 조인 JOIN <<
: 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법
두 테이블에 적어도 한 개의 컬럼은 서로 공유하는 형태여야 한다.
정규화 : 테이블별로 분할~
연산처리 작업공간은 메모리 ram 이 . 받아온 거 저장은 disk 에
오라클도 비슷한 원리
하드디스크에 저장해서 select하면, 메모리로 복사해와서 원하는 컬럼들만 연산해서 출력
test a,b,c,d,e 컬럼. 중 a,b를 가져오라고 한다면 test를 다 복사해서 가져오는 비효율 과정을 거친다.
이를 보완하기 위해 나온 게 정규화 : 하나로 합쳐져 있는 테이블을 여러개의 테이블로 나눠져서 조각으로 분리하는 기술.
중복방지, 검색 빠르게 알고리즘 빠르게 처리위해서.
정규화로 여러 테이블에 흩어져 있는 데이터들를 조함해서 가져오는 기술이 조인이다.
((( 쇼핑몰
상품테이블, 회원테이블, QnA테이블, 리뷰테이블, ...
카테고리 테이블도 따로 팜: 고유번호, 대분류(가전, 패션, 음식..), 중분류(상의 , 하의, 액세서리..), 소분류(반팔, 긴팔...),
상품테이블 : 카테고유번호(대분류-준분류-소분류)
상품번호, 상품명, 상품가격, 상품상세정보, 상품 이미지1,2,3.. , 재고, 옵션, 세일가,
사이즈 별, 컬러, 상태(품절, 일시품절, 완전품절..) // 한테이블에 때려넣으면 관리가 어렵다. 확장성도 떨어짐, 애시당초 다 따로 관리. (정규화)
판매자가 사이트에서 재고수정 상품수정 컬러 옵션 추가 등 할 수 있는 관리자 모드 테이블도 만들어야 한다.
)))
[Oracle Join]
select a.col1, b.col1 from table1 a, table2 b where a.col2=b.col2;
[ANSI Join]
select a.co1, b.col1 from table1 a, [inner] join table2 b on a.col2 = b.col2;
1) AQUI JOIN 등가조인
조인 연습 2
14. SELF Join
조인하고 싶은 데이터가 하나의 테이블에 다 들어있는 경우
15. 시퀀스 SEQUENCE
: 유일한(unique) 값을 생성해주는 오라클 객체
시퀀스를 생성하면 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있고,
주로 PK로 사용을 많이 한다.
number 타입의 pk값을 생성할 때 주로 사용.
시퀀스는 테이블과는 독립적으로 저장되고 생성된다. (은행 번호표~~)
1) 시퀀스 생성
CREATE SEQUENCE [시퀀스명] (옵션) ;
* 옵션 : 생략가능
START WITH n : 시퀀스의 시작값을 지정. DEFAULT 1
INCREAMENT BY n : 증가값 지정. DEFAULT 1
MAXVALUE : 최대값
MINVALUE : 최소값
CYCLE / NOCYCLE : 최대값 도달시 순환 여부, DEFAULT가 순환
CACHE n / NOCACHE : 시퀀스 생성속도를 개선하기 위해 캐싱여부 지정. DEFAUlT CACHE (대량 한번에 예매 방탄티켓, 홈쇼핑)
* 시퀀스명 : 테이블명_seq seq_테이블명
2) 시퀀스 사용
시퀀스명.CURRVAL : 현재까지 생성된 번호.
시퀀스명.NEXTVAL : 다음번호
사용해보기
3) 시퀀스 삭제
DROP SEQUENCE [시퀀스명];
유용한 공부 싸이트
https://poiemaweb.com/
카테고리 없음
댓글