들어가기에 앞서
본 게시물은 'MySQL 8.0' 버전을 이용한 '명령 프롬프트(cmd)' 환경에서 작성한 코드를 토대로 만들어졌습니다.
테이블은 데이터베이스(스키마), 뷰, 인덱스와 달리 테이블의 정의가 변경이 가능하므로 변경이 가능한 내용들을 자세히 알아놓도록 합니다.
CREATE TABLE - 테이블 생성 및 정의
mysql> CREATE TABLE student(
stdnum varchar(3), stdname varchar(20) [NOT NULL], # stdname 속성은 NULL 값을 가질 수 없음
major varchar(20), sex char(1) [DEFAULT 'M'], # sex 속성은 값을 지정해주지 않으면 'M'을 기본값으로 설정
birthdate date, PRIMARY KEY(stdnum), # 기본키를 stdnum 속성으로 설정
FOREIGN KEY(major) REFERENCES dept(deptname) # major 속성은 dept 테이블의 deptname 속성을 참조하는 외래키로 사용
[ON DELETE SET NULL] # dept 테이블에서 삭제가 일어나면 관련 튜플들의 major 속성을 NULL로 변경
[ON UPDATE CASCADE] # dept 테이블에서 deptname 속성의 내용이 변경되면 major 속성도 같은 내용으로 변경
);
Query OK, 0 rows affected (0.07 sec)
mysql> DESC student;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| stdnum | char(3) | NO | PRI | NULL | |
| stdname | varchar(20) | NO | | NULL | |
| major | varchar(20) | YES | MUL | NULL | |
| sex | char(1) | YES | | M | |
| birthdate | date | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
'DESC'는 데이터베이스의 전체적인 구조(스키마)를 출력해주는 역할을 합니다.
대괄호([ ])로 묶여있는 내용들은 써주지 않아도 문제없는 옵션 요소입니다.
SHOW TABLES - 데이터베이스 내 전체 테이블 조회
mysql> SHOW TABLES;
+----------------+
| Tables_in_univ |
+----------------+
| dept |
| student |
+----------------+
2 rows in set (0.00 sec)
데이터베이스 univ 내에 존재하는 전체 테이블을 조회한 결과(dept, student)를 보여줍니다.
ALTER TABLE - 테이블 정의 변경
ALTER TABLE 테이블명 RENAME 테이블명 - 테이블의 이름을 변경
# student 테이블의 이름을 student2로 변경
mysql> ALTER TABLE student RENAME student2;
Query OK, 0 rows affected (0.04 sec)
ALTER TABLE 테이블명 RENAME COLUMN 기존 속성명 TO 변경할 속성명 - 속성명 변경
# student 테이블의 phonenum 속성명을 phonenumber 속성명으로 변경
mysql> ALTER TABLE student RENAME COLUMN phonenum TO phonenumber;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE 테이블명 ADD 속성명 데이터 타입 - 테이블에 속성을 추가
# student 테이블에 데이터 타입이 varchar(15)인 phonenum 속성 추가
mysql> ALTER TABLE student ADD phonenum varchar(15);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE 테이블명 ALTER 속성명 SET DEFAULT 기본값 - 속성의 기본값 변경
# student 테이블의 sex 속성의 기본값을 'F'로 변경
mysql> ALTER TABLE student ALTER sex SET DEFAULT 'F';
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE 테이블명 MODIFY 속성명 데이터 타입 DEFAULT 기본값 - 속성의 기본값 변경
# student 테이블의 sex 속성의 기본값을 'M'로 변경
mysql> ALTER TABLE student MODIFY sex char(1) DEFAULT 'M';
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE 테이블명 MODIFY 속성명 데이터 타입 [AUTO_INCREMENT][NOT NULL] - 속성의 데이터 타입 변경
# student 테이블에서 stdname 속성의 데이터 타입을 char(3)로 변경 + AUTO_INCREMENT/NOT NULL 설정
mysql> ALTER TABLE student MODIFY stdname char(3) [AUTO_INCREMENT][NOT NULL];
Query OK, 4 rows affected (0.16 sec)
Records: 4 Duplicates: 0 Warnings: 0
ALTER TABLE 테이블명 CHANGE 기존 속성명 변경할 속성명 데이터 타입 [NOT NULL] - 속성명 및 데이터 타입 변경
# student 테이블의 phonenumber 속성명을 phonenum로 변경 및 데이터 타입을 char(15) 변경 + NOT NULL 설정
mysql> ALTER TABLE student CHANGE phonenum phonenumber char(15) [NOT NULL];
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE 테이블명 DROP [COLUMN] 속성명 - 속성 삭제
# student 테이블의 phonenum 속성을 삭제
mysql> ALTER TABLE student DROP [COLUMN] phonenum;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE - 테이블 삭제
mysql> DROP TABLE student;
Query OK, 0 rows affected (0.02 sec)
테이블을 삭제하는 코드입니다.
댓글