[SQL] DML(1) - SELECT 기본, Sorting data(ORDER BY)

문지은·2023년 4월 8일
0

Database with SQLite

목록 보기
3/7
post-thumbnail

DML을 통해 데이터를 조작(CRUD)하는 방법을 알아보자.
이번 포스팅에서는 SELECT 문을 사용하여 간단하게 단일 테이블에서 데이터를 조회하고,
ORDER BY 절을 사용하여 쿼리의 결과를 정렬하는 방법을 알아보겠다.

사전 준비

기본 세팅

다음은 이번 게시물에서 실습 예제에서 사용한 파일명이니 게시물을 읽을 때 참고하세요!

  • sql 파일 : DML.sql
    • 생성한 테이블
CREATE TABLE users (
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
age INTEGER NOT NULL,
country TEXT NOT NULL,
phone TEXT NOT NULL,
balance INTEGER NOT NULL
);
  • 데이터베이스 파일 : mydb.sqlite3
  • csv 파일 : users.csv

SQLite3

  • SQLite3는 SQL 문 및 commands 을 사용하여 SQLite 데이터베이스와 상호 작용할 수 있는 간단한 command-line tool이다.
    • 실행 화면 예시
  • SQLite3를 이용하여 데이터 조작을 할 예정이기 때문에 간단한 사용 방법을 알아야 한다.

SQLite3 사용하기

  • 시작하기
 $ sqlite3
  • 데이터베이스 파일 열기
sqlite> .open mydb.sqlite3
  • 시작하면서 바로 데이터베이스 열기
$ sqlite3 mydb.sqlite3
  • sqlite3 종료하기
sqlite> .exit
  • TIP! 명령어를 잘못 입력했을 때 아래와 같이 다시 입력도 안되고 종료도 안되는 경우가 있다. 그럴 땐 세미콜론(;)을 입력하고 엔터를 치면 다시 처음으로 돌아갈 수 있다.
sqlite> q
...> exit
...> .exit
...> quit
...> .quit

CSV 파일을 SQLite 테이블로 가져오기

  • 데이터베이스 파일 열기
$ sqlite3 mydb.sqlite3
  • 모드(.mode)를 csv로 설정
sqlite> .mode csv
  • .import 명령어를 사용하여 csv 데이터를 테이블로 가져오기
sqlite> .import users.csv users

이번에는 SELECT 문을 사용하여 간단하게 단일 테이블에서 데이터 조회하는 방법을 알아보겠다.

sqlite3 tool에서도 SQL 문을 사용할 수 있지만, 실습의 편의와 명령어 기록을 위해 sql 확장자 파일에서 진행하였다.

SELECT statement

SELECT column1, column2 FROM table_name;
  • 특정 테이블에서 데이터를 조회하기 위해 사용한다.
  1. SELECT 절에서 컬럼 또는 쉼표로 구분된 컬럼 목록을 지정
  2. FROM 절(clause)에서 데이터를 가져올 테이블을 지정
  • SELECT 문은 SQLite에서 가장 복잡한 문으로 다양한 절과 함께 사용할 수 있다.
    • ORDER BY, DISTINCT, WHERE, LIMIT, LIKE, GROUP BY

SELECT 예제

  • 테이블 명에 있는 모든(*) 컬럼 조회 ( 모든 데이터 조회 )
    • 모든 컬럼에 대한 shorthand 인 *(asterisk) 사용
SELECT * FROM users;
  • 이름과 나이 조회하기
SELECT first_name, age FROM users;
  • rowid, 이름 조회하기
SELECT rowid, first_name FROM users;

ORDER BY clause

SELECT select_list FROM table_name
ORDER BY column_1 ASC, column_2 DESC;
  • SELECT 문에 추가하여 결과를 정렬
  • ORDER BY 절은 FROM 절 뒤에 위치한다.
  • 하나 이상의 컬럼을 기준으로 결과를 오름차순, 내림차순으로 정렬할 수 있다.
  • 이를 위해 ORDER BY 절 다음에 ‘ASC’ 또는 ‘DESC’ 키워드 사용
    • ASC : 오름차순 (기본 값)
    • DESC : 내림차순

ORDER BY 실습

  • 이름과 나이를 나이가 어린 순서대로 조회하기
SELECT first_name, age FROM users ORDER BY age ASC;
SELECT first_name, age FROM users ORDER BY age;
  • 이름과 나이를 나이가 많은 순서대로 조회하기
SELECT first_name, age FROM users ORDER BY age DESC;
  • 이름, 나이, 계좌 잔고를 나이가 어린 순으로, 만약 같은 나이라면 계좌 잔고가 많은 순으로 정렬해서 조회하기
    • ORDER BY 절은 하나 이상의 컬럼을 정렬할 경우 첫 번째 열을 사용하여 행을 정렬하고, 그 다음 두번째 컬럼을 사용하여 정렬되어 있는 행을 정렬
    • 즉, 먼저 age를 기준으로 먼저 오름차순 정렬하고, 이 결과를 balance를 기준으로 내림차순으로 정렬한 것
SELECT first_name, age, balance FROM users
ORDER BY age, balance DESC;

📍 요약

-- 모든 데이터 조회하기
SELECT * FROM users;

-- 이름, 나이 조회하기
SELECT first_name, age FROM users;

-- rowid, first_name 조회하기
SELECT rowid, first_name FROM users;

-- 나이가 어린 순서대로 이름과 나이 조회하기
SELECT first_name, age FROM users ORDER BY age ASC;
SELECT first_name, age FROM users ORDER BY age;

-- 나이가 많은 순서대로 이름과 나이 조회하기
SELECT first_name, age FROM users ORDER BY age DESC;

-- 이름, 나이, 계좌 잔고를 나이가 어린 순으로, 
-- 만약 같은 나이라면 계좌 잔고가 많은 순으로 정렬해서 조회하기
SELECT first_name, age, balance FROM users
ORDER BY age, balance DESC;
profile
코드로 꿈을 펼치는 개발자의 이야기, 노력과 열정이 가득한 곳 🌈

0개의 댓글