영상에서 사용하는 example database는 https://dev.mysql.com/doc/index-other.html 에서 world_database를 다운받았았으며 MySQL Workbench를 사용하여 실습하였다. MySQL Workbench를 사용할 때, 구문 입력 후 번개 모양 아이콘을 클릭하거나 Cmd + enter를 치면 된다!
SHOW {DATABASES | SCHEMAS}
[LIKE 'pattern' | WHERE expr]
USE database_name
SHOW TABLES
DESC table_name
SELECT select_expr
[FROM table_refernce]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}]
SELECT * TABLE table_name
SELECT column1, column2, ...
FROM table_name;
SELECT
키워드 다음에 필드 이름을 명시하면 해당 테이블의 특정 열만 가져올 수 있음SELECT column1, column2, ...
FROM table_name
WHERE condition;
OR
연산자SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
AND
연산자SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
NOT
연산자SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
한국에 있는 도시들 보기
미국에 있는 도시들 보기
한국에 있는 도시들 중에 인구 수가 1,000,000이상인 도시 보기
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
BETWEEN... AND
사용 가능SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
IN()
사용 가능한국, 미국 일본의 도시들 보기
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
%
: 무엇이든(%) 허용_
' 사용서울이라는 이름이 포함된 도시의 국가코드의 도시
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition);
SOME
은 ANY
와 동일한 의미로 사용ANY
구문은 IN
과 동일한 의미NewYork이라는 District를 가지는 도시의 인구 결과는 6가지
이 중 하나라도 초과하는 값을 가진다면 모두 출력함
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
DESC
적어줄 것ASC
(오름차순)는 default이므로 생략 가능ORDER BY
구문을 혼합해 사용하는 구문도 가능인구수로 내림차순하여 한국에 있는 도시 보기
국가 면적 크기로 내림차순하여 나라 보기
SELECT DISTINCT column1, column2, ...
FROM table_name;
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
LIMIT N
구문SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
AVG()
: 평균MIN()
: 최솟값MAX()
: 최대값COUNT()
: 행의 개수COUNT(DISTINCT)
: 중복 제외된 행의 개수STDEV()
: 표준 편차VARIANCE()
: 분산1.도시는 몇 개인가?
2. 도시들의 평균 인구 수는?
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
WHERE
과 비슷한 개념으로 조건 제한HAVING
절은 반드시 GROUP BY
절 다음에 나와야 함SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY col1, col2 WITH ROLLUP;
GROUP BY
절과 함께 WITH ROLLUP
문 사용SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;
JOIN
은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현INNER JOIN
: Returns records that have matching values in both tablesLEFT JOIN
: Returns all records from the left table, and the matched records from the right tableRIGHT JOIN
: Returns all records from the right table, and the matched records from the left tableCROSS JOIN
: Returns all records from both tablescity, country, countrylanguage 테이블 3개를 JOIN
하기
참고 자료
이수안컴퓨터연구소 MySQL 데이터베이스 한번에 끝내기 SQL Full Tutorial Course using MySQL Database