ORDER BY
ORDER BY는 컬럼을 기준으로 정렬을 할 수 있도록 해주며,
ORDER BY 컬럼명 ASC (오름차순)
ORDER BY 컬럼명 DESC (내림차순) 으로 사용할 수 있다.
ORDER BY 컬럼명 ASC
SELECT Code, Name, Population
FROM country WHERE Population <> 0
ORDER BY Population ASC;
1. contry 테이블 중 Code, Name, Pop 컬럼정보를 보고 싶은데 ~
2. 대신 Pop값이 0이 아니여야 해
3. 그리고 Pop값 기준으로 오름차순 정렬 해 줘 ~
ORDER BY 컬럼명 DESC
SELECT Code, Name, Population
FROM country WHERE Population <> 0
ORDER BY Population DESC;
마찬가지~
1. contry 테이블 중 Code, Name, Pop 컬럼정보를 보고 싶은데 ~
2. 대신 Pop값이 0이 아니여야 해
3. 그리고 Pop값 기준으로 내림차순 정렬 해 줘 ~
이스케이프 문자 ``
MYSQL에서는 작은 따옴표는 문자열을 뜻하기때문에 다음과 같은 명령문에서 ORDER BY 다음으로 '인구밀도'라고
입력하게 되면 원하는 결과값을 얻을 수 없다.
SELECT Name, Population, SurfaceArea, round(Population / SurfaceArea, 2) '인구밀도'
FROM country WHERE Population <> 0
ORDER BY `인구밀도` DESC;
여기서 작은 따옴표 대신 `` 이스케이프 문자를 사용하게 된다면 원하는 결과값을 얻을 수 있다.
이스케이프 문자 안에 입력된 정보는 그 정보 이름 자체를 나타내기에 원하는 값을 얻을 수 있게 된다.
예시로
SELECT * FROM my_table WHERE name = 'John''s';
이러한 쿼리문이 있다면 문법 특성상 John과 s가 따로 구분되어 인지할 것이다.
하지만 `John' 's`로 입력하게 된다면 작은 따옴표를 포함한 이름으로 인지하게 된다.
(문자열 양쪽을 이스케이프문으로 감쌋음)
LIMIT, OFFSET
조회결과 범위를 제한해주는 LIMIT문과
조회결과 일정범위를 건너뛰어주는 OFFSET문을 활용한다면
원하는 조회값에 더 손 쉽게 접근할 수 있다.
SELECT 컬럼명 FROM 테이블명 ORDER BY 기준 컬럼명 DESC LIMIT 정수 OFFSET 정수
식으로 사용가능하다.
LIMIT
-- Continent 'Asia' 국가 중 면적이 좁은 탑 10개 국가
SELECT Continent, Name, SurfaceArea FROM country
WHERE Continent = 'Asia'
ORDER BY SurfaceArea LIMIT 10;
1. country 테이블 중에서 Continent, Name, SurfaceArea 보고 싶은데 ~
2. 대신 Asia 대륙인 정보들만 !
3. 그 정보들 SurfaceArea 기준으로 오름차순 하고(ASC 생략가능) 10개만 보여줘 !
OFFSET
SELECT Name, Population FROM country ORDER BY Population DESC LIMIT 10 OFFSET 20;
1. country 테이블에서 ~ Name, Pop 컬럼 보고싶은데,
2. Pop컬럼 값 기준으로 내림차순 정렬 해 줘~
3. 근데 상위 20개 행은 건너뛴 후 10개 행만 보고싶어~
패턴 매칭
패턴 매칭은 관계연산자와 맥락은 비슷하지만 좀 더 유연하게 정보를 찾아준다.
사용법은 WHERE절 컬럼명 LIKE '%Korea%';
이렇게 사용하면 조회값 중 Korea라는 단어가 들어간 모든 값을 조회 해준다.
글자 수를 기준으로 조회도 가능하다.
사용법은 WHERE절 컬럼명 LIKE '______';
LIKE에 언더바를 원하는 글자 수 개수만큼 입력하면 된다.
나는 언더바 6개를 입력하였고 6글자인 정보들이 조회될 것이다.
-- 패턴 매칭 (비슷한 것을 찾아주는)
SELECT * FROM country WHERE Name LIKE '%Korea%';
-- 국가명이 'K'로 시작하는 국가
SELECT Name FROM country WHERE Name LIKE 'K%';
-- 국가명이 'K'로 끝나는 국가
SELECT Name FROM country WHERE Name LIKE '%K';
-- 국가명이 'K'가 포함되어 있는 국가
SELECT Name FROM country WHERE Name LIKE '%K%';
-- 국가명이 'A'로 시작하고 'A'로 끝나는 국가
SELECT Name FROM country WHERE Name LIKE 'A%A';
-- 국가명이 5글자인 국가
SELECT Name FROM country WHERE Name LIKE '_____';
-- 국가명이 'A'로 시작하고 'A'로 끝나는 국가 (6글자)
SELECT Name FROM country WHERE Name LIKE 'A%A' AND Name LIKE '______';
SELECT Name FROM country WHERE Name LIKE 'A____A';
'SQL' 카테고리의 다른 글
[MYSQL] CREATE, INSERT INTO, DELETE, UPDATE, ALTER, FOREIGN KEY(외래키) (1) | 2023.01.01 |
---|---|
[MYSQL]RDBMS, SQL 기본 명령문 (SELECT, DESC, AS), NULL특징 (0) | 2023.01.01 |