본문 바로가기
Database/mysql

[MYSQL/ Databas] MYSQL DDL 명령어(CREATE,DROP,ALTER,RENAME,TRUNCATE)

by JINJINC 2023. 4. 10.
728x90
반응형

MYSQL을 사용하여 실습해 보았습니다. 

DDL

CREATE   : 데이터베이스내 개체 (테이블, 인덱스 제약조건, 프로시저, 펑션 등)을 생성 할 때
DROP     : 데이터베이스내 개체를 삭제할 때
ALTER    : 데이터베이스내 개체의 속성 및 정의를 변경할 때
RENAME   : 데이터베이스내 개체의 이름을 변경할 때
TRUNCATE : 테이블 내 모든 데이터를 빠르게 삭제할 때

show databases;     =>  현재 상태에서 database를 보여준다.

CREATE

# 데이터베이스, 테이블, view 생성

create database  [ database name];
create table [table name] ( 컬럼명  데이터타입,  컬럼명2 데이터타입,,,,);
create view [view name] 조건;

create database mydb;  =>  database를 사용한다.

use [database name]      => database를 사용한다. 

table 생성

create table [table name] (
         컬럼명           데이터타입  옵션 ,
         컬럼명          데이터타입  (옵션)
); 

변수 종류

데이터 타입 의미
CHAR 특정 문자열 개수를 지정할때 
VARCHAR 가변길이의 문자열을 저장할 때 사용, 최대 길이를 지정( 오라클은 사용하지 않음)
VARCHAR2 가변길이의 문자열을 저장할 때 사용합니다. 최대 길이를 지정함(MYSQL, MariaDB지원안함)
NUMBER 숫자에 사용되는 데이터 타입, 소수점 저장 가능(MYSQL, MariaDB의 경우 INT로 사용)
DECIMAL 숫자에 사용되는 데이터 타입입니다. 소수점 저장 가능해요
(오라클에서 내부적으로 NUMBER로 변환되어 사용됩니다.)
DATE 날짜에 사용되는 데이터 타입입니다. 

제약 조건 

제약조건 의미
NOT NULL 값이 꼭 입력되어야 할 때 사용합니다. null 을 허용하지 않음
UNIQUE 해당 컬럼에 중복 값을 허용하고 싶지 않을때 사용합니다.
PRIMARY KEY 기본키를 지정할 때 사용하는 조건입니다. 테이블 당 한개의 기본키만 생성 가능해요
FOREGIN KEY 외래키를 지정할 때 사용합니다.(references 키워드랑 같이 쓰여요)
CHECK 컬럼에 입력되는 데이터를 체크해 특정 조건에 맞는 데이터만 입력받고 싶을 때 사용합니다.
DEFAULT 만약 값이 없이 입력되면 디폴트에 지정된 값으로 입력합니다.
INDEX 인덱스 지정할 때 사용합니다. 
describe [table name];   => table 의 상세 조건을 볼 수 있습니다. 

view 생성 

 

 

  ## 테이블에 코멘트 넣기 

create table t_user (
       c_ID int primary key auto_increment comment '유저 고유 아이디',
       c_name char(20) not null comment '유저 이름'
) comment '유저 테이블';

##넣어준 코멘트 확인하기 

테이블 코멘트 보기
SELECT  
    table_name, table_comment
FROM
    information_schema.tables
WHERE
    table_schema = 'testdb' AND table_name = 't_user';


칼럼 코멘트 보기
SELECT
    table_name, column_name, column_comment
FROM
    information_schema.columns
WHERE
    table_schema = 'testdb' AND table_name = 't_user';

테이블 복사

create table [새로운 테이블 이름]  as ( select * from [복사해올 테이블 이름]) 

※ MySQL은 지원하지 않음
SELECT * INTO B FROM A;
위 구문을 실행하기 전까지는 B 란 테이블은 존재하지 않지만 
실행을 하게 되면 A라는 테이블의 칼럼과 데이터를 가지는 B 라는 테이블이 생성됩니다.

 

 

ALTER

[칼럼 추가]

새 칼럼 추가 
alter  table [tablename]  add COLUMN 컬럼명  데이터타입  옵션;

지정 컬럼 뒤에 생성
alter table [tablename]  add COLUMN 컬럼명    타입  after 컬럼이름; 

새칼럼 제일 앞에 추가 
alter table [tablename]  add  COLUMN 컬럼명    데이터타입  first;

 

[이름변경]

테이블 이름변경 : alter  table  [tablename]  rename  to  [new tablename];  
( rename table 테이블 명 to  바꿀이름; ) 
칼럼  타입 변경 
alter table [table name] modify 칼럼명  새칼럼타입
이름타입 모두 변경 
alter table [ tablename] change  기존칼럼이름   새칼럼이름  새칼럼타입;

 

[테이블 형식 변경]

Engine : ALTER TABLE [TABLE NAME]  ENGINE=형식;
TYPE : ALTER TABLE [TABLE NAME]  TYPE=형식;

 

[칼럼 삭제]

ALTER TABLE [TABLE NAME] DROP  [칼럼명] 


[인덱스]

인덱스에 새항목 추가 
ALTER TABLE [TABLE NAME] DROP COLUMN INDEX [칼럼이름]

인덱스 삭제
ALTER TABLE [TABLE NAME] DROUP INDEX 칼럼이름
DROP INDEX 인덱스이름 ON [TABLE NAME]

[기본키]

기본키 지정하기
ALTER TABLE [TABLE NAME]  ADD PRIMARY KEY 칼럼이름

기본키 삭제
ALTER TABLE [TABLE NAME]  DROP PRIMARY KEY

 

TRUNCATE

테이블내의 데이터를 삭제하는 명령어 

truncate table [table name];

 

 

 

DROP

view, table 제거

drop view [view name];
drop table [table name];
drop database test_db;

 

 

 

show tables;

를 하여 생성된 table들을 볼 수 있습니다

 

 

 

 

 

 

 

 

 

 

describe [table name];

 

 

 

 

 

728x90
반응형

댓글