[MySQL] SQL문 1. SELECT문

SELECT

데이터베이스 내의 테이블에서 원하는 정보를 추출하는 명령

형식

SELECT select_expr
    [FROM table]
    [WHERE 조건]
    [GROUP BY {col_name | expr | position}]
    ...

SELECT FROM

select * from titles

  • *: 모든 것을 선택한다는 의미
  • titles 테이블에 있는 모든 내용을 가져오라는 SQL문
  • employees.titles로도 표기 가능 (employees데이터 베이스의 title 테이블을 의미)

SELECT first_name FROM employees;

  • employees 테이블의 first_name 열을 가져오라는 의미
  • 여러개의 열을 불러오고 싶은 경우 ,를 사용하여 선택 가능

SELECT first_name AS 이름

  • 열 이름에 별칭을 붙이고 싶을 경우 AS 별칭 형식으로 사용할 수 있다.

WHERE

SELECT 필드이름 FROM 테이블이름 WHERE 조건식

  • WHERE: 조건을 지정하는 문법

SELECT * FROM usertbl WHERE birthYear >= 1970 AND height >= 182

  • 1970년 이후 출생하고 신장이 182 이상인 사람을 조회하는 쿼리문
  • 조건연산자(=, >, < 등)와 관계연산자(AND, OR, NOT 등)을 조합해 다양한 조건의 쿼리문 생성 가능

SELECT * FROM usertbl WHERE height between 180 AND 183

  • Between ~ AND를 이용해 키가 180~183 사이인 사람을 조회할 수 있다.
  • 연속적인 값에만 적용할 수 있다.

SELECT * FROM usertbl WHERE addr IN ('경남', '경북');

  • IN (~)를 통해 이산적인 값을 조회할 수 있다.

SELECT * FROM usertbl WHERE name like '김%'

  • like ~%를 통해 문자열의 내용과 일치하는 데이터를 조회한다.

ANY/ALLOW/SOME, 서브쿼리

SELECT * FROM usertbl WHERE height > (SELECT height From usertbl WHERE name='김경호')

  • 서브쿼리: 쿼리문 안에 쿼리문이 들어있는 형태
  • 데이터들 중 ‘김경호’이름을 가진 사람의 키 데이터를 조회해 해당 값보다 큰 키를 가진 사람을 모두 조회한다.

SELECT * FROM usertbl WHERE height >= ANY (SELECT height From usertbl WHERE addr='경남')

  • 경남 사람들보다 키가 큰 사람을 출력하는 쿼리문
  • ANY: 조회 결과가 2개 이상일 경우 사용하는 문법
  • ALL: 조회 결과가 2개 이상일 경우, 해당 조회 결과들보다 더 큰 사람만 출력
  • ANY와 ALL: 여러개의 결과값중 하나의 결과값만으로 조건이 만족되면 ANY 사용
    • 모든 결과값에 대해 조건이 만족해야할 경우 ALL 사용

ORDER BY

SELECT name, mDate FROM usertbl ORDER BY mDate;

  • ORDER BY: 출력되는 결과의 순서를 조절하는 구문
  • 가입한 순서대로 회원을 출력한다(오름차순)

SELECT name, mDate FROM usertbl ORDER BY mDate DESC;

  • 최근 가입한 순서대로 출력
  • 결과를 내림차 순으로 정렬해 출력한다.

DISTINCT

SELECT DISTINCT addr From usertbl;

  • 중복된 것들을 하나만 남길 때 사용하는 구문

GROUP BY와 집계함수

SELECT userID, SUM(amount) FROM buytbl GROUP BY userID;

  • SUM(): 집계함수 = 주로 GROUP BY로 데이터를 그룹화 해주고 사용
  • userID별로 구매한 물품의 개수를 합쳐 출력하는 구문
  • SUM(price*amount)을 통해 총 구매 액수도 계산 가능
  • 집계함수 종류: AVG(), MIN(), MAX(), COUNT(), STDEV(), VAR_SAMP()

HAVING

SELECT userID FROM buytbl GROUP BY userID HAVING SUM(amount*price) > 1000;

  • 집계함수는 WHERE절에서 사용할 수 없어 사용되는 구문
  • 반드시 GROUP BY절 이후 HAVING절이 나와야한다.
  • 총 구입 액수가 1000원이 넘는 사용자만 조회

ROLLUP

SELECT num, groupName, SUM(price*amount) FROM buytbl group by groupName, num WITH rollup;

  • 분류별로 함계와 총합이 필요할 경우 사용되는 구문

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus