[MySQL] DDL & DML

2 minute read


MySQL Table

  • CREATE TABLE - 테이블 만들기
  • INSERT INTO - 테이블에 데이터(행) 추가
  • ALTER - 테이블의 속성 수정
  • SET - 테이블 속성 설정
  • UPDATE & SET - 테이블의 데이터 수정
  • DELETE - 테이블의 데이터 삭제

CREATE TABLE

  • CREATE TABLE [table_name] (columns)
# 방법1
CREATE TABLE userTbl(
	uNo INT AUTO_INCREMENT PRIMARY KEY, -- PRIMARY KEY가 있으니 NOT NULL 빼도 됨, 붙여도 상관없음
	uID VARCHAR(10) NOT NULL UNIQUE,
	uName VARCHAR(10) NOT NULL,
	uAge INT NOT NULL CHECK(uAge BETWEEN 0 AND 120),
	uAddr CHAR(4) DEFAULT '서울',
	mob1 CHAR(3) CHECK(mob1 IN ('010', '011', '019')),
	mob2 CHAR(8),
	uDate DATETIME NOT NULL DEFAULT NOW()
);

# 방법2 - Constraint  명확하게   있음
CREATE TABLE userTbl(
	uNo INT AUTO_INCREMENT,
	uID VARCHAR(10) NOT NULL,
	uName VARCHAR(10) NOT NULL,
	uAge INT NOT NULL,
	uAddr CHAR(4) DEFAULT '서울', -- DEFAULT는 제약조건에 대한 이름을 만들 수 없음
	mob1 CHAR(3),
	mob2 CHAR(8),
	uDate DATETIME NOT NULL DEFAULT NOW(),
	
	CONSTRAINT userTbl_uNo_pk PRIMARY KEY(uNo),
	CONSTRAINT userTbl_uID_uk UNIQUE(uID),
	CONSTRAINT userTbl_uAGE_ck CHECK(uAge BETWEEN 0 AND 120),
	CONSTRAINT userTbl_mob1_ck CHECK(mob1 IN ('010', '011', '019'))
);

# 기존에 존재하는 테이블 자체를 복사, 다만  경우 데이터만 복사되며, constraint, foreign key, index 등은 복사  
CREATE TABLE dept4
SELECT * FROM dept;

# 비어있는 테이블 생성후, 테이블  복사
CREATE TABLE dept5 (deptno int primary key,
					dname  varchar(20),
					loc    varchar(20))
					
INSERT INTO dept5
SELECT * FROM dept;

INSERT INTO

  • INSERT INTO [table_name] VALUES(values)
# 방법1
INSERT INTO dept2(deptno, dname, loc) VALUES (50,'IT','SEOUL');

# 방법2 (column name values 순서는 맞아야 )
INSERT INTO dept2(dname, loc, deptno) VALUES ('OP','BUSAN',60);

# 방법3
INSERT INTO dept2 VALUES(80, 'MKT', 'JEJU'),
						(90, 'DEV', 'JEJU');

ALTER

  • ALTER TABLE [table_name] [command_to_alter]
# auto_increment 시작을 100으로 설정
ALTER TABLE dept3 AUTO_INCREMENT = 100;

# constraint primary key 추가
ALTER TABLE uTbl 
ADD CONSTRAINT uTbl_uNo_pk PRIMARY KEY(uNo);

# constraint UNIQUE 추가
ALTER TABLE [table_name]
ADD UNIQUE [column_name];
# 만약 이미 중복 값이 잇다면 해당 값들이 UDPATE, DELETE 등을 해야함

# constraint MULTIPLE UNIQUE 추가
ALTER TABLE [table_name]
ADD UNIQUE [column_name1, column_name2];

# column 대한 default 설정할 경우 경우 'add' 아닌 'alter'
ALTER TABLE uTbl
ALTER COLUMN uAddr SET DEFAULT '서울';

# constraint NOT NULL 추가
ALTER TABLE [table_name]
ALTER COLUMN [column_name] SET NOT NULL;
# 만약 이미 NULL 값이 잇다면 해당 값들이 UDPATE, DELETE 등을 해야함

# constraint DEFAULT 추가
ALTER TABLE [table_name]
ALTER COLUMN [column_name] SET DEFAULT [value];

# weight column 추가
ALTER TABLE uTbl
ADD COLUMN weight smallint;

# weight column 삭제
ALTER TABLE uTbl
DROP COLUMN weight;

# CONSTRAINT 삭제
ALTER TABLE [table_name]
DROP CONSTRAINT [constraint_name];

SET

# auto_increment 3 하도록 
SET @@AUTO_INCREMENT_INCREMENT=3;

UPDATE SET

# 90 부서의 위치를 LA 수정
UPDATE dept2
SET loc = 'LA'
WHERE (deptno=90);

# 70, 90 부서의 위치를 JEJU 수정하시오
UPDATE dept2
SET loc = 'JEJU'
WHERE (deptno IN (70,90));

# 80 부서의 이름은 ADMIN, 위치는 BUSAN 으로 수정해주세요
UPDATE dept2 
SET dname = 'ADMIN', loc = 'BUSAN'
WHERE (deptno = 80)

DELETE

# 부서번호가 80 데이터 삭제
DELETE FROM dept2
WHERE (deptno = 80);

# 70 부서이면서, 위치가 Jeju 데이터 삭제
DELETE FROM dept2
WHERE (deptno = 70)
AND (loc = 'JEJU')

Tags:

Categories:

Updated: