ORDER BY를 이용해 행 순서를 바꿀 수 있지만, 저장장치에 저장된 데이터의 행 순서를 변경하는 것은 아니므로 영향을 주지않는다고 기억하자!
SELECT * FROM sample.sample31;
age 열을 이용하여 정렬하기
SELECT * FROM sample31 ORDER BY age;
age 열을 이용하여 내림차순 정렬하기
SELECT * FROM sample31 ORDER BY age DESC;
age 열을 이용하여 오름차순 정렬하기
(ORDER BY는 정렬에 대해 지정하지 않으면 기본적으로 오름차순 정렬이다.)SELECT * FROM sample31 ORDER BY age ASC;
SELECT 열명 FROM 테이블명 WHERE 조건식
ORDER BY 열명1[ASC|DESC], 열명2[ASC|DESC]...
테스트를 위해 데이터를 불러오자
SELECT * FROM sample32;
a열과 b열을 같이 정렬해보자
SELECT * FROM sample32 ORDER BY a,b;
a열은 오름차순, b열은 내림차순으로 정렬해보자
SELECT * FROM sample32 ORDER BY a ASC, b DESC;
SELECT 열명 FROM 테이블명 LIMIT 행수 [OFFSET 시작행]
테스트를 위해 데이터를 불러오자
SELECT * FROM sample.sample33;
LIMIT를 이용해서 표시하고자 하는 행 수를 지정할 수 있다.
SELECT * FROM sample33 LIMIT 3;
정렬 후 LIMIT 3으로 상위 3건만 취득하기
SELECT * FROM sample33 ORDER BY no DESC LIMIT 3;
SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 위치
OFFSET은 표시하고자 하는 위치를 지정해준다.(첫번째 표시는 0으로 시작)
정렬 후 OFFSET으로 2번째에 있는 행 부터 3건만 표시
SELECT * FROM sample33 ORDER BY no LIMIT 3 OFFSET 1;
산술연산
+ - * / % MOD
테스트를 위해 데이터를 불러와주자
SELECT * FROM sample34;
SELECT 구로 연산하기
SELECT 식1,식2...FROM 테이블명
가격 x 수량으로 금액 계산하기
SELECT * , price * quantity FROM sample34;
price * quantity 식에 amount라는 별명 붙이기
SELECT * , price * quantity AS amount FROM sample34;
AS amount 에서 AS 는 생략이 가능하며 한글을 사용할 경우 더블쿼트 혹은 백쿼트로 감싸준다.
WHERE 구에서 연산하기
WHERE 구에서 금액을 계산하고 2000원 이상인 행 검색하기
SELECT *,price * quantity amount FROM sample34 WHERE price * quantity >= 2000 ;
위 식을 보게되면 WHERE구에서 amount라는 별명 대신 price * quantity 를 사용하는 것을 볼 수 있다. 위 식을 실행하게 되면 데이터는 뒤에았는 WHERE -> SELECT 순으로 데이터를 읽게 되는데 SELECT에서 지정한 amount 라는 임의의 열은 WHERE구를 읽을때는 발생하지 않은 상태이기 때문에 읽어들일 수 가 없기때문에 price * quantity를 사용해준다.
ORDER BY 구에서의 연산
ORDER BY 구에서 금액을 계산하고 오름차순으로 정렬하기
SELECT *,price * quantity amount FROM sample34 ORDER BY amount ASC;
ORDER BY 뒤에는 SELECT 구에서 지정한 별명(amount)으로 정렬이 가능하다.
이는 서버 내부처리 순서가 WHERE -> SELECT -> ORDER BY 순이기 때문에 SELECT를 지날때 생기는 별명이 ORDER BY에서 적용가능하게 되는 것이다.
NULL값은 어떻게 계산하더라도 NULL값으로 나오게 된다.
- NULL + 1 = NULL
- 1 + NULL = NULL
- 1 + 2 * NULL = NULL
- 1 / NULL = NULL
10 % 3 -> 1
MOD(10,3) -> 1
숫자의 반올림을
SELECT *, ROUND(열,자릿수) FROM 테이블명
테스트를 위해 데이터를 불러오자
SELECT * FROM sample.sample341;
ROUND(column,자릿수) 자릿수에 아무것도 넣지않으면 소수점 첫번째 자리에서 반올림된다.
SELECT *,ROUND(amount) FROM sample341;
자릿수에 1을 넣으면 소수점 두번째 자리에서 반올림된다.
SELECT *,ROUND(amount,1) FROM sample341;
자릿수에 음수를 넣게 되면 정수 자리위치에 반올림 실시
SELECT *,ROUND(amount,-2) FROM sample341;
자릿수 숫자별 위치
-3 = 100단위
-2 = 10단위
-1 = 1단위
0 = 소수점 첫째자리
1 = 소수점 둘째자리
문자열 결합 연산자

1.문자열 결합
SELECT * FROM sample35;
SELECT CONCAT(quantity,unit) FROM sample35;
CURRENT_TIMESTAMP / CURRENT_DATE INTERVAL
SQL에서의 현재 날짜 불러오기
SELECT current_timestamp()
날짜의 덧셈과 뺄셈(현재날짜 + 1일)
SELECT CURRENT_DATE+INTERVAL 1 DAY ;
날짜형 간의 뺄셈
MySQL에서는 날짜형 간의 덧셈,뺄셈에서 DATEDIFF함수를 사용한다.SELECT DATEDIFF('2021-08-27','2021-06-07');
CASE WHEN 조건식1 THEN 식1 [WHEN 조건식2 THEN 식2...] [ELSE 식3] END
WHEN 절에는 참과 거짓을 반환하는 조건식을 기술합니다.
해당 조건을 만족하여 참이 되는 경우 THEN 절에 기술한 식이 처리됩니다.
WHEN 절의 조건식을 차례로 평가해 나가다가 가장 먼저 조건을 만족한 WHEN 절과 대응하는 THEN 절 식의 처리결과를 CASE 문의 결괏값으로 반환합니다.
그 어떤 조건식도 만족하지 못한 경우에는 ELSE 절에 기술한 식이 채택됩니다.
ELSE는 생략 가능하며 생략했을 경우 'ELSE NULL'로 간주됩니다.
SELECT * FROM sample.sample37;
a열에 있는 NULL값을 0으로 변환하는 CASE식
SELECT a, CASE WHEN a IS NULL THEN 0 ELSE a END "a(null=0)" FROM sample37;
a열 값이 NULL일 때 WHEN a IS NULL 은 참이되므로 THEN 절의 '0'을 반환합니다. NULL이 아닌 경우에는 ELSE 절의 'a', 즉 a 열의 값을 반환 합니다.
NULL값을 변환하는 함수
SELECT a, COALESCE(a,0) FROM sample37;
주어진 인수 가운데 NULL이 아닌값에 대해서는 가장 먼저 지정된 인수의 값을 반환합니다. a가 NULL이 아니면 a값을 그대로 출력하고, NULL이면 0으로 출력합니다.
a열의 값이 1 = '남자'로 변환 2 = '여자', NULL = '미지정'으로 변환하는 식
SELECT a, CASE WHEN a=1 THEN '남자' WHEN a=2 THEN '여자' ELSE '미지정' END AS "성별" FROM sample37;