아래 순서는 이미 MySQL이 컴퓨터에 다운로드 된 것을 전제하에 실시할 수 있다.
(이때, 볼드체로 표시된 부분은 작성자가 코드에서 수정 가능한 부분을 나타냄)
CREATE TABLE topic( --topic이라는 이름의 테이블 생성(id,title...순으로 표 작성)
-> id INT(11) NOT NULL AUTO_INCREMENT, --id의 숫자 자동 할당, 최대 11
-> title VARCHAR(100) NOT NULL, --최대 100글자
-> description TEXT NULL, --최대 250글자
-> created DATETIME NOT NULL, --현재시간 기준
-> author VARCHAR(30) NULL, --최대 30글자
-> profile VARCHAR(100) NULL, --최대 100글자
-> PRIMARY KEY(id)); --id가 식별자 역할
DESC topic;을 작성하여 위에서 생성한 테이블이 어떤 형태를 취할 수 있는지 볼 수 있음.
INSERT INTO topic(title,description,created,author,profile) VALUES('MySQL','MySQL is...',NOW(),'egoing','developer');
INSERT INTO topic(title,description,created,author,profile) VALUES('ORACLE','ORACLE is...',NOW(),'egoing','developer');
INSERT INTO topic(title,description,created,author,profile) VALUES('SQL Server','SQL Server is...',NOW(),'duru','data administrator');
INSERT INTO topic(title,description,created,author,profile) VALUES('PostgreSQL','PostgreSQL is...',NOW(),'taeho','data scientist,developer');
INSERT INTO topic(title,description,created,author,profile) VALUES('MongoDB','MongoDB is...',NOW(),'egoing','developer');
테이블 생성 시에 AUTO_INCREMENT를 사용해 id는 자동생성 하였기 때문에 제외한다.
title, description, created, author, profile을 VALUES를 이용해 순서에 맞게 작성하도록 한다. 이때, VALUES도 순서에 맞춰 작성해야한다. NOW() 는 DATETIME에서 현재 시간을 테이블에 넣기 위해 사용하는 함수이다.
id | title | description | created | author | profile |
---|---|---|---|---|---|
1 | MySQL | MySQL is ... | '현재 시간' | egoing | developer |
2 | ORACLE | ORACLE is ... | "" | egoing | developer |
3 | SQL Server | SQL Server is ... | "" | duru | data administrator |
4 | PostgreSQL | PostgreSQL is ... | "" | taeho | data scientist, developer |
5 | MongoDB | MongoDB is ... | "" | egoing | developer |
먼저 INSERT 구문을 작성하여 생성한 테이블을 아래의 코드를 통해 확인해본다.
SELECT * FROM topic; --topic이라는 테이블의 각 열마다 정해진 형태를 볼 수 있음
SELECT id, title, created, author FROM topic;
SELECT id, title, created, author FROM topic WHERE author = 'egoing';
SELECT id, title, created, author FROM topic WHERE author = 'egoing' ORDER BY id DESC;
SELECT id, title, created, author FROM topic WHERE author = 'egoing' ORDER BY id DESC LIMIT 2;
UPDATE topic SET description = 'Oracle is...', title='Oracle' WHERE id = 2;
DELETE FROM topic WHERE id = 5; --여기서는 5번째 행을 삭제한다.
RENAME TABLE topic TO topic_backup; --이름은 자유롭게 설정 가능
Use opentutorials; --opentutorials라는 사용자 선택
SHOW TABLES; --해당 사용자의 테이블 목록 확인
예를 들어 topic 테이블의 겹치는 author가 많으면 author라는 테이블을 생성하여, 해당 author들의 이름이나, profile를 편리하게 수정이 가능해진다.
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
topic.id = topic 테이블의 id이고, topic 테이블의 author_id와 author 테이블의 id가 동일하도록 한다.
아래와 같은 코드 작성시 두개의 테이블이 한 번에 보일 수 있다.
이때, 보이는 테이블의 열은 id, title, description, created, author_id, id, name, profile일 것이다.
SELECT topic.id,title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
기존에 id 열이 두개 보이던 것을 topic_id로 변경되어 보이도록 하였다.
SELECT topic.id AS topic_id, itle,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
join에 대한 자세한 것은 아래의 코스에서 더 공부해보도록 하자.
https://opentutorials.org/course/3884