SQL 기본 문법 정리
가장 간단하고 빠르게 기본적인 SQL문을 습득할 수 있게 정리해보았다.
RIVER TABLE
Column | Type | DES |
---|---|---|
id | VARCHAR | 아이디 |
password | VARCHAR | 비밀번호 |
value | VARCHAR | 조건 |
SQL 문법 정리
Select
Select문은 조회
할 때 사용된다.
- Column에 있는
전체
요소들을 출력하라SELECT * FROM RIVER;
- Column에 있는
id
요소만 출력하라SELECT id FROM RIVER;
정렬
정렬은 ORDER BY 기준 (ASC/DESC)로 선언하면 된다.
오름차순 정렬은 작은 값부터 시작하여 큰 값으로 정렬되는 것을 의미한다.
- password를 출력하는 대신 id 값을 기준으로
오름차순
으로 정렬하라SELECT password FROM RIVER ODER BY ASC;
- password를 출력하는 대신 id 값을 기준으로
내림차순
으로 정렬하라SELECT password FROM RIVER ODER BY DESC;
조건
- value의 값이 t인 id, password를 출력하라
SELECT id,password FROM RIVER WHERE value='t';
출력 갯수 지정
limit 페이지 당 개수 offset 데이터를 가져올 위치
offset = (페이지번호-1)*페이지당 갯수
limit 10 offset 0 : 1~10까지 반환
limit 10 offset 10 : 11~20까지 반환
max,min
- id를 오름차순으로 출력하는 대신 출력되는 암호 중 상위 1개만 출력하라.
SELECT password FROM RIVER ORDER BY id LIMIT 1; SELECT MIN(id) FROM RIVER;
- id를 내림차순으로 출력하는 대신 출력되는 암호 중 상위 1개만 출력하라.
SELECT password FROM RIVER ODER BY id DESC LIMIT 1; SELECT MAX(id) FROM RIVER;
count
Null 데이터는 제외하고 계산
한다. 데이터 갯수를 출력할 때 사용한다.
- 전체 데이터의 개수를 출력하라.
SELECT COUNT(*) FROM RIVER;
중복을 제거하기 위해서는 DISTINCT
명령어를 사용한다.
- 중복을 제거한 id 데이터의 개수를 출력하라.
SELECT COUNT(DISTINCT id) FROM RIVER;
group by
group by는 데이터를 원하는 그룹
으로 나누어 사용할 수 있다. group by에서 조건을 주기 위해 having
을 사용한다.
- value가 같은게 몇개 있는지 조회해서 개수를 출력하라.
SELECT value,COUNT(*) FROM RIVER GROUP BY value;
- value가 같은게 몇개 있는지 조회해서 출력하라(단, 1개는 제외시킨다.)
SELECT value,COUNT(*) FROM RIVER GROUP BY value HAVING COUNT(value)>1;
hour()
mysql> SELECT HOUR('10:05:03');
-> 10
mysql> SELECT HOUR('272:59:59');
-> 272
시간을 기준으로 출력하고 싶을 때 사용하는 함수이다.
- value가 12~2시까지 데이터의 삽입의 개수를 출력하라.
SELECT hour(value),COUNT(*) FROM RIVER WHERE hour(value) BETWEEN 12 AND 2 GROUP BY hour(value);
count는 0의 개수 즉 null의 개수는 세지않는점이 있습니다. 하지만 우리는 문제에서 0의 개수도 출력하라는 문제가 나오게 된다면 어떤 풀이를 가지고 풀어야할까요?
- value가 0~23시까지 전체 데이터 삽입 시간대의 개수들을 출력하라.
SET @hour:=-1;
SELECT (@hour :=@hour+1) AS HOUR,
(SELECT COUNT(*) FROM RIVER WHERE HOUR(value) = @hour) FROM RIVER WHERE @hour<23;
SQL에서의 변수 선언은 SET @
으로 할 수 있다. left join이 활용되었는데 이후에 좀 더 자세히 정리하도록 하겠다.
IS NULL
말그대로 데이터의 값이 없을 경우에는 null
이 삽입되어 있다.
- value에 값이 들어가지 않은 데이터를 출력하라.
SELECT value FROM RIVER WHERE value IS NULL;
반대로 값이 있는 것만 출력하게 하려면
IS NOT NULL
을 사용해주면 된다.
IFNULL(A,B)
A가 NULL 값이면, B를 아니라면 A를 반환한다.
SELECT IFNULL(value,'no value') FROM RIVER;