SeSAC 6일차(2023-07-24)
SQL 기본(SQL 문-5)
데이터 조작
- INSERT 문
각 열에 대한 값이 포함된 새 행 삽입
기본 형태)
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
- UPDATE 문
테이블의 데이터 변경
기본 형태)
UPDATE table
SET column = value [, column = value, …]
[WHERE condition];
- DELETE 문
테이블에서 행 삭제
ex)
DELETE FROM table_name
WHERE condition;
DELETE FROM table_name;
- TRUNCATE 문
테이블에서 모든 행을 제거하지만 테이블 구조는 그대로 존재한다.
ex)
TRUNCATE TABLE table_name;
Database Transactions
- COMMIT 및 ROLLBACK 문의 이점
데이터 일관성 보장
데이터 변경 사항 검토
논리적으로 관련된 작업 그룹화
- 명시적 트랜잭션 제어문
- SAVEPOINT
SAVEPOINT 문을 사용하여 현재 트랜잭션에서 마커를 만든다.
ROLLBACK TO SAVEPOINT문을 사용하여 해당 마커로 롤백한다.
COMMIT – ROLLBACK
SAVEPOINT A – ROLLBACK to SAVEPOINT A
SAVEPOINT B – ROLLBACK to SAVEPOINT B
- 암시적 트랜잭션 처리
자동 커밋 발생은 DDL, DCL문이 실행되는 경우
- FOR UPDATE 절
SELECT 문에 의해 식별된 모든 행에 대해 Lock을 건다.
ROLLBACK 또는 COMMIT을 실행하는 경우에만 Lock이 해제된다.
DDL 문을 사용하여 테이블 생성 및 관리
- CREATE TABLE 문
테이블 이름, 열 이름, 열 데이터 형식, 열 크기 등 지정 가능
기본 형태)
CREATE TABLE [schema.] table
(column datatype [DEFAULT expr][, …]);
- DEFAULT 옵션
삽입 시 열에 대한 기본 값을 지정
- 제약조건
테이블 레벨에서 규칙 강제 적용
테이블이 생성되는 지점이나 테이블 생성 후 시점에서 제약 조건을 만든다.
열 또는 테이블 레벨에서 제약 조건 정의
NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK 존재
- NOT NULL 제약 조건
열이 null 값을 포함하지 않도록 보장
- UNIQUE 제약 조건
열의 모든 값이 고유해야 한다. 열이 중복 값을 가질 수 없다. Null을 입력할 수 있다.
- PRIMARY KEY 제약 조건
각 테이블에 대해 하나의 기본 키만 만들 수 있다.
UNIQUE와 NOT NULL 속성을 소유
- CHECK 제약 조건
각 행이 충족해야 하는 조건 정의
- FOREIGN KEY 제약 조건
열 또는 열 조합을 Foreign key로 지정하고 동일한 테이블 또는 다른 테이블의 primary key 또는 unique key와의 관계를 설정한다.
FOREIGN KEY: 하위 테이블의 열을 정의하는데 사용
REFERENCES: 테이블 및 상위 테이블의 열을 식별
ON DELETE CASCADE: 상위 테이블의 행이 삭제될 때 하위 테이블의 종속 행도 삭제
ON DELETE SET NULL: 상위 테이블의 행이 삭제될 때 foreign key 값이 null로 설정
- Subquery를 사용하여 테이블 생성
기본 형태)
CREATE TABLE table_name
[(column, column…)]
AS subquery;
- ALTER TABLE 문
새 열 추가, 기존 열 정의 수정, 새 열에 대한 기본 값 정의, 열 삭제, 열 이름 바꾸기, 읽기 전용 상태로 테이블 변경 가능
ex)
ALTER TABLE table
ADD (column VARCHAR2(9));
ALTER TABLE table
MODIFY (column VARCHAR2(30));
ALTER TABLE table
ADD CONSTRAINT column
FOREIGN KEY(column1)
REFERENCES table(column2);
- 읽기 전용 테이블
테이블을 읽기 전용 모드로 설정하여 DDL문 또는 DML문에 의한 변경 방지
기본 형태)
ALTER TABLE table READ ONLY;
ALTER TABLE table READ WRITE;
- 테이블 삭제
테이블을 Recycle bin으로 이동
보류 중인 모든 트랜잭션이 커밋 된다.
PURGE 절이 지정되면 테이블 및 해당 데이터를 완전히 제거
기본 형태)
DROP TABLE table [PURGE];
기타 스키마 객체 생성
- 뷰(View)
뷰는 자체적으로 데이터를 갖고 있지 않지만 테이블의 데이터를 보거나 변경할 수 있는 윈도우와 같다.
기본 형태)
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
ex)
CREATE VIEW view_name
AS SELECT column1, column2, column3
FROM table_name
WHERE column4 = 80;
뷰 수정:
OR REPLACE 옵션 사용시 이미 동일한 이름의 뷰가 있는 경우에도 뷰 생성
ex)
CREATE OR REPLACE VIEW view_name
(column1, column2, column3, column4)
AS SELECT …
FROM table_name
WHERE column4 = 80;
뷰 제거:
뷰를 제거해도 데이터는 손실되지 않는다.
기본 형태)
DROP VIEW view_name;
- 시퀀스
정수의 고유 번호를 자동으로 생성할 수 있다.
Primary key 값을 생성하는 데 사용할 수 있다.
기본 형태)
CREATE SEQUENCE sequence
[INCREMENT BY n] => 시퀀스 번호 사이의 간격 지정
[START WITH n] => 생성할 첫 번째 시퀀스 번호 지정
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}] => 최대값이나 최소값에 도달한 후에 시퀀스를 계속 생성할지 여부 결정
[{CACHE n | NOCACHE}]; => 서버가 메모리에 미리 할당하고 저장하는 값의 개수 지정
NEXTVAL 및 CURRVAL Pseudocolumn:
NEXTVAL은 사용 가능한 다음 시퀀스 값을 반환
CURRVAL은 현재 시퀀스 값을 구한다. CURRVAL이 값을 포함하기 전에 해당 시퀀스에 대해 NEXTVAL이 실행되어야 한다.
ex)
INSERT INTO table(department_id, department_name, location_id)
VALUES (dept_deptid_seq.NEXTVAL, ‘Support’, 2500);
SELECT dept_deptid_seq.CURRVAL
FROM dual;
- 인덱스
포인터를 사용하여 행 검색 속도를 높일 수 있는 스키마 객체
인덱스를 생성하면 일부 쿼리 성능 향상
기본 형태)
CREATE [UNIQUE] [BITMAP] INDEX index
ON table (column[, column]…);
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 8일차 / 자바 기초(조건문, 반복문, 클래스) (0) | 2023.07.27 |
---|---|
SeSAC 7일차 / 자바 기초(변수, 연산) (0) | 2023.07.26 |
SeSAC 5일차 / SQL 기본(SQL 문-4) (0) | 2023.07.22 |
SeSAC 4일차 / SQL 기본(SQL 문-3) (0) | 2023.07.21 |
SeSAC 3일차 / SQL 기본(SQL 문-2) (0) | 2023.07.20 |