본문 바로가기
Database/MYSQL

Mysql- Data Definition Language(DDL)

by 반화넬 2023. 7. 26.
반응형

안녕하세요.

지금까지 Mysql 설치를 알아보았는데요. 이제는 Mysql- Data Definition Language(DDL)에 대해서 알아볼까 합니다. DDL, DML, DCL등 알아야 할건 많겠지만 그래도 하나씩 알아둔다면 많은 도움이 될거라 생각됩니다.

 

mysql ddl dcl dml database rename create table

DATABASE  명령어


# 데이터베이스 생성 명령어
CREATE DATABASE [dbname];
 
# 데이터베이스 생성 및 속성 설정 명령어
CREATE DATABASE [dbname]CHARACTER SET utf8mb4COLLATE utf8mb4_unicode_ci;

# 테이블 생성 명령어
Drop table member_basic;
CREATE TABLE member_basic (
    auto_no INT PRIMARY KEY AUTO_INCREMENT comment ‘자동증가’,
    mem_no int not null default 0 comment ‘mem_no’,
    mem_name VARCHAR(255) NOT NULL comment ‘name’,
    ins_date DATETIME NOT NULL comment ‘등록일자’, 
)CHARSET=utf8mb4 COMMENT ='테이블설명';

# 데이터베이스 삭제 명령어
DROP DATABASE [dbname];

 

ALTER 명령어

# 테이블에 컬럼 추가하기
ALTER TABLE [table_name] ADD COLUMN [column_name] [column_type];
 
# 테이블의 컬럼 타입 변경하기
ALTER TABLE [table_name] MODIFY COLUMN [column_name] [column_type];
 
# 테이블의 컬림 이름 변경하기
ALTER TABLE [table_name]  CHANGECOLUMN [old_column_name] [new_column_name] [new_column_type];
 
# 테이블의 컬럼 삭제하기
ALTER TABLE [table_name] DROP COLUMN [column_name];
 
# 테이블에 PRIMARY KEY 추가
ALTER TABLE [table_name] ADD PRIMARY KEY( column_name_on_this_table );
 
# 테이블에 PRIMARY KEY 삭제하기
ALTER TABLE [table_name] DROP PRIMARY KEY;

 

# 테이블 명 바꾸기
ALTER TABLE [old_table_name] RENAME [new_table_name];

 

mysql ddl dcl dml database rename create table

RENAME 명령어

# 테이블 이름 변경 명령어
RENAME TABLE [old_table_name] TO [new_table_name];
 
# 여러 테이블 이름 변경 명령어
RENAME TABLE [old_table_name1] TO [new_table_name1], [old_table_name2] TO [new_table_name2];

 

기타 명령어

# 테이블 데이터 초기화
TRUNCATE TABLE [table_name];
> DROP 후 CREATE를 하는 특징

# 데이터 삭제
DELETE FROM TABLE [table_name];

 

 

SHOW DATABASES

 

# 현재 데이터 베이스 조회 / 열람
기본적으로 설치된 DB
- information_schema
- mysql : MySql 관련 정보 세팅 (사용자 계정…)
- performance_schema
샘플 DB
- sakila
- world : 지역 정보 (국가, 도시..)


CREATE USER : 사용자 생성

 

CREATE USER  ‘[사용자아이디]’  IDENTIFIED BY ‘[암호]’
CREATE USER  ‘[사용자아이디]’@’[호스트]’  IDENTIFIED BY ‘[암호]’

권한설정

grant all privileges on 디비명.테이블명 to '사용자'@'접속지 주소' (with grant option);
flush privileges;      ← grant 명령 후에 flush 를 해주어야 실제 적용됨.


SHOW GRANTS FOR '사용자'@'호스트';

revoke all on DB이름.테이블 FROM '계정아이디'@'접속위치';



DROP USER : 사용자 삭제

 

DROP USER [사용자아이디];
DROP USER [사용자아이디]@[호스트];


접속 전환

# system mysql -u myuser -p

mysql ddl dcl dml database rename create table

CREATE TABLE : 테이블 생성

PRIMARY KEY : 고유한 키값을 같는 필드
AUTO_INCREMENT : 레코드가 생성될때마다 자동증가
NOT NULL : Null 값 허용 안함
MySQL 필드의 데이터 타입

숫자형 필드 : TINYINT, INT, FLOAT...
문자형 필드 : CHAR, VARCHAR, TEXT, ENUM...
날짜형 필드 : DATE, DATETIME, TIMESTAMP ...
특히 많이 사용되는 타입

INT : 4bytes 정수를 저장할때 사용
CHAR(n) : 문자의 수가 n 개인 문자열을 저장할때 사용
VARCHAR(n) 문자의 수가 최대 n 개인 문자열을 저장할때 사용
TEXT : 문자의 수가 최대 65535 개인 문자열을 저장할때 사용

CREATE TABLE user_blocks (
  `smtp_id` varchar(40) NOT NULL DEFAULT '' COMMENT '강퇴/정지디바이스',
  `block_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '사유',
  `block_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '처리날짜',
  `block_end_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '정지종료일',
  `chrgr_name` varchar(20) NOT NULL DEFAULT '' COMMENT '처리관리자',
  `stop_no` int(11) NOT NULL DEFAULT 0 COMMENT '정지사유번호',
  PRIMARY KEY (`smtp_id`),
  KEY `block_end_date` (`block_end_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='디바이스 강퇴/정지'

Check Point

Database 시작과 끝은 바로 정확성입니다. 올바르게 설계하고 확장 가능하도록 설계한 이후 Data의 분포에 따라 서비스 방향에 따라 구조 변경과 Index 변경으로 안정적인 서비스 운영을 할 수 있도록 지원하면 됩니다. 

 

감사합니다.

반응형