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;