CREATE TABLE 문법에서 사용되는 용어 정리
CREATE TABLE: 새로운 테이블을 생성하는 명령어
IF NOT EXISTS: 이미 해당 이름의 테이블이 존재하는 경우에는 새로운 테이블을 생성하지 않고 기존 테이블을 사용하도록 하는 옵션
column_name data_type: 테이블의 열(column)을 정의하는 부분. column_name은 열의 이름을 나타내며, data_type은 해당 열에 저장될 데이터 타입을 지정합니다.
PRIMARY KEY (column_name): 해당 열(column)을 주요 키(primary key)로 설정합니다. PRIMARY KEY 구문 다음에 괄호로 열의 이름을 지정하여 주요 키를 설정할 수 있습니다.
NOT NULL: 해당 열(column)에 NULL 값을 허용하지 않도록 설정합니다.
UNIQUE: 해당 열(column)의 값이 고유(unique)하도록 설정합니다.
REFERENCES table_name (column_name): 해당 열(column)이 참조하는 다른 테이블(table)의 열(column)을 지정합니다.
FOREIGN KEY (column_name): 해당 열(column)을 외래 키(foreign key)로 설정합니다. FOREIGN KEY 구문 다음에 괄호로 열의 이름을 지정하여 외래 키를 설정할 수 있습니다.
ON DELETE CASCADE: 해당 열(column)이 참조하는 행(row)이 삭제될 경우, 해당 열을 참조하는 모든 행(row)도 함께 삭제하도록 설정합니다.
CREATE TABLE IF NOT EXISTS STUDENT
(
student_code varchar(100) primary key comment '수강생코드',
name varchar(100) not null comment '이름',
birth varchar(8) null comment '생년월일',
gender varchar(1) not null comment '성별',
phone varchar(11) null comment '전화번호',
major_code varchar(100) not null comment '주특기코드',
foreign key(major_code) references major(major_code)
)
COMMENT '수강생정보' charset=utf8;
위 SQL 문장은 STUDENT 테이블을 생성하는 문장으로 각 열의 의미는 다음과 같다.
1.student_code: 수강생의 고유한 코드를 나타내는 열(column). varchar(100) 데이터 타입으로 설정되어 있으며, primary key로 설정되어 해당 열의 값이 고유하게 유지된다.
2.name: 수강생의 이름을 나타내는 열(column). varchar(100) 데이터 타입으로 설정되어 있으며, not null 제약 조건이 설정되어 있어 해당 열의 값이 NULL 일 수 없다.
3.birth: 수강생의 생년월일을 나타내는 열(column). varchar(8) 데이터 타입으로 설정되어 있으며, null 제약 조건이 설정되어 있어 해당 열의 값이 NULL 일 수 있다.
4.gender: 수강생의 성별을 나타내는 열(column). varchar(1) 데이터 타입으로 설정되어 있으며, not null 제약 조건이 설정되어 있어 해당 열의 값이 NULL 일 수 없다.
5.phone: 수강생의 전화번호를 나타내는 열(column). varchar(11) 데이터 타입으로 설정되어 있으며, null 제약 조건이 설정되어 있어 해당 열의 값이 NULL 일 수 있다.
6.major_code: 수강생의 주특기코드를 나타내는 열(column). varchar(100) 데이터 타입으로 설정되어 있으며, not null 제약 조건이 설정되어 있어 해당 열의 값이 NULL 일 수 없습니다. 이 열은 MAJOR 테이블의 major_code 열을 참조하는 foreign key로 설정되어 있다.
7.COMMENT 구문: 해당 테이블의 주석(comment)을 설정하는 부분이며, charset=utf8은 해당 테이블이 utf8 문자 집합을 사용하도록 설정하는 부분
여기서 의문이 들었다 IF NOT EXIST말고 그냥 EXIST는 어떤걸까..?
EXISTS와 IF NOT EXISTS는 SQL 문법에서 전혀 다른 용어라고 한다.
EXISTS는 SQL의 조건절(clause) 중 하나로, 하위 쿼리(subquery)의 결과가 존재하는지 여부를 확인하는 데 사용된다.
예를 들어, SELECT 문에서 WHERE EXISTS 구문을 사용하여 하위 쿼리의 결과가 존재하는 경우에만 해당 행(row)을 반환하도록 필터링할 수 있다.
반면 IF NOT EXISTS는 CREATE TABLE 문법에서 사용되는 용어로
새로운 테이블을 생성할 때 이미 해당 이름의 테이블이 존재하는 경우에는 새로운 테이블을 생성하지 않고,
기존 테이블을 사용하도록 한다.
Create Table에 관해서 오늘 정리를 해보며, 의문증과 동시에 조건절에 대해서도 간략하게 살펴보게 되었다.
추후에 조건절에대한 정리를 해야겠다고 생각이 든다..