일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준 13023번
- 2275번
- 자바스크립트
- JavaScript
- 백준 2638번
- 1303번
- level1
- 기지국 설치 자바스크립트
- 백준 1068
- 프로그래머스
- 알고리즘 수업-깊이 우선 탐색1
- 부녀회장이 될 테야
- 알고리즘
- 힙 자바스크립트
- 1389번 케빈 베이컨의 6단계 법칙
- dfs
- 백준
- 1937번 욕심쟁이 판다
- 13023번 ABCDE
- 리덕스
- level0
- ssh
- Java
- Redux
- 24480번
- 우선순위 큐 자바스크립트
- 기지국 설치 js
- 백준 1068번 트리
- React
- 2638번 치즈
- Today
- Total
코딩왕랄프👊🏻
[SQL] SQL 정리 본문
SQL?
Structured Query Language
데이터베이스 접근, 작동을 용이하게 함.
# SELECT
- 데이타베이스로 부터 데이터를 select
SELECT column1, column2 FROM table_name;
- DISTINCT : 하나의 distinct, different 값만 리턴.
SELECT DISTINCT column1, column2, ...
FROM table_name;
SELECT COUNT(DISTINCT Country) FROM Customers;
# WHERE- 특정 조건에 충족하는 record만 filter
SELECT column1, column2, ...
FROM table_name
WHERE condition;
# Operator
- AND, OR, NOT
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition1 AND condition2 OR condition3 ...;
# Operator
- AND, OR, NOT
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition1 AND condition2 OR condition3 ...;
# ORDER BY
- 오름차순, 내림차순으로 정렬
- default : 오름차순
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
# ORDER BY
- 오름차순, 내림차순으로 정렬
- default : 오름차순
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
# INSERT INTO
- 테이블에 새로운 record 삽입
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
# NULL
- no value
SELECT column_names
FROM table_name
WHERE column_name IS NULL;
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
# UPDATE
- 존재하는 table의 record 수정
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
# DELETE
- 존재하는 table의 record 삭제
DELETE FROM table_name WHERE condition;
# SELECT TOP
- 반환하는 record의 수를 지정
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
# MIN(), MAX()
- MIN () : 선택된 column 값들 중 가장 작은 값 리턴
- MAX () : 선택된 column 값들 중 가장 큰 값 리턴
SELECT MIN(column_name)
FROM table_name
WHERE condition;
# COUNT(), AVG(), SUM()
- COUNT() : 특정 criterion에 일치하는 row의 개수 리턴
- AVG() : numeric column의 평균 값 리턴
- SUM() : numeric column의 전체 합 리턴
SELECT COUNT(column_name), AVG(column_name), SUM(column_name)
FROM table_name
WHERE condition;
# LIKE
- column에서 특정 패턴에 대해 search하기 위해 WHERE clause에 사용
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
# Wildcard Characters
- string에서 character들을 substitute
SELECT * FROM Customers
WHERE City LIKE 'ber%';
=> "ber"로 시작하는 City의 모든 customer들을 select
SELECT * FROM Customers
WHERE City LIKE '%es%';
=> "es"를 포함하는 City의 모든 customer들을 select
* 이 외에도 여러 characters를 사용하는 방법들이 있다.
# IN
- WHERE Clause내에 여러 값들을 지정하게 함.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
# BETWEEN
- 주어진 range내에 값들을 select
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
# Aliases
- table, column에게 temporary한 이름을 부여함
SELECT column_name AS alias_name
FROM table_name;
SELECT column_name(s)
FROM table_name AS alias_name;
# JOIN
- 여러개의 table로 부터 row들을 combine
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
# INNER JOIN
- 두 table내에 같은 값을 가진 records를 select
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
# LEFT JOIN
- 왼쪽 table로 부터의 모든 records를 반환
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
# RIGHT JOIN
- 오른쪽 table로 부터의 모든 records를 반환
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
# FULL OUTER JOIN
- 왼쪽, 오른쪽 table records 모두 match하는 records 리턴
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
# Self Join
- regular join이지만, table은 그 자체로 join 됨.
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
# UNION
- SELECT 구문의 result-set을 결합
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
# GROUP BY
- summary rows에 같은 값을 갖는 row들을 그룹핑
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
# HAVING
- WHERE이 결합된 function에 사용되지 않으므로, HAVING이 SQL에 더해짐.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
# EXISTS
- subquery내에 해당 record가 존재하는지 test
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
# ANY, ALL Operator
- ANY : subquery 값들 중 어느 것이 조건 만족한다면 TRUE
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition);
- ALL : subquery 값들이 모두 조건을 만족해야 TRUE
SELECT ALL column_name(s)
FROM table_name
WHERE condition;
# SELECT INTO
- 새로운 table의 모든 column들을 copy
SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;
# INSERT INTO
- 한 table로 부터 data를 copy하여 다른 table에 insert
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
# CASE
- 조건을 통과하고, 첫 조건이 충족되면 값 return 하는 형식.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
# NULL Functions
- IFNULL() : 표현이 null이면 alternative 값을 리턴
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
- COALESCE()
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
- ISNULL() : 표현이 null이면 alternative 값을 리턴하게 만듦
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
- IsNull() : 표현이 null이면 TRUE, 그렇지 않으면 FALSE 리턴
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
# Comment
'--'
--Select all:
SELECT * FROM Customers;