SQL 기본 질의문

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


데이터 조회를 위한 SQL 문법

우선 MySQL 환경과 MySQLWorkbench 환경은 아래와 같다.

MySQL 8.0.42-arm64
MySQLWorkbench 8.0.42-arm64

SELECT, FROM

데이터베이스에서 원하는 정보를 가져오는 가장 기본적인 방법

  • SELECT [컬럼명]: 조회할 컬럼을 지정. 모든 컬럼을 보고 싶다면 *을 사용
  • FROM [테이블명]: 데이터를 가져올 테이블을 지정
-- 고객 테이블의 모든 컬럼 데이터를 가져온다 
SELECT * from 고객;

컬럼 별칭(Alias) 사용하기 > as

조회된 컬럼의 이름을 임시로 바꾸고 싶을때 as 키워드를 사용한다. 별칭 내 공백이나 특수문자가 존재한다면 '' 혹은 ""으로 감싸준다.

-- 아래 모두 가능
SELECT 마일리지 as m FROM 고객;
SELECT 마일리지 m FROM 고객;
SELECT 마일리지 '마일 리지' FROM 고객;

계산식이 포함된 SQL문

SELECT 절에는 컬럼명 외에도 계산식이나 함수 사용이 가능

-- 문제: 고객 테이블에서 고객번호, 마일리지, 10% 인상된 마일리지로 조회
-- 이때 마일리지는 ‘포인트’ 컬럼명 변경
-- 인상된 마일리지는 ‘10%인상된 마일리지’로 별명을 불임
SELECT 고객번호, 마일리지 as 포인트, 마일리지*1.1 as '10%인상된 마일리지' FROM 고객;

WHERE

특정 조건에 만족하는 데이터만 필터링 조회

-- 문제: 고객 테이블에서 마일리지가 100,000점 이상인 고객의 고객번호, 마일리지를 조회
SELECT 고객번호, 마일리지 FROM 고객 WHERE 마일리지 >= 100000

ORDER BY

조회된 결과를 정렬

  • ASC: 오름차순(작은 값부터 정렬, 기본값임)
  • DESC: 내림차순(큰 값부터)
-- 문제: 서울특별시'에 사는 고객들의 고객번호, 마일리지를 조회
-- 결과는 마일리지가 많은 순서로
SELECT 고객번호, 마일리지 FROM 고객 WHERE 도시 = "서울특별시" ORDER BY 마일리지 desc
SELECT 고객번호, 마일리지 FROM 고객 WHERE 도시 = "서울특별시" ORDER BY 2 desc

위와 같이 ORDER BY절에는 컬럼명 대신 별칭이나 SELECT 절에서의 컬럼순서를 사용 가능!

LIMIT n

반환되는 행의 수를 제한. ORDER BY와 함께 상위/하위 n개를 조회하는 데 사용

-- 문제1: 고객 테이블에서 첫 3개의 고객 정보를 조회
SELECT * FROM 고객 LIMIT 3

-- 문제2: 마일리지가 가장 많은 상위 3명의 고객 정보를 조회
SELECT * FROM 고객 ORDER BY 마일리지 desc LIMIT 3

-- 문제3: 마일리지가 가장 적은 하위 3명의 고객 정보를 조회
SELECT * FROM 고객 ORDER BY 마일리지 asc LIMIT 3
SELECT * FROM 고객 ORDER BY 마일리지 LIMIT 3

DISDICNT

특정 컬럼의 값에서 중복을 제거하고 고유한 값을 보여줌

-- 문제: 고객 테이블에 등록된 고객들이 사는 도시를 중복 없이 모두 보여주기
SELECT DISTINCT 도시 FROM 고객;