본문 바로가기

MySQL

MySQL DDL, DML, DCL 문법

 

DDL

 

 

 

DATABASE

CRAETE DATABASE 데이터베이스_이름 [CHARACTER SET];

DROP DATABASE 데이터베이스_이름;

RENAME TABLE 데이터베이스_이름1.테이블_이름 TO 데이터베이스_이름2.테이블_이름;

SHOW DATABASES [LIKE 조건절];

USE 데이터베이스_이름;

ALTER DATABASE 데이터베이스_이름 CHARACTER SET = ‘포맷’;

DROP DATABASE 데이터베이스_이름;

 

 

 

TABLE

 

CREATE TABLE [TEMPORARY] 테이블_이름 [IF NOT EXISTS] (

컬럼이름 데이터타입 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]

[UNIQUE [KEY]] [[PRIMARY] KEY] [COLLATE collation_name] [reference_definition];

{INDEX | KEY} [인덱스이름] (칼럼이름);

{FULLTEXT | SPATIAL} [INDEX | KEY] [인덱스이름] (칼럼이름);

[CONSTRAINT] PRIMARY KEY 칼럼이름);

[CONSTRAINT] UNIQUE [INDEX | KEY] [인덱스이름] (칼럼이름);

[CONSTRAINT] FOREIGN KEY [인덱스이름] (칼럼이름) [reference_definition] ,

CHECK (expr)

) ENGINE = InnoDB; // 엔진 선택 가능

 

* reference_definition: REFERENCES tbl_name (key_part,...) [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option]

 

DESC 테이블_이름;

ALTER TABLE 테이블_이름 CHARACTER SET ‘euckr’;

ALTER TABLE 테이블_이름 ENGINE=myisam;

RENAME TABLE 테이블_이름1 TO 테이블_이름2, 테이블_이름3 TO 테이블_이름4;

 

 

 

COLUMN

 

ALTER TABLE 테이블_이름 ADD COLUMN 컬럼_이름 TYPE;

ALTER TABLE 테이블_이름 DROP COLUMN 컬럼_이름;

ALTER TABLE 테이블_이름 CHANGE 컬럼_이름1 컬럼_이름2 [TYPE];

ALTER TABLE 테이블_이름 MODIFY COLUMN 컬럼_이름 TYPE NOT NULL;

 

 

 

INDEX

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [index_type] ON tbl_name (key_part,...)

ALTER TABLE table_name ADD INDEX 인덱스_이름(column1, column2);

SHOW INDEX FROM 테이블_이름;

ALTER TABLE 테이블_이름 DROP INDEX 인덱스_이름;

 

 

 

 

DML

 

SELECT [DISTINCT] column1, column2… // DISTINCT를 통해 중복 값 제거

FROM 테이블_이름

[WHERE 조건절] // < > <= >= ! AND OR NOT BETWEEN IN EXISTS 등과 사용 가능

[GROUP BY column_name]

[HAVING Aggregate_function]

[ORDER BY column_name [ASC / DESC] ]

[LIMIT n] // n개의 행으로 결과 값 제한

 

INSERT INTO 테이블_이름 [ 열 목록 ] VALUES ( 값 목록 )

INSERT INTO 테이블_이름 [ 열 목록 ] select ~; // insert select문

 

UPDATE 테이블_이름 SET 컬럼_이름 = value [WHERE 조건절]

DELETE FROM 테이블_이름 [WHERE 조건절] [LIMIT n]

 

 

 

 

DCL

 

CREATE USER [계정명]@[접속경로] IDENTIFIED BY PASSWD;

DROP USER [계정명]@[접속경로];

SET PASSWORD FOR [계정명]@[접속경로] = ‘new pwd’;

 

GRANT [권한목록] ON [database_name.table_name] TO 계정명@접속경로;

REVOKE [권한목록] ON [database_name.table_name] TO 계정명@접속경로;

SHOW GRANTS FOR 계정명@접속경로;

FLUSH PRIVILEGES; // GRANT, REVOKE 반영

 

COMMIT; // 트랜잭션 반영

ROLLBACK; // 트랜잭션 취소

 

 

'MySQL' 카테고리의 다른 글

MySQL Log (로그)  (0) 2021.04.05