MySQL
에 입문을 하면서
이미 실존하는 데이터베이스에 조건을 줘 데이터를 출력하는 방법들을 먼저 배웠다.
이번에는 데이터를 관리하고 생성 삭제하는 기본적인 문법에 대해서 정리를 한다.
데이터를 정의 하는 언어
CREATE
를 이용하면 데이터베이스와 테이블을 생성할 수 있다.
CREATE TABLE NEW_TABLE (
NO INT,
NAME VARCHAR(10),
BIRTH DATE
);
CREATE TABLE
<테이블 이름> ( 컬럼이름1 데이터타입, 컬럼이름2 데이터타입.....); 이다DESC new_table;
으로 구조를 확인해보면 아래와 같다.DEPT2
테이블의 구조와 데이터를 DEPT3
테이블을 생성하면서 복제한다.AS
를 이용한다. CREATE TABLE DEPT3
AS
SELECT * FROM DEPT2;
CREATE TABLE DEPT4
AS
SELECT DCODE,DNAME FROM DEPT2;
CREATE TABLE DEPT5
AS
SELECT * FROM DEPT2 WHERE 1=2;
CREATE TABLE DEPT6
AS
SELECT DCODE,DNAME
FROM DEPT2
WHERE DCODE IN (1000,1001,1002);
ALTER
를 이용하면 테이블 구조를 수정할 수 있다.ADD
는 컬럼을 추가 ALTER TABLE DEPT6
ADD(LOCATION VARCHAR(10));
ALTER TABLE [테이블명] MODIFY COLUMN [칼럼명] [칼럼타입] [칼럼조건];
DEFAULT
값을 특정값으로 지정해서 구조를 수정할 수 있다. ALTER TABLE DEPT6
ADD(LOCATION2 VARCHAR(10) DEFAULT 'SEOUL');
RENAME
COLUMN
<컬럼> TO
<변경할 이름> ALTER TABLE DEPT6
RENAME COLUMN LOCATION2 TO LOC;
RENAME
만 이용하여 테이블의 이름을 수정할 수 있다.DEPT6
테이블은 DEPT7
테이블로 변경되었으므로 조회되지 않는다. RENAME TABLE DEPT6 TO DEPT7;
MODIFY
COLUMN
을 이용해서 컬럼의 데이터 타입을 변경할 수 있다. ALTER TABLE DEPT7
MODIFY COLUMN LOC VARCHAR(20); -- ( COLUMN을 명시 하지 않아도 됨 )
DROP
을 이용하면 테이블 구조에서 컬럼을 삭제할 수 있다. ALTER TABLE DEPT7
DROP COLUMN LOC;
DROP TABLE DEPT7;
TRUNCATE TABLE DEPT7;
데이터를 조작하는 언어
데이터를 추가한다
INSERT
INTO
<테이블> (컬럼이름...) VALUES
(데이터값...) ; INSERT INTO DEPT2(DCODE, DNAME) VALUES (9000, 'TEMP1');
테이블의 구조를 보면 DCODE
가 PRI KEY를 가지고 있으므로 중복되는 데이터는 허용하지 않는다.
INSERT INTO DEPT2(DCODE, DNAME, PDEPT) VALUES (9001, 'TEMP2', 1006); # 성공
INSERT INTO DEPT2(DCODE, DNAME, PDEPT, AREA)
VALUES(9002, 'TEMP3', 1006 ,'TEMP AREA'); # 성공
INSERT INTO DEPT2 VALUES (9003, 'TEMP3', 1006 ,'TEMP AREA'); # 성공
-- INSERT INTO DEPT2 VALUES(9004, 'TEMP4', 1006); # 에러 ! 데이터의 수가 맞지 않다.
-- INSERT INTO DEPT2(DCODE, DNAME) VALUES(9000); # 에러 ! 데이터 수가 맞지 않다.
CREATE TABLE T_MINUS (
NO1 INT,
NO2 DECIMAL(3),
NO3 DECIMAL(3,2)
); # 테이블 생성
INSERT INTO T_MINUS VALUES (1, 1, 1);
INSERT INTO T_MINUS VALUES (1.1, 1.1, 1.1);
INSERT INTO T_MINUS VALUES (-1.1, -1.1, -1.1);
INSERT INTO T_MINUS VALUES (2.222, 2.222, 2.222); # 소수점 두자리까지 출력가능 이후는 잘린다
-- INSERT INTO T_MINUS VALUES (33.3, 33.3, 33.3); # DECIMAL (3,2) 이므로 십의 자리는 들어갈 수 없다
INSERT INTO T_MINUS VALUES (555, 555, 5);
-- INSERT INTO T_MINUS VALUES (6666, 6666, 6); # DECIMAL (3)은 백의 자리까지 받을 수 있다.
INSERT INTO T_MINUS VALUES (6666, 666, 6);
UPDATE
이미 있는 데이터를 갱신할때 사용하는데 데이터를 덮어쓰므로 주의해야한다
DCODE = 1000
조건인 PDEPT
데이터가 7777로 업데이트UPDATE
<테이블> SET
<컬럼> = 변경할 값 ... UPDATE DEPT3 SET PDEPT = '7777'
WHERE DCODE = 1000;
POSITION
이 'assistant professor' 인 BONUS
가 모두 200으로 업데이트 UPDATE PROFESSOR SET BONUS = 200
WHERE POSITION = 'assistant professor';
DELETE
는 데이터를 레코드 단위로 삭제한다.
트랜잭션 로그를 남기므로 복구를 할 수 있다.
DELETE
하면 해당 로우의 데이터가 삭제된다DELETE
FROM
<테이블> WHERE
조건 SELECT * FROM DEPT2 ; # 위에서 추가한 로우가 있다
DELETE FROM DEPT2 # 테이블에서 해당조건인 데이터 모두 삭제
WHERE DCODE BETWEEN 9000 AND 9999;
WHERE
조건이 없으면 테이블의 데이터가 모두 날아가니 주의해야한다.DELETE
로 삭제한 데이터를 복구할 수 있다. DELETE FROM DEPT4;