테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말
객체는 데이터베이스 내에 실체를 가지는 어떤 것을 말하는데, 객체의 종류에 따라 데이터베이스에 저장된는 내용도 달라진다.
테이블은 데이터베이스의 객체로 행과 열이 저장된다.
SQL 명령은 SELECT나 INSERT 등을 통해 객체를 조작한다.
객체는 이름을 가지는데, 데이터베이스 내에서 객체를 작성할 때는 이름이 겹치지 않도록 해야 한다.
데이터베이스 객체는 스키마라는 그릇 안에 만들어지는데,
객체의 이름이 같아도 스키마가 서로 다르다면 상관없다.
보통 MySQL에서는 데이터베이스가 스키마가 된다.
테이블 안에는 열을 정의할 수 있고 스키마 안에는 테이블을 정ㅇ의할 수 있다.
각각의 그릇 안에서는 중복하지 않도록 이름을 지정해야 하고 이름이 충돌하지 않도록 기능하는 그릇을 네임스페이스(namespace)라고 부르기도 한다..!
DDL은 모두 같은 문법을 사용한다.
CREATE - 작성
DROP - 삭제
ALTER - 변경
뒤이어 어떤 종류의 객체를 작성, 삭제, 변경할 지를 지정한다.
create table 테이블명 (
열 정의1,
열 정의2
)
위와 같이 하고 자료형을 적을 때 유의할 점이 문자열형의 경우 (char나 varchar) 최대 길이를 괄호로 묶어줘야 한다.
컬럼명 자료형 [Default 기본값] [NULL | NOT NULL]
DROP TABLE 테이블명
# DML
DELETE FROM 테이블명
where 조건을 붙이지 않으면 테이블에 있는 모든 행을 삭제한다.
# DDL
TRUNCATE TABLE 테이블명
DELETE 명령은 행 단위로 여러가지 내부처리가 일어나므로 삭제할 행이 많으면 처리속도가 상당히 늦어진다.
이런 경우에는 DDL로 분류되는 TRUNCATE TABLE 명령을 사용하는데, WHERE로 조건을 걸 수는 없지만 모든 행을 삭제해야 할 때 빠른 속도로 삭제할 수 있다.
ALTLER TABLE 테이블명 변경명령
변경명령
- column 추가, 삭제, 변경
- constraint 추가, 삭제
테이블 작성 후 column을 추가하거나 데이터 최대길이 변경 등 구성을 변경할 때 사용한다.
빈 테이블의 경우 DROP 후 CREATE TABLE을 해도 되지만 이미 데이터가 존재하는 테이블의 경우에는 ALTER를 쓰자.
# 열 추가
ALTER TABLE sample62 ADD newcol varchar(30);
# 열 속성 변경
ALTER TABLE sample62 MODIFY newcol varchar(20);
# 열 이름 변경
'ALTER TABLE 테이블명 CHANGE [기존 열 이름] [신규 열 정의] [열 속성도 변경 가능]
ALTER TABLE sample62 CHANGE newcol new_newcol varchar(40);
# 열 삭제
ALTER TABLE 테이블명 DROP new_newcol
열에 대해 정의하는 제약
UNIQUE 제약, NOT NULL 제약 등
한 개의 제약으로 복수의 열에 제약을 설명하는 경우
기본키 제약
제약에는 이름을 붙일 수 있다.
인덱스는 데이터베이스 객체 중 하나로 create(DDL)로 생성이 가능하다.