6. DDL
DDL은 같은 명령을 사용. CREATE / DROP / ALTER
CREATE : 데이터베이스 객체 생성
- (대표적으로) 테이블을 생성한다. 스키마 내부에서 생성한다.
- 스키마내에서 이름이 중복된 객체가 존재하면 안 된다.
CREATE TABLE 테이블명 ( 열이름 자료형 [DEFAULT 값 | NOT NULLL | UNIQUE | CHECK 체크조건], 열 정의2, 열 정의3, ..., [PRIMARY KEY (열1, ...)] [FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)] [ON DELETE reference_option] [ON UPDATE reference_option] );
DROP : 데이터베이스 객체 삭제
- 데이터베이스 객체를 삭제한다. 객체의 스키마와 내용을 같이 삭제한다.
- 내용만 삭제하고 싶을 경우, DELETE문이나, TRUNCATE TABLE을 사용한다.
- TRUNCATER TABLE은 테이블의 행을 전부 삭제한다. (해당 목적으로 이용 시, DELETE에 비해 빠르다.)
DROP TABLE sample_table;
- TRUNCATER TABLE은 테이블의 행을 전부 삭제한다. (해당 목적으로 이용 시, DELETE에 비해 빠르다.)
ALTER : 데이터베이스 객체 수정
- ALTER를 이용하면, 테이블에 열을 추가하거나 속성을 바꾸고 삭제할 수 있다.
- 또한, 기본키 속성을 포함한 각종 제약조건을 설정/해제 할 수 있다.
ALTER TABLE (ADD | MODIFY | DROP) sample_table [열정의] or [제약조건]
데이터 타입의 종류
- INT, INTEGER : 정수형
- NUMERIC, DECIMAL : 실수형
- CHAR : CHAR (최대길이) : 문자열형, 남은 공간을 공백문자로 채운다.
- VARCHAR : VARCHAR (최대길이) : 문자열형, 입력된 문자열만큼만 공간을 차지한다.
- 주의 : 공백문자로 인해 VARCHAR와 CHAR의 동등 비교 시 값이 같아 보이더라도 실패할 수 있다.
- DATE : 날짜형, 연-월-일 형식으로 표기
- TIME : 시간형, 시:분:초 형식으로 표기
PRIMARY KEY : 해당하는 열을 기본키로 지정. 복수의 열을 하나의 기본키로 지정 가능.
UNIQUE : 해당하는 열을 대체키로 지정. 대체키는 유일성을 가지지만, NULL값을 허용한다.
CREATE TABLE sample_table ( id INTERGER UNIQUE, name VARCHAR(20), address VARCHAR(30), PRIMARY KEY (id) )
DEFAULT : 속성의 기본값을 지정.
NOT NULL/NULL : NOT NULL을 설정하면, 속성이 NULL값을 허용하지 않음. 기본값은 NULL
CHECK : 값에 대한 조건을 부여. ex) 해당 속성이 항상 0이상 1만이하 => CHECK (속성명>=0 and 속성명<=10000)
FOREIGN KEY(외래키) : 다른(+같은) 테이블의 (대부분 기본키) 속성을 참조하는 속성
외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 뒤에 명시
이는 참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 투플 삭제 시, 처리 방법을 지정하는 옵션이다.
DELETE 관련 옵션
- ON DELETE RESTRICT : 부모 테이블의 투플을 삭제하지 못하게 한다. (원래 MySQL 문법)
- ON DELETE NO ACTION : 부모 테이블의 투플을 삭제하지 못하게 한다. (ASNI 표준)
- ON DELETE CASCADE : 부모 테이블에서 투플 삭제 시, 연관된 자식 테이블의 투플도 삭제.
- ON DELETE SET NULL : 부모 테이블에서 투플 삭제 시, 관련된 투플의 외래키 값을 NULL로 변경
- ON DELETE SET DEFAULT : 부모 테이블에서 투플 삭제 시, 관련된 투플의 외래키 값을 DEFAULT 값으로 변경
UPDATE 관련 옵션
- ON UPDATE RESTRICT : 부모 테이블의 투플의 업데이트를 못하게 한다.
- ON UPDATE NO ACTION : 부모 테이블의 투플의 업데이트를 못하게 한다.
- ON UPDATE CASCADE : 관련 투플의 외래키 값도 함께 변경
- ON UPDATE SET NULL : 관련된 투플의 외래키 값을 NULL로 변경
- ON UPDATE SET DEFAULT : 관련된 투플의 외래키 값을 미리 지정한 DEFAULT 값으로 변경
CREATE TABLE sample ( bookid INTEGER, sample_table_id INTEGER, FOREIGN KEY (sample_table_id) REFERENCE sample_table (id) ON DELETE CASCADE );
DML
INSERT
- 테이블의 행을 추가한다.
- 'INTO' 이후 소괄호에, 입력할 속성을 선택하고, 실제 값을 'VALUES' 절에 작성한다.
- 입력할 속성을 명시하지 않을 시에는, 테이블 스키마에 속성순대로 입력된다.
- 선택하지 않은 속성은 DEFAULT 값으로 입력된다.
INSERT INTO (열1, 열2, ...) sample_table VALUES (값1, 값2, ...)
DELETE
- 테이블의 행을 삭제한다.
- 조건식에 해당하는 레코드를 삭제한다.
- WHERE로 범위를 지정하지 않으면, 테이블의 전체 레코드를 삭제한다.
DELETE FROM sample_table WHERE 조건식
UPDATE
- 레코드의 내용을 수정한다.
- 레코드 셀의 내용을 수정할 수 있다. WHERE로 범위를 지정하지 않으면, 테이블 내 모든 레코드에 대해 적용된다.
UPDATE sample_table SET 열1=값1, 열2=값2, ... WHERE 조건식
'강의요약 > 데이터베이스' 카테고리의 다른 글
[DB] 5. JOIN (0) | 2023.04.11 |
---|---|
[DB] 4. SQL (0) | 2023.04.04 |
[DB] 3. 관계대수 (0) | 2023.03.20 |
[DB] 2.2 키(key) (0) | 2023.03.20 |
댓글