[DBMS] DDL 데이터정의문

💡 데이터 정의 언어(Data definition Language : DDL)

데이터의 저장구조를 정의하는 언어로 스키마의 정의 수정, 삭제하는 명령문과 인덱스의 생성 및 삭제 명령문을 뜻함

🔴 데이터베이스/테이블 생성(CREATE)

  • create database 데이터베이스명;
  • create table 테이블 이름(
    컬럼이름1 컬럼타입1,
    ...
    );
create table member (
	mb_no INT(11) not null auto_increment,
	mb_id varchar(20) not null default '',
	mb_password varchar(255) not null default '',
	mb_name varchar(255) not null default '',
	mb_email varchar(255) not null default '',
	PRIMARY KEY (mb_no),
	UNIQUE INDEX mb_id (mb_id)
);

다른 테이블을 이용한 테이블 생성

  • create table 새로만들테이블명 as select 필드명1, 필드명2 from 참고할테이블명;

    ❗️참고한 테이블의 데이터도 같이 가져옴

데이터베이스 사용

  • use 데이터베이스이름;

데이터베이스 보기

  • show 데이터베이스 이름;

🟠 데이터베이스 변경(ALTER)

  • alter database 데이터베이스명 character set = utf8;
  • alter database 데이터베이스명 collate = utf8_general_ci;
alter database mydb CHARACTER SET=utf8 COLLATE=utf8_general_ci;

ADD (컬럼 추가)

  • alter table 테이블명 add 필드명 필드자료형;
ALTER TABLE member ADD mb_tel int;

DROP (컬럼 삭제)

  • alter table 테이블명 drop 필드명;
  • alter table 테이블명 drop column 필드명;

MODIFY COLUMN (컬럼 타입 변경)

  • alter table 테이블명 modify column 필드명 필드자료형;
alter table member modify mb_email varchar(255) not null default '';

RENAME TABLE (테이블 이름 변경)

  • rename table 기존 테이블 이름 to 변경할 테이블 이름;
  • rename table 기존 데이터베이스 이름.기존 테이블 이름 to 옮길 데이터베이스 이름.생성할 테이블 이름;
rename table mydb.member to test.member2;

↳ mydb에는 member이라는 테이블이 남아있지 않고, test에 member2로 옮겨갔다.

CHANGE (컬럼명, 타입 변경)

  • alter table 테이블이름 change 기존열이름 새로운열이름 자료형;
    ❗️컬럼명과 타입 둘 다 한 번에 바꿀 수 있음

🟡 인덱스 생성

: 테이블 최초로 생성할 때부터 인데스 사용하는 경우도 있고, 테이블 생성 후에 인덱스 생성하는 경우도 있음

1. member 테이블에 5개 컬럼 추가

alter table member 
            add mb_1 INT,
            add mb_2 INT,
            add mb_3 INT,
            add mb_4 INT,
            add mb_5 INT;

2. create index문을 사용해 인덱스 생성

  • create index 인덱스 이름 on 테이블 이름 (컬럼이름);
    create index mb1_idx on member (mb_1);
  • create index 인덱스 이름 on 테이블 이름 (컬럼이름1, 컬럼이름2, ...);

3. 인덱스 확인방법

  • show index from 테이블 이름;

4. 인덱스 타입 추가해서 생성방법

  • create unique index 인덱스 이름 on 테이블 이름 (필드이름);

5. 정렬방식 설정

  • create index 인덱스 이름 on 테이블 이름 (컬럼이름 DESC); → 내림차순
  • create index 인덱스 이름 on 테이블 이름 (컬럼이름 ASC); → 오름차순

6. alter문 사용한 인덱스 생성

  • alter table 테이블 이름 add index 인덱스 이름 (컬럼이름);
  • alter table 테이블 이름 add 인덱스타입 인덱스 이름 (컬럼이름);

7. 인덱스 삭제

  • drop index 인덱스 이름 on 테이블 이름;
  • alter table 테이블 이름 drop index 인덱스 이름

좋은 웹페이지 즐겨찾기