-
11일차 - 데이터베이스 언어 SQLCS지식/데이터베이스 2021. 5. 9. 23:17
오늘은 데이터베이스를 조작할 수 있는 언어인 SQL에 대해 배웠다.
데이터베이스를 만들고 관리하기 위해서는 SQL를 사용해야하기 때문에 필수로 알아야한다.
1. SQL(Structured Query Language)
SQL은 관계 데이터베이스를 위한 표준 질의어로 데이터정의어, 데이터조작어, 데이터 제어어가 있다.
-데이터 정의어(DDL) : 테이블을 생성하고 변경, 제거하는 기능을 제공한다.
- 데어터 조작어(DML) : 테이블에 새 데이터를 삽입하거나 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공한다.
- 데이터 제어어(DCL) : 보안을 위해 데이터에 대한 접근 및 사용권한을 사용자별로 부여하거나 취소하는 기능을 제공한다.
지금부터 데이터 정의어에 대해 자세히 알아보자.
2. 데이터 정의어(DDL)
데이터 정의어에는 CREATE, ALTER, DROP 3가지가 있다.
3가지에 대해 각각 알아보자.
1) CREATE
create는 테이블을 생성할 때 사용하는 것으로 SQL로 보면 다음과 같다.
CREATE TABLE 테이블_이름 ( #1 속성_이름 데이터타입 [NOT NULL] [DEFAULT 기본값] #2 [PRIMARY KEY(속성리스트)] #3 [UNIQUE (속성리스트)] #4 [FOREIGN KEY(속성리스트) REFERENCE 테이블_이름(속성리스트)] #5 [CONSTRAINT 이름] [CHECK(조건)] );
여기서 [ ] 안에 있는 것은 반드시 선언해야하는 것이 아닌 선택사항이다.
SQL 질의문은 세미콜론(;)으로 문장의 끝을 표시하고 대소문자를 구분하지 않는다.
SQL문을 하나씩 쪼개어 설명해보면
#1은 테이블을 구성하는 각 속성의 이름, 데이터 타입, 기본제약사항을 정의하는 것이다.
여기서 NOT NULL은 해당 속성이 null 값을 허용하지 않는다는 옵션이고
DEFAULT 기본값은 해당 속성에 데이터를 주지 않으면 설정한 기본값으로 자동으로 채워진다.
#2는 기본키를 정의하는 구문으로 사용하는 것이다. (기본키로 정의된 속성은 null값을 허용하면 안된다.)
#3은 대체키를 정의하는 구문으로 사용하는 것으로 대체키로 지정되는 값은 유일성을 가지며 기본키와 달리 null값이 허용된다.
#4는 외래키를 정의하는 구문으로 사용하는 것으로 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES키워드 다음에 제시해주어야한다.
#5는 데이터 무결성을 위한 제약조건을 정의하기 위해 사용한다.
CHECK키워드를 통해 테이블에 정확하고 유효한 데이터를 유지하기 위해 특정 속성에 대한 제약조건을 지정한다.
CONSTRAINT키워드와 함께 제약조건에 대한 고유의 이름을 부여할 수도 있다.
2) ALTER
alter는 테이블에 새로운 속성을 추가하거나 기본 속성을 삭제할 때 사용한다.
새로운 속성을 추가하기 위해서 다음과 같은 SQL문을 선언한다.
ALTER TBALE 테이블_이름 ADD 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본값];
[ ]안에 있는 것을 필요할 때만 쓰면 된다.
기본 속성을 삭제하기 위해서는 다음과 같은 SQL문을 선언한다.
ALTER 테이블_이름 DROP 속성_이름 CASCADE | RESTRICT;
기본속성을 삭제할 때에는 cascade와 restrict옵션이 존재한다.
cascade를 사용하면 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성을 함께 삭제한다.
restrict는 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성이 존재하면 삭제를 거부한다.
3) DROP
drop은 테이블을 삭제하려고 할 때 사용는 것으로 SQL문은 다음과 같다.
DROP TABLE 테이블_이름 CASCADE | RESTRICT;
ALTER문에서 속성을 삭제 할 때와 마찬가지로 cascade와 restrict 옵션이 존재한다.
cascade를 사용하면 제거할 테이블을 참좌는 다른 테이블도 함께 제거된다.
restrict는 제거하 테이블을 참조하는 다른 테이블이 존재하면 테이블 제거가 거부된다.
'CS지식 > 데이터베이스' 카테고리의 다른 글
13일차 - SQL (데이터 조작, DML) (2) (0) 2021.05.15 12일차 - SQL (데이터 조작, DML) (1) (0) 2021.05.12 10일차 - 관계 데이터 연산 (0) 2021.05.06 9일차 - 정규형과 정규화 예제 (0) 2021.05.03 8일차 - 정규화 (0) 2021.04.30