데이터베이스 객체
데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의되어 실체를 가지는 어떤 것을 의미한다. SELECT
나 INSERT
등의 명령에는 실체가 없으므로 객체라 부를 수 없다.
스키마
데이터베이스는 스키마라는 그릇 안에 만들어진다. 따라서 데이터베이스 객체를 스키마 객체라고도 한다.
MySQL 로 따지자면, CREATE DATABASE 명령으로 작성한 데이터베이스가 스키마이다.
테이블의 생성 / 삭제 / 변경
DDL 명령을 사용하여 스키마를 정의해보자.
생성 CREATE
테이블을 작성할때에는 CREATE TABLE 명령
을 사용한다.
CREATE TABLE 테이블명 (
열 정의1, // 열의 정의 = 열명 자료형 NULL/NOT NULL,
열 정의2
...);
삭제 DROP
DROP TABLE 테이블명
테이블의 정의는 그대로 둔 채 데이터만 삭제할 때에는 WHERE
조건 없이 DELETE
명령을 사용해야 하지만, DELETE
명령은 행 단위로 처리가 일어나므로 삭제할 행이 많으면 처리 속도가 늦어질 수 있다. 이때, TRUNCATE
명령을 사용하면 모든 행을 빠르게 삭제할 수 있다.
변경 ALTER
테이블을 작성해버린 뒤에도 테이블 명, 열의 구성 등을 얼마든지 변경할 수 있다.
ALTER TABLE 테이블명 변경명령
열 추가 ADD
ALTER TABLE 테이블명 ADD 열 정의
위의 geng 테이블에 test 라는 이름의 열을 추가해보자.
test 열은 DATE 속성을 가지고 있다.
열 속성 변경 MODIFY
test 열의 속성을 INTEGER 로 변경해보자.
열 이름 변경 CHANGE
ALTER TABLE 테이블명 CHANGE 기존열이름 신규열이름 열정의
열 삭제 DROP
ALTER TABLE 테이블명 DROP 열이름
제약
테이블을 생성할 때, NOT NULL
등과 같은 제약을 설정함으로써 테이블에 저장될 데이터를 제한할 수 있다.
제약 정의
복수의 열에 제약을 설명하는 경우를 테이블 제약, NOT NULL
등을 통해 한 개의 열에 제약을 정의하는 경우는 열 제약이라고 부른다.
no 라는 열을 PK 값으로 정의하되, 제약의 이름을 pkey_test 라고 붙여보자.
제약에 이름을 붙일때에는 CONSTRAINT
라는 명령어를 사용한다.
제약 추가
열 제약 추가
ALTER TABLE 테이블명 MODIFY 열이름 열정의
테이블 제약 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약이름 제약
제약 삭제
열 제약의 경우 추가와 마찬가지로 MODIFY
를 사용하여 열의 정의를 변경하지만 테이블의 경우 DROP CONSTRAINT 제약이름 제약
의 명령어를 통해 제약을 삭제하여야 한다. 단, PK 정의의 경우에는 제약명을 지정하지 않고도 삭제할 수 있다. PK 의 경우는 테이블 당 하나만 정의할 수 있기 때문이다.
'SQL' 카테고리의 다른 글
집합과 결합 (0) | 2021.04.27 |
---|---|
db index & view (0) | 2021.04.27 |
집계와 서브쿼리 (0) | 2021.04.27 |
데이터 추가 / 삭제 / 갱신 (0) | 2021.04.27 |
데이터 검색 / 정렬 / 연산 (0) | 2021.04.27 |