[SQL] Basic Syntax

3 minute read

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;

Table1col1, Table2col3 를 합쳐서 col1 이라는 이름을 가진 Column(열) 데이터와
Table1col2Table2col4 을 합쳐서 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의 조건에 해당하는 col1col2를 가져와서
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 에서 MajorComputer Science 또는 Business Administartion 인 경우,
col2만 가져온다.


EXISTS (Sub Query)

서브쿼리(Sub Query) 요청에 해당하는 레코드가 존재하면 True, 아니면 False

SELECT col1
FROM Table1
WHERE EXISTS
(SELECT * From Table2 WHERE id = Table1.id);

Table2id 값과 Table1id 값이 같은 경우의 데이터를 요청해서 레코드가 존재한다면
서브쿼리는 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에서 col3null값인 경우, 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



Reference

Leave a comment