데이터 정의어
스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 삭제할 때 사용하는 언어.
데이터베이스 관리자나 데이터베이스 설계자가 사용.
CREATE
정의ALTER
변경DROP
삭제 : 디스크에서 테이블을 완전히 제거CREATE TABLE 학생 (
이름 VARCHAR(15) NOT NULL,
학번 CHAR(8),
전공 CHAR(5),
성별 SEX,
생년월일 DATE,
PRIMARY KEY(학번),
FOREIGN KEY(전공) REFERENCES 학과(학과코드)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT 생년월일제약 CHECK(생년월일) >= '1990-01-01')
);
NOT NULL
: 값이 비어있으면 안된다.PRIMARY KEY
: 기본키로 사용FOREIGN KEY ~ REFERENCES ~
: 참조할 테이블과 그 테이블을 참조할 때 사용할 외래키 속성ON DELETE
: 참조 테이블의 튜플 삭제되었을 때 기본 테이블에 취해야할 사항 지정 -- NO ACTION, CASCADE, SET NULL, SET DEFAULTON UPDATE
: 참조 테이블의 속성 값 변경되었을 때 기본 테이블에 취해야할 사항 지정 -- NO ACTION, CASCADE, SET NULL, SET DEFAULTCONSTRAINT
: 제약 조건의 이름 지정CHECK
: 속성 값에 대한 제약 조건 정의CHAR
: 항상 지정된 크기만큼 기억 장소가 확보
VARCHAR
: 기억 장소의 크기가 지정되어도 필드에 저장된 데이터만큼 기억 장소가 확보됨.
ex) 이름 속성의 자료형을 CHAR(15)로 지정하면 이름에 한글자가 저장되도 항상 15바이트가 확보되지만, VARCHAR(15)로 지정하면 저장된 한글자 크기만큼만 확보된다.
CREATE TABLE 테이블명 AS SELECT 속성명 FROM 기존테이블명;
데이터 조작어
데이터베이스 사용자가 데이터를 실질적으로 처리하는 데 사용.
SELECT
검색. SELECT FROM WHEREINSERT
삽입. INSERT INTO VALUESUPDATE
변경. UPDATE SET WHEREDELETE
삭제 : 모든 레코드를 삭제하더라도 테이블 구조는 남아있다. DELETE FROM WHEREGROUP BY
: 특정 속성을 기준으로 그룹화하여 검색할 때 사용. HAVING
: GROUP BY와 함께 사용되며 그룹에 대한 조건 지정-> GROUP BY 절에 함께 쓴다.
ROLLUP
: 중간 집계 값 산출CUBE
: 결합 가능한 모든 값에 대해 다차원 집계 생성GROUPING SETS
: 집계 대상 컬럼들에 대한 개별 집계. 컬럼 간 순서와 무관한 결과 얻을 수 있다.GROUP BY 절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계.
함수의 인수로 지정한 속성이 대상 레코드의 범위가 되는데 이를 윈도우라고 한다.
SELECT 절에 쓴다.
ROW_NUMBER()
: 순위 계산. 동일 순위 값이 존재해도 연속 번호 부여RANK()
: 순위 계산. 동일 순위 존재 시 후순위는 넘어감DENSE_RANK()
: 순위 계산. 동일 순위 존재해도 무관하게 연속 번호 부여FIRST_VALUE
: 파티션별 윈도에서 가장 먼저 나오는 값 찾는다. (MIN과 동일)LAST_VALUE
: 파티션별 윈도에서 가장 늦게 나오는 값 찾는다.(MAX와 동일)LAG
: 파티션별 윈도에서 이전 로우의 값 반환LEAD
: 파티션별 윈도에서 이후 로우의 값 반환RATIO_TO_REPORT
: 합을 기준으로 각 로우의 상대적 비율 반환PERCENT_RANK
: 제일 먼저 나오는 것을 0, 제일 늦게 나오는 것을 1로 하여 값이 아닌 행의 순서별 백분율 구함두 개의 SELECT문에 기술한 속성들은 개수와 데이터 유형이 서로 동일해야함.
UNION
: 합집합. 두 SELECT문의 조회 결과를 통합하여 모두 출력.UNION ALL
: 합집합. 두 SELECT문의 조회 결과를 통합하여 모두 출력.INTERSECT
: 교집합. 두 SELECT문의 조회 결과 중 공통된 행만 출력.EXCEPT
: 차집합. 첫번째 SELECT문의 조회 결과에서 두번째 SEELCT문의 조회 결과를 제외한 행을 출력.INNER JOIN
: 공통 속성을 기준으로 '=' 비교해서 같은 값을 가지는 행 연결하여 결과 생성OUTER JOIN
: JOIN 조건에 만족하지 않는 튜플도 결과로 출력.LEFT OUTER JOIN
: 좌측 테이블에 맞춰서 우측 테이블에 없는 값도 NULL붙여서 결과에 추가RIGHT OUTER JOIN
: 우측 테이블에 맞춰서 좌측 테이블에 없는 값도 NULL붙여서 결과에 추가FULL OUTER JOIN
: 위 둘을 합쳐 놓은 것.데이터 제어어
데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용
데이터베이스 관리자가 데이터 관리를 목적으로 사용
COMMIT
명령에 의해 수행된 결과를 실제 물리적 디스크에 저장. 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려준다.ROLLBACK
데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구GRANT
데이터베이스 사용자에게 사용 권한 부여WITH GRANT OPTION
: 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한 부여GRANT OPTION FOR
: 다른 사용자에게 권한을 부여할 수 있는 권한을 취소CASCADE
: 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소REVOKE
데이터베이스 사용자의 사용 권한을 취소SAVEPOINT
: 트랜잭션 내에 롤백할 위치인 저장점을 지정하는 방법.