📕 들어가며

이번 글에서는

ORDER BY, LIMIT, DISTINCT 문법에 대해서 알아보고

관련된 문제를 풀어보겠습니다.











📕 데이터 준비

CREATE DATABASE testdb;

USE testdb;

DROP TABLE IF EXISTS member;
DROP TABLE IF EXISTS product;

CREATE TABLE member(  
    id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY,  
    member_id VARCHAR(30),  
    name VARCHAR(10),  
    address VARCHAR(10),  
    phone_number VARCHAR(20),  
    create_date datetime,  
    update_date datetime  
);

CREATE TABLE product(  
    id BIGINT  NOT NULL AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(20),  
    qty INT,  
    price INT,  
    create_date datetime,  
    update_date datetime  
);


INSERT INTO `testdb`.`member`
( `member_id`, `name`, `address`, `phone_number`, `create_date`, `update_date`)
VALUES
('member1', 'A', 'Seoul', '010-1111-1111', NOW(), NOW()),
('member2', 'B', 'Seoul', '010-1111-2222', NOW(), NOW()),
('member3', 'C', 'Daegu', '010-1111-3333', NOW(), NOW()),
('member4', 'D', 'Daegu', '010-1111-4444', NOW(), NOW()),
('member5', 'D', 'Daegeon', '010-1111-5555', NOW(), NOW()),
('member6', 'E', 'Daegeon', '010-2222-1111', NOW(), NOW()),
('member7', 'F', 'Daegeon', '010-2222-1111', NOW(), NOW()),
('member8', 'F', 'Seoul', '010-2222-2222', NOW(), NOW());


INSERT INTO `testdb`.`product`
(`name`, `qty`, `price`, `create_date`, `update_date`)
VALUES 
('carrot', 10, 1000, NOW(), NOW()),
('apple', 100, 500, NOW(), NOW()),
('pear', 30, 800, NOW(), NOW()),
('orange', 50, 800, NOW(), NOW()),
('honey', 10, 3000, NOW(), NOW()),
('cabage', 15, 3000, NOW(), NOW()),
('pine', 20, 5000, NOW(), NOW()),
('mellon', 10, 10000, NOW(), NOW());






📕 기초지식


1. ✏️ ORDER BY

SQL에서 정렬을 하기 위해서는
FROM 절 뒤에 

ORDER BY '정렬 기준 컬럼' [ ASC | DESC ] 

를 붙여주면 됩니다. 

기본적으로 오름차순 정렬이 되며 
내림차순으로 정렬하고 싶다면 DESC를 붙여주면 됩니다.)
SELECT * FROM '테이블' ORDER BY '기준 컬럼' DESC;











2. ✏️ LIMIT

행 개수를 제한하기 위해서는 
LIMIT 구문을 이용할 수 있습니다. 

FROM 절 뒤에 LIMIT (숫자) 를 붙여주면 됩니다.)
# 위에서 5개만 출력
LIMIT 5

# 위에서 3번째 데이터부터 2개
LIMIT 3, 2











3. ✏️ DISTINCT

SELECT 문에서
중복을 제거할 컬럼명 앞에 
DISTINCT를 붙여주면

해당 컬럼 값 중에서 중복된 데이터를 제거해줍니다.)
SELECT DISTINCT (중복제거할 컬럼) FROM (테이블);
















📕 WHERE절 연습 문제

문제 1

member 테이블에서 address의 역순으로 모든 데이터를 조회합니다.

문제 1 정답











문제 2

qty가 20이상인 product 중 price의 역순으로 3개만 가져옵니다.

문제 2 정답











문제 3

member 테이블에서 중복을 제거한 address를 가져옵니다.

문제 3 정답











문제 4

address 가 'Daegeon'인 member를 name 순서대로 정렬합니다.

문제 4 정답
































문제1 정답

SELECT 
    * 
FROM 
    member
ORDER BY address DESC;

돌아가기





















문제2 정답

SELECT 
    *
FROM 
    product
WHERE 
    qty >= 20
ORDER BY price DESC
LIMIT 3;

돌아가기





















문제3 정답

SELECT 
    DISTINCT address
FROM 
    member;

돌아가기





















문제4 정답

SELECT 
    *
FROM
    member
WHERE 
    address = 'Daegeon'
ORDER BY name;

돌아가기

profile
1.01^365

0개의 댓글