MySQL
관계형 데이터베이스 중 하나인 MySQL을 사용하여 SQL 쿼리문을 정리해보겠다.
쿼리문은 크게 3가지 종류로 나뉘게 된다. 간략히 보면
DDL (Data Define Language) :
데이터베이스의 Schema를 정의할 수 있는 쿼리문
DML (Data Manipulation Language) :
데이터를 조작하는 쿼리문
DQL (Data Query Language) :
데이터를 쿼리하는데(데이터베이스 서버에게 데이터를 달라고 요청하는 것) 사용되는 SQL문
으로 정리 할 수 있다. 이제 위 쿼리문들의 사용법을 확인해보자.
참고 ) MySQL에서 키워드와 구문, 문자열은 대소문자를 구분하지 않는다. 그래도 되도록이면 대문자 혹은 소문자로 일관되게 사용하는 것이 좋다. 또한 테이블 명과 필드의 이름은 대소문자를 구분하므로, 주의해서 사용해야 한다. 또한 쿼리문 작성 후 ; 를 붙여야 한다.
DDL (Data Define Language)
DDL 에 속하는 쿼리문의 이름에서도 알 수 있듯 데이터를 구성하는 논리적인 구조(데이터베이스 또는 테이블)을 추가하고 수정하고 삭제할 수 있다. 또한 메타데이터(데이터에 대한 데이터)를 다루는 쿼리문이다.
- CREATE DATABASE
CREATE DATABASE 데이터베이스명; # DATABASE를 생성하는 명령어
CREATE DATABASE 데이터베이스명 character set utf8mb4 collate utf8mb4_general_ci;
SHOW DATABASES; # MySQL에 저장되어있는 데이터베이스 확인가능
USE 데이터베이스명; # 해당 데이터베이스 활성화
SHOW TABLES; # 현재 데이터베이스 내 테이블을 보는 명령어
CREATE TABLE
CREATE TABLE artists
(
id INT NOT NULL AUTO_INCREMENT, # id 칼럼을 정수, NULL 을 허락하지 않으며 값을 자동증가하게 설정
name VARCHAR(100) NOT NULL, # name 칼럼을 100의 크기를 가지는 문자열, NULL 을 허락하지 않음
PRIMARY KEY (id) # 이 테이블의 Primary Key 를 id 로 설정
); # artists table 생성
DESC artists; # DESCRIBE 도 같은 명령어로, 테이블의 정보를 보여줌
DML (Data Manipulation Language)
데이터를 조작하는 쿼리문들로 INSERT, UPDATE, DELETE 문이 대표적이다.
INSERT INTO
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)
VALUES (데이터값1, 데이터값2, 데이터값3, ...);
INSERT INTO 테이블이름
VALUES (데이터값1, 데이터값2, 데이터값3, ...);
1번 방법)
INSERT INTO songs (title, artist_id, lyrics)
VALUES ('All I need', 1, 'I\'m the next act\nWaiting in the wings');
2번 방법)
INSERT INTO songs
VALUES (2,'All I need', 'I\'m the next act\nWaiting in the wings',1);
# 테이블 뒤 필드명을 생략할 수 있으나 생략할 경우 table의 필드 순서대로 모든 값을 넣어주어야 insert 된다.
UPDATE (table) SET (column)=바꿀값 WHERE (조건)
UPDATE artists SET name='Pink Floyd' WHERE id=2;
DQL (Data Query Language)
데이터를 쿼리하는데(데이터베이스 서버에게 데이터를 달라고 요청하는 것) 사용되는 SQL문으로 SELECT 문이 대표적
- SELECT
SELECT * FROM artists; # artists 테이블의 전체 데이터 선택
SELECT songs.title FROM songs; # songs 테이블의 title column의 데이터만 선택
SELECT songs.lyrics FROM songs WHERE songs.title = '파도';songs 테이블의 title= '파도' 인 row 의 lyrics column 만 선택
SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%넘실넘실%';
% 에 어떠한 값이 들어가도 상관없이 해당 값을 가지는 row 선택
- JOIN
SELECT artists.name, songs.title, songs.lyrics # 필요한 column을 나열
FROM artists # artists 테이블에
JOIN songs # songs 테이블을 결합
ON artists.id = songs.artist_id; # ON 뒤에는 교집합, 즉 연결성이 있는 부분(칼럼)을 입력artists 와 songs 테이블에서 on 조건을 만족하는 부분이 나옴