본문 바로가기
Database/MySQL

[MySQL] 테이블을 생성, 조회, 변경, 삭제하는 명령어 및 예제 정리 - CREATE TABLE, SHOW TABLE, ALTER TABLE, DROP TABLE

by Blue Developer 2021. 9. 26.

들어가기에 앞서

본 게시물은 '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)

테이블을 삭제하는 코드입니다.

댓글