링크텍스트 ---- SQL Quiz
링크텍스트 ---- SQL Exercises
링크텍스트 ---- SQL Cheat Sheet
링크텍스트 --- Cheat Sheet 2
Select
Where
And, Or, Not
Order By
Insert Into
Null Values
Update
Delete
Count
Like
Wildcards
Aliases
Joins
---- Inner Join
---- Left Join
---- Right Join
Group By
SQL Create DB
SQL Drop DB
SQL Create Table
SQL Drop Table
SQL Alter Table
SQL Not Null
SQL Unique
SQL Primary Key
SQL Foreign Key
SQL Default
SQL Auto Increment
SQL Dates
CREATE DATABASE 데이터베이스_이름; // 데이터베이스 생성
USE 데이터베이스_이름; // 데이터베이스 사용
ex)
CREATE TABLE user (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
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)
SELECT는 데이터셋에 포함될 특성을 특정
SELECT 특성_1, 특성_2
FROM 테이블_이름 // 몇 가지의 특성을 테이블에서 사용
SELECT *
FROM 테이블_이름 // 테이블의 모든 특성을 선택
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값" // 특정 값과 동일한 데이터 찾기. WHERE는 필터 역할을 하는 쿼리문
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 <> "특정 값" // 특정 값을 제외한 값을 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 > "특정 값"
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 <= "특정 값"
// 특정 값보다 크거나 작은 데이터를 필터할 때에는 '<', '>', 비교하는 값을 포함하는 '이상', '이하' 값은 '<=', '>=' 을 사용합니다.
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"
// 문자열에서 특정 값과 비슷한 값들을 필터할 때에는 'LIKE'와 '\%' 혹은 '\*' 를 사용합니다.
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 IN ("특정값_1", "특정값_2")
//리스트의 값들과 일치하는 데이터를 필터할 때에는 'IN' 을 사용합니다.
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
// 값이 없는 경우 'NULL' 을 찾을 때에는 'IS' 와 같이 사용합니다.
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL
//값이 없는 경우를 제외할 때에는 'NOT' 을 추가해 이용합니다.
SELECT *
FROM 테이블_이름
ORDER BY 특성_1
// 기본 정렬은 오름차순입니다.
SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC
// 내림차순으로도 정렬할 수 있습니다.
SELECT *
FROM 테이블_이름
LIMIT 200
// 데이터 결과를 200개만 출력합니다.
SELECT DISTINCT 특성_1
FROM 테이블_이름
//특성_1을 기준으로 유니크한 값들만 선택합니다.
SELECT
DISTINCT
특성_1
,특성_2
,특성_3
FROM 테이블_이름
// 특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택합니다.
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결합니다.
SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 'LEFT OUTER JOIN'으로 LEFT INCLUSIVE을 실행합니다.
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 'RIGHT OUTER JOIN'으로 RIGHT INCLUSIVE을 실행합니다.
다음은 Brazil에서 온 고객을 도시별로 묶은 뒤에, 각 도시 수에 따라 내름차순 정렬합니다. 그리고 CustomerId에 따라 오름차순으로 정렬한 3개의 결과만 요청하는 예시입니다.
같은 결과를 출력하는 서로 다른 쿼리문이 있을 수 있습니다. 같은 결과를 다른 방법으로 표현할 수 있습니다.
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;
// 여러 쿼리문을 한 번에 써보기
SQL Queries Cheat Sheet -
https://helpercodes.com/sql-query-cheatsheet-tutorial/