개발자 항해

DDL(데이터정의어) - 1 본문

DB/MySQL

DDL(데이터정의어) - 1

리치Y 2022. 6. 29. 22:44
  • DDL(데이터정의어)란?

객체( 테이블, 뷰, 인덱스 등)를 생성, 수정, 삭제하는 명령어로

종류로는 create, alter, drop, truncate 가 있고 autocommit(자동저장)을 내포하고 있는것이 특징이다.

 

 

1. 테이블 생성 (create table)

 

테이블 생성시 기본정보: 테이블명, 컬럼명, 데이터타입

옵션 : 제약조건, default값

 

[문법] create table 테이블명

          ( 컬럼명1 데이터타입(컬럼사이즈),

             컬럼명2 데이터타입(컬럼사이즈) 제약조건,

             컬럼명3 데이터타입(컬럼사이즈) default 기본값);

 

데이터 타입 : 숫자 - int, bigint, double, float

                      문자 - char(고정길이 문자형으로 저장), varchar(가변길이 문자형으로 저장)

                      날짜 -  date(년/월/일), datetime(년/월/일/시/분/초)

 

사용 예제
결과값

 

1) 제약 조건 추가 - not null, unique, primary key

 

 

 

2) 제약 조건 추가 - foreign key

 

 

foreign key는 desc로는 정확한 확인이 어렵고

 

아래와 같이 information_schema의 table_constraints에서 확인해야한다.

 

 

 

 

3) 제약 조건 - check

 

check는 desc 로는 확인이 어렵고 

 

 

아래와 같이 information_schema의 table_constraints에서 확인해야한다.

 

 

 

 

 

2. 테이블 수정(alter table)

 

 

 1) 컬럼추가

   

[문법] alter table 테이블명

              add 컬럼명 데이터타입 [default] [제약조건] [first | after 컬럼명];

아무것도 안쓰면 마지막에 추가되어있다.

             

emp_number는 맨처음으로 추가하고 싶어 first를 쓰고 salary는 last_name다음으로 추가하고 싶어 after 제약 조건을 주었다
알맞게 추가된 모습

 

 

 2) 컬럼 수정

 

데이터타입, 컬럼사이즈, defaul값 등 수정 가능함

 [문법] alter table 테이블명

           modify 컬럼명 데이터타입 [default] [제약조건];

 

salary컬럼제약조건: int -> bigint로 변경. last_name컬럼 제약조건: varchar(25) -> varchar(30)으로 변경
수정전 모습
수정후 모습

 

3) 컬럼 삭제

 

[문법]  alter table 테이블명

           drop 컬럼명;

 

삭제전
drop으로 삭제한 모습

 

4) 제약조건 추가

 

 [문법1] pk, uk, ck, fk

 alter table 테이블명

 add primary key(컬럼명);

 

alter table 테이블명

 add unique key(컬럼명);

 

alter table 테이블명

 add check key(컬럼명);

 

alter table 테이블명

 add foreign key(컬럼명) references 부모테이블(부모컬럼명);

 

 

[문법2] nn (not null)

alter table 테이블명

modify 컬럼명 데이터타입 not null;

emplyee_id쪽에 key값으로 primary key를 추가해보았다
추가 전 모습
추가 후 모습

 

 

5) 제약조건 삭제

 

제약 조건 삭제전에 제약 조건명 확인이 필요하다.

desc로는 간략한 모습만 나오고 아래 구문으로 자세한 제약 조건명을 알수있다.

information_schema로 스키마를 바꾼후 제약조건을 확인하였다
제약조건명은 위 빨간박스표시와 같다
삭제 구문을 날리고
삭제 된 모습

 

 

6) 컬럼명 변경

 

 [문법] alter table 테이블명

           rename column 기존컬럼명 to 새로운 컬럼명;

 

변경전
변경후

'DB > MySQL' 카테고리의 다른 글

DML ( 데이터조작어 ) - 3. delete  (0) 2022.07.20
DML ( 데이터조작어 ) - 2. update  (0) 2022.07.05
DML ( 데이터조작어) - 1. insert  (0) 2022.07.04
DDL(데이터정의어) - View  (0) 2022.06.30
DDL(데이터정의어) - 2  (0) 2022.06.30