mysql을 실행하고 접속했다면, 이제 SQL 문법을 이용해 기본적인 데이터 처리 기능인
Create(생성), Read(읽기), Update(갱신), Delete(삭제)가 가능하다. 데이터베이스를 설계하기 위한 기본적인 문법을 알아보자.
다음은 SQL 사용에 필요한 기본 문법이다.
CREATE DATABASE DB이름;
USE DB이름;
USE
를 이용해 데이터베이스를 선택했다면, 이제 테이블을 만들 수 있다. 다음은 user라는 테이블을 만드는 예제다. 테이블은 필드(표의 열)와 함께 만들어야 한다. 다음과 같은 필드 조건이 있다고 가정해보자.
필드이름 | 필드타입 | 그 외 속성 |
---|---|---|
id | 숫자 | Primary key이면서 자동 증가하도록 설정 |
name | 문자열(최대 255개) | |
문자열(최대 255개) |
CREATE TABLE user (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
SQL 콘솔에서 Enter 키를 이용해 여러 줄의 코드를 입력할 수 있다. 위와 같이 입력하고, 다음에서 설명할 DESCRIBE 명령어를 이용해 테이블 정보를 확인할 수 있다.
아래 명령어를 통해 테이블 정보를 확인할 수 있다.
DESCRIBE user;
입력하면 아래와 같은 user 테이블의 정보를 확인할 수 있다.
mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
MySQL에서 자주 사용하는 명령어 몇 가지를 간략하게 살펴보자.
일반 문자열
SELECT 'hello wolrd'
숫자
SELECT 2
간단한 연산
SELECT 15 + 3
특정 특성을 테이블에서 사용
SELECT 특성_1
FROM 테이블_이름
몇 가지의 특성을 테이블에서 사용
SELECT 특성_1, 특성_2
FROM 테이블_이름
테이블의 모든 특성을 선택
SELECT *
FROM 테이블_이름
=> * 는 와일드카드 (wildcard) 로 전부 선택할 때에 사용된다.
특정 값과 동일한 데이터 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값"
특정 값을 제외한 값을 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 <> "특정 값"
특정 값보다 크거나 작은 데이터를 필터할 때에는 '<', '>', 비교하는 값을 포함하는 '이상', '이하' 값은 '<=', '>=' 을 사용한다.
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 > "특정 값"
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 <= "특정 값"
문자열에서 특정 값을 포함한 값들을 필터할 때에는 'LIKE'와 '\%' 혹은 '\*' 를 사용한다.
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"
값이 없는 경우 'NULL' 을 찾을 때에는 'IS' 와 같이 사용한다.
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
값이 없는 경우를 제외할 때에는 'NOT' 을 추가해 이용한다.
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL
기본 정렬은 오름차순이다.
SELECT *
FROM 테이블_이름
ORDER BY 특성_1
내림차순으로 정렬하기
SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC
데이터 결과를 200개만 출력한다.
SELECT *
FROM 테이블_이름
LIMIT 200
SELECT DISTINCT
를 사용할 수 있다.특성_1을 기준으로 유니크한 값들만 선택한다.
SELECT DISTINCT 특성_1
FROM 테이블_이름
특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택한다.
SELECT
DISTINCT
특성_1
,특성_2
,특성_3
FROM 테이블_이름
INNER JOIN
이나 JOIN
으로 실행할 수 있다.둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결합니다.
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
OUTER JOIN
은 다양한 선택지가 있다.* LEFT OUTER JOIN 으로 LEFT INCLUSIVE을 실행한다. SELECT * FROM 테이블_1 LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
* RIGHT OUTER JOIN 으로 RIGHT INCLUSIVE을 실행한다.
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
여러 쿼리문을 한 번에 써보기
SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId
WHERE c.Country = 'Brazil'
GROUP BY c.City
ORDER BY 3 DESC, c.CustomerId ASC
LIMIT 3