2019. 3. 5. 15:16ㆍDataBase
DDL(Data Definition Language)
이전에는 DML 이라는 데이터 조작어를 사용했었는데 조작하려면 뭔가 데이터의 골격이 있어야합니다.
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어로 데이터 구조(table/이나 DB)를 생성/변경/삭제/변경과 관련된 일을 하는 게 바로 데이터 정의어인 DDL입니다.
MySQL 데이터 타입
CREATE(테이블 생성)
CREATE TABLE 테이블이름 (필드이름1 타입 [ null | not null ] [ default ] [ auto_increment ],필드이름2 타입 [ null | not null ] [ default ] [ auto_increment ],필드이름3 타입 [ null | not null ] [ default ] [ auto_increment ],.......PRIMARY KEY(필드명))
mysql> create table employee( -> empno integer not null primary key, -> name varchar(10), -> job varchar(9), -> boss integer, -> hiredate varchar(12), -> salary decimal(7,2), -> comm decimal(7,2), -> deptno integer ); Query OK, 0 rows affected (0.64 sec)
// desc 는 describe로 테이블을 설명하줍니다.
mysql> desc employee; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | empno | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | | job | varchar(9) | YES | | NULL | | | boss | int(11) | YES | | NULL | | | hiredate | varchar(12) | YES | | NULL | | | salary | decimal(7,2) | YES | | NULL | | | comm | decimal(7,2) | YES | | NULL | | | deptno | int(11) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 8 rows in set (0.36 sec)
ALERT(테이블 수정)
컬럼추가alter table 테이블명add 필드명 타입 [ null | not null ] [ default ] [ auto_increment ];컬럼삭제alter table 테이블명drop 필드명;컬럼이름변경alter table 테이블명change 현재필드명 바꿀필드명;테이블명 변경alter table 현재테이블rename 바꿀테이블명;
mysql> ALTER TABLE employee ADD birthday varchar(12); Query OK, 0 rows affected (0.54 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql> desc employee; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | empno | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | | job | varchar(9) | YES | | NULL | | | boss | int(11) | YES | | NULL | | | hiredate | varchar(12) | YES | | NULL | | | salary | decimal(7,2) | YES | | NULL | | | comm | decimal(7,2) | YES | | NULL | | | deptno | int(11) | YES | | NULL | | | birthday | varchar(12) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 9 rows in set (0.00 sec)
mysql> ALTER TABLE employee DROP birthday; Query OK, 0 rows affected (0.10 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql> desc employee; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | empno | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | | job | varchar(9) | YES | | NULL | | | boss | int(11) | YES | | NULL | | | hiredate | varchar(12) | YES | | NULL | | | salary | decimal(7,2) | YES | | NULL | | | comm | decimal(7,2) | YES | | NULL | | | deptno | int(11) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 8 rows in set (0.00 sec)
mysql> ALTER TABLE employee CHANGE deptno dep_no int(8); // 부서번호 deptno을 dep_no로 변경. CHANGE이용 Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc employee; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | empno | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | | job | varchar(9) | YES | | NULL | | | boss | int(11) | YES | | NULL | | | hiredate | varchar(12) | YES | | NULL | | | salary | decimal(7,2) | YES | | NULL | | | comm | decimal(7,2) | YES | | NULL | | | dep_no | int(8) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 8 rows in set (0.01 sec)
mysql> ALTER TABLE products RENAME officeEquipment; Query OK, 0 rows affected (0.53 sec) mysql> show tables; +-------------------+ | Tables_in_classdb | +-------------------+ | employee | | officeequipment | +-------------------+ 2 rows in set (0.02 sec)
DROP(테이블 삭제)
테이블 삭제
drop table 테이블명;
mysql> show tables; +-------------------+ | Tables_in_classdb | +-------------------+ | employee | | officeequipment | +-------------------+ 2 rows in set (0.02 sec) mysql> drop table employee; Query OK, 0 rows affected (0.03 sec) mysql> desc employee; ERROR 1146 (42S02): Table 'classdb.employee' doesn't exist
[ edwith - 웹프로그래밍 부스트코스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다
'DataBase' 카테고리의 다른 글
[MySQL] DML (0) | 2019.03.04 |
---|---|
[MySQL] SQL (0) | 2019.03.04 |
[MySQL] DB vs DBMS (0) | 2019.03.02 |