[SQL] MySQL 기본 문법

14842 단어 mysqlsqlmysql

자주 쓰는 SQL 기본 문법을 정리해보자!

SQL 이란 ?

  • Structured Query Language의 약자로 구조화된 질의 언어
  • 데이터를 조회, 수정, 갱신 할 수 있는 명령어
  • MySQL, Oracle, MariaDB등이 있음 ( 아래는 MySQL을 기준으로 작성 )

SELECT

  • SELECT 문은 테이블에서 원하는 정보를 불러올 때 사용하는 문법
  • 테이블의 열에 속하는 데이터를 불러온다.
  • *은 모든 것을 가져오는 것을 뜻함
SELECT col1, col2, ....
FROM table_name;

DISTINCT

  • 중복을 배제하고 고유값만을 출력하고자 할 때 사용 ( SELECT와 같이 사용 )
SELECT DISTINCT col1, col2, ...
FROM table_name;

WHERE

  • 조건을 걸어 검색하고자 할 때 사용
SELECT col1, col2, ...
FROM table
WHERE condition;
  • 비교 연산자
    • 같을 때 "="
    • 같지 않을 때 "!=", "<>"
    • 클 때 "<"
    • 크거나 같을 때 "<="

AND, OR, NOT

  • 복합 연산자
SELECT col1, col2, ...
FROM table
WHERE condition1 and condition2;

SELECT col1, col2, ....
FROM table
WHERE condition1 or condition2;

SELECT col1, col2, ...
FROM table
WHERE NOT condition;

ORDER BY

  • 결과를 오름차순이나 내림차순으로 정렬
SELECT col1, col2, ...
FROM table
ORDER BY col1 ASC|DESC;

SELECT col1, col2, ...
FROM table
ORDER BY FIELD (col1, order1, order2, ...);

일정한 순서 아닐 때

  • order by field ( 컬럼명, "순서1", "순서2", .... )
임의로 정한 순서대로 보여주려면 아래와 같이 하면 된다.

select * from testbl where sid in (3,4,1)  order by field (sid, 3, 4, 1);

LIMIT

  • 출력 결과의 갯수를 제한
SELECT * FROM table LIMIT 3;
SELECT * FROM table LIMIT 2, 3;
SELECT * FROM table LIMIT 0, 4;

NULL VALUE

  • 값이 NULL인 값을 검색
SELECT col1, col2, ...
FROM table
WHERE col_name IS NOT NULL;

SELECT col1, col2, ...
FROM table
WHERE col_name IS NULL;

IF NULL

  • 값이 NULL 인 값 변경
IFNULL(NAME, 'No name')

LIKE

  • 특정 패턴을 탐색
SELECT col1, col2, ...
FROM table
WHERE col_name LIKE pattern;
  • %, _
    • % : 0개 문자 혹은 여러 개의 문자를 의미
    • _ : 하나의 문자를 의미

IN()

  • WHERE 절 내 여러 값을 설정하고 할 때 사용
SELECT col
FROM table
WHERE col_name IN (val1, val2, ...);

BETWEEN

  • WHERE 절 내 검색 조건으로 범위를 지정하고자 할 때 사용
SELECT col1
FROM table
WHERE col_name BETWEEN val1 AND val2;

JOIN

  • 두 개나 그 이상의 테이블의 행을 서로 결합하고자 할 때
  • INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 이 존재
SELECT col1
FROM table1 INNER JOIN table2
ON table1.col = table2.col;

SELECT col1
FROM table1 LEFT INNER JOIN table2
ON table1.col = table2.col;

SELECT col1
FROM table1 RIGHT JOIN table2
ON table1.col = table2.col;

SELECT col1
FROM table1 FULL OUTER JOIN table2 # 쉽게말해 합집합, A테이블이 가지고 있는 데이터 , B테이블이 가지고있는 데이터 모두 검색
ON table1.col = table2.col;

SELECT
A.NAME, --A테이블의 NAME조회
B.AGE --B테이블의 AGE조회
FROM EX_TABLE A
CROSS JOIN JOIN_TABLE B # 모든 경우의 수를 전부 표현해주는 방식

UNION

  • SELECT의 컬럼 리스트를 기준으로 두 개 이상의 질의 결과를 하나의 테이블로 합치고자 할 때
SELECT col FROM table1
UNION
SELECT col FROM table2;
  • 주의 사항
    • UNION은 기본적으로 중복값을 제거함, 제거하고 싶지 않을 때는 UNION ALL을 사용해야 한다.

MIN, MAX, ABS, COUNT, AVG, SUM

SELECT MIN (col) FROM table;
SELECT MAX (col) FROM table;
SELECT ABS (col) FROM table;
SELECT COUNT (col) FROM table;
SELECT AVG (col) FROM table;
SELECT SUM (col) FROM table;

GROUP BY

특정 컬럼을 그룹화 하는 GROUP BY

  • 집계함수와 함께 사용되어, 결과를 지정한 칼럼에 따라 그룹으로 묶고자 할 때
SELECT col1
FROM table
WHERE condition
GROUP BY col_name;

HAVING

특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING

  • WHERE 조건을 걸 수 없는 집계함수에 조건을 걸고자 할 때 사용
SELECT col1
FROM table
WHERE condition
GROUP BY col_name
HAVING condition;

CONCAT

  • 여러 문자열을 하나로 합치고자 할 때 사용
SELECT CONCAT(str1, str2, str3, ...);

ROUND(), TRUNC()

  • ROUND는 반올림, TRUNC는 버림
SELECT ROUND|TRUNC (val, digit)
FROM table

참고 : http://bigdata.dongguk.ac.kr/lectures/DB/_book/%EC%97%AC%EB%9F%AC-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%9D%98-%EA%B2%B0%ED%95%A9%EC%9D%84-%ED%86%B5%ED%95%9C-%EA%B2%80%EC%83%89-join-%EA%B2%80%EC%83%89.html

좋은 웹페이지 즐겨찾기