[SQL] Basic Syntax
Basic Syntax of SQL
SQL: Structured Query Language
-
대소문자 구분 X
-
구문 끝에
;(Semicolon)을 붙여준다.여러개의 SQL 구문으로 서버에 동시에 요청할 때 각 구문을 분리하기 위해서 필요
SELECT
Column(열) 선택
SELECT <ColName>, <ColName>
FROM <TableName>;
FROM 뒤에 명시한 Table에서 SELECT 뒤에 입력한 Column(열) 데이터를 가져온다. <TableName.ColName> 으로 Column 을 구체적으로 명시할 수도 있다.
SELECT * FROM <TableName>;
Table에서 모든 Column(열) 데이터를 가져온다.
Union
Column(열) 데이터를 합쳐준다.
SELECT col1, col2 FROM Table1
UNION
SELECT col3, col4 FROM Table2;
Table1 의 col1, Table2 의 col3 를 합쳐서 col1 이라는 이름을 가진 Column(열) 데이터와
Table1 의 col2 과 Table2 의 col4 을 합쳐서 col2 이라는 이름을 가진 Column(열) 데이터를 가져온다.
-
UNION은 default 로 중복값을 제거한다.
중복값 제거를 원치 않을 경우UNION ALL로 코드를 작성한다. -
결과의 Column(열) 이름은 첫번째
SELECT구문으로 선택된 Column(열) 이름으로 설정된다. -
SELECT,UNION으로 선택된 Column(열)은 유사한 데이터 타입이어야한다.
AS (Aliase)
임시로 열의 이름을 새로 할당해주는 명령어
SELECT <ColName> AS <NewName>, <ColName> AS <NewName>, ...
FROM <TableName>
WHERE <Condition>;
Table1 에서 condition1의 조건에 해당하는 col1과 col2를 가져와서
col1 에는 new_col1 을, col2 에는 new_col2 라는 이름을 임시로 할당한다.
SUM / AVG / MAX / MIN / COUNT
-
SUM : Column(열) 데이터를 모두 더한값을 반환
-
AVG : Column(열) 데이터의 평균 반환
-
MAX : Column(열) 데이터의 최댓값 반환
-
MIN : Column(열) 데이터의 최솟값 반환
-
COUNT : Column(열) 데이터의 갯수 반환
SELECT FUNCTION(col1) AS Result
FROM Table1
WHERE condition1;
FUNCTION에는 SUM / AVG / MAX / MIN / COUNT 가 대입된다.
Table1 에서 condition1 의 조건에 해당하는 col1 을 가져와서 FUNCTION에 의해 연산되고, Result 라는 임시 Column(열) 이름을 가진 데이터로 반환된다.
DISTINCT
중복값 제거
Column(열) 데이터를 중복값 없이 가져온다.
SELECT DISTINCT <ColName>
FROM <TableName>;
WHERE
조건문
SELECT <ColName>, <ColName>,...
FROM <TableName>
WHERE <Condition>;
- WHERE 조건문에는
NOT,AND,OR등을 사용가능
Comparison Operator (비교연산자)
-
=,>,>=,<,<= -
<>or!=(Not Equal)
BETWEEN A AND B
SELECT col3
FROM Table1
WHERE Age BETWEEN 25 AND 30;
Table1 에서 Age 가 25이상 30이하인 경우, col3 을 가져온다.
-
<A>와<B>에는 숫자, 날짜, 텍스트 등이 들어갈 수 있다. -
<A>,<B>자기자신도 범위에 포함된다.
IN (val1, val2 …)
val1, val2... 에 해당하는 값들을 필터링해준다.
SELECT col2
FROM Table1
WHERE Major IN (Computer Science, Business Administration);
Table1 에서 Major가 Computer Science 또는 Business Administartion 인 경우,
col2만 가져온다.
EXISTS (Sub Query)
서브쿼리(Sub Query) 요청에 해당하는 레코드가 존재하면 True, 아니면 False
SELECT col1
FROM Table1
WHERE EXISTS
(SELECT * From Table2 WHERE id = Table1.id);
Table2 의 id 값과 Table1의 id 값이 같은 경우의 데이터를 요청해서 레코드가 존재한다면
서브쿼리는 True 를 반환하고, 이에따라 메인쿼리는 Table1 에서 col1 을 가져온다.
LIKE ‘Pattern’
패턴에 해당하는 문자를 필터링해준다.(정규표현식과 유사)
SELECT *
FROM Table1
WHERE Name Like '__u%';
Table1 에서 Name 이 3번째 글자가 u 인 경우, 모든 Column(열)을 가져온다.
Wildcard
-
%: 0개 이상의 모든 글자 -
_: 글자 한개
INSERT INTO … VALUES …
Row(행) 추가
INSERT INTO <TableName> (<ColName>, <ColName>, <ColName>, ...)
VALUES (<Value>, <Value>, <Value>, ...);
- Column(열) 데이터를 지정해주지 않은 값은
null로 삽입된다.
NULL
-
값이 비어있다.
-
비교연산자 사용불가
-
IS NULL또는IS NOT NULL을 통해 조건문으로 사용가능
Example
SELECT col1
FROM Table1
WHERE col3 IS NULL;
Table1에서 col3이 null값인 경우, col1 을 가져온다.
DELETE FROM … WHERE …
조건에 해당하는 Row값을 제거
DELETE FROM <TableName>
WHERE <Condition>;
DELETE FROM Table1;
- 위와같이 WHERE (조건문) 없이 사용시 모든 Row가 제거될 수 있으므로 주의
- 테이블의 구조 및 속성 등은 그대로 남는다. (테이블을 제거하는 것이 아니기 때문)
DELETE * FROM Table1과 동일
UPDATE … SET … WHERE …
데이터 수정
UPDATE <TableName>
SET <ColumnName> = <Value>, <ColumnName> = <Value>, ...
WHERE <Condition>;
- WHERE (조건문) 없이 사용하면 해당열의 모든값이 변경되므로 주의해야한다.
ORDER BY …
오름차순, 내림차순 정렬
SELECT col3
FROM Table1
ORDER BY col1 DESC, col2 ASC;
col1을 내림차순 정렬한 뒤, col2 오름차순으로 정렬한 순서로
col3을 가져온다.
ASC | DESC부분을 생략할시 Default는ASC
Leave a comment