SQL | 기본 문법📚

SQL에서 사용되는 기본 문법을 정리하는 글입니다.

⭐️딱딱하게 작성되어서 언어를 처음 배울 떄의 지루함이 느껴지실 수도 있습니다…!



SELECT문은 구축된 테이블에서 데이터를 추출하는 기능을 합니다. 기본형식은 다음과 같습니다.

1
2
3
4
5
6
7
SELECT select_expr --열 이름
[FROM table_references] -- 테이블 이름
[WHERE where_condition] -- 조건 식
[GROUP BY {col_name | expr | position}] -- 열 이름
[HAVING where_condition] -- 조건식
[ORDER BY {col_name | expr | position}] -- 열 이름
[LIMIT {[offset,] row_count | row_count OFFSET offset}] --숫자



1. SELECT ~ FROM

FROM 뒤에는 테이블 이름이 뒤따릅니다.

예시

  • SELECT * FROM member;
    member 테이블에서 모든 column(*)의 내용을 가져오는 SQL 문입니다.

  • SELECT mem_name FROM member;
    member 테이블에서 mem_name column의 내용을 가져오는 SQL 문입니다.

  • SELECT mem_name, addr FROM member;
    member 테이블에서 mem_nameaddr column의 내용을 가져오는 SQL 문입니다.

2. SELECT ~ FROM ~ WHERE

WHERE 뒤에는 조건문이 뒤따릅니다. 보고싶은 row만 선택해서 볼 수 있습니다.

기본구조는 다음과 같습니다.

1
SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;

WHERE 다음에 사용할 수 있는 조건은 다음과 같습니다.

  • 관계연산자 (<, >, <=, >=), 논리연산자 (AND, OR)
  • BETWEEN ~ AND
  • IN()
  • LIKE

예시

  • SELECT * FROM member WHERE mem_number = 4;
    member 테이블에서 mem_number가 4인 row의 모든 column(*)의 내용을 가져오는 SQL 문입니다.

  • SELECT mem_name, height FROM member WHERE height <= 162;
    member 테이블에서 height가 162 이하인 row의 mem_name, height column의 내용을 가져오는 SQL 문입니다.

  • SELECT mem_name, height FROM member WHERE height BETWEEN 162 AND 165;
    member 테이블에서 height가 163 이상, 165 이하인 row의 mem_name, height column의 내용을 가져오는 SQL 문입니다.



3. ORDER BY

결과데이터를 정렬하는 예약어 입니다. 아래와 같은 구조로 사용됩니다.

1
SELECT 열_이름 FROM 테이블_이름 ORDER BY {col_name | expr | position} LIMIT 숫자;

기본 정렬순서는 ASC으로 ascending(오름차순)입니다. 내림차순은 DESC으로 ORDER BY에서 column 뒤에 넣어줌으로 설정 할 수 있습니다.

WHERE와 같이 사용가능하지만 ORDER BY가 뒤에 있어야 합니다.

예시

  • SELECT mem_id, mem_name FROM member ORDER BY debut_date;
    member 테이블에서 debut_date를 오름차순으로 정렬하여 mem_id, mem_name의 내용을 가져오는 SQL 문입니다.

  • SELECT mem_id, mem_name FROM member ORDER BY debut_date DESC;
    member 테이블에서 debut_date를 내림차순으로 정렬하여 mem_id, mem_name의 내용을 가져오는 SQL 문입니다.

  • SELECT mem_id, mem_name FROM member WHERE height >=164 ORDER BY height DESC;
    member 테이블의 height가 164 이상인 row에서 height를 내림차순으로 정렬하여 mem_id, mem_name의 내용을 가져오는 SQL 문입니다.



4. LIMIT

LIMIT는 출력하는 개수를 제한하는 예약어입니다. 사용법은 간단합니다.

1
SELECT 열_이름 FROM 테이블 LIMIT (시작), 개수;

위에 작성한 시작은 생략이 가능한데 개수만 입력하면 처음부터 개수만큼 출력합니다.



5. DISTINCT

DISTINCT는 중복된 데이터를 제거합니다. 제거할 열 이름 앞에 입력하여 지정할 수 있습니다.

1
SELECT DISTINCT 열_이름 FROM 테이블 



6. GROUP BY

GROUP BY는 그룹으로 묶어주는 역할을 합니다. 그룹으로 묶은 다음 집계 함수aggregate function을 사용합니다.

함수 명 설명
SUM() 합계를 구합니다.
AVG() 평균을 구합니다.
MIN() 최소값을 구합니다.
MAX() 최대값을 구합니다.
COUNT() row의 개수를 셉니다.
COUNT(DISTINCT) row의 개수를 중복을 제거하고 셉니다.

Aggregate functions

예시

  • SELECT mem_id, SUM(amount) FROM member GROUP BY mem_id;
    member 테이블에서 mem_id별로 amount를 합치고 mem_id, SUM(amount)의 내용을 가져오는 SQL 문입니다.

HAVING

HAVINGGROUP BY에서 사용하는 조건문입니다. 위에서 사용한 집계함수는 WHERE 절에서는 사용할 수 없습니다. GROUP BY 뒤에 사용해야합니다.



여기서 중간점검을 해보겠습니다.

아래 각 대괄호에는 어떤 예약어가 들어가면 될까요?

보기

LIKE, DEC, ORDER BY, DISTINCT, ASC, AND, OR, >=, LIMIT

1
2
3
SELECT * FROM member [      ] height;
SELECT * FROM member [ ] 5,2;
SELECT [ ] phone1 FROM member;





아래와 같이 들어 갈 수 있습니다.

1
2
3
SELECT * FROM member ORDER BY height;
SELECT * FROM member LIMIT 5,2;
SELECT DISTINCT phone1 FROM member;

다음은 데이터를 변경할 때 사용하는 SQL문을 보겠습니다.



7. INSERT

테이블에 row 데이터를 입력할 때 사용하는 SQL문입니다. 기본 구조는 아래와 같습니다.

1
INSERT INFO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)

테이블 뒤에 따라오는 column의 이름은 생략 가능합니다. 생략하는 경우에는 VALUES의 개수는 테이블의 column수와 동일해야합니다.



8. UPDATE

테이블의 값이 변경되는 경우에는 UPDATE를 사용할 수 있습니다. 기본 구조는 아래와 같습니다.

1
UPDATE 테이블_이름 SET1=1, 열2=2, ... WHERE 조건 ;



9. DELETE

테이블에서 row를 삭제할 때에는 DELETE를 사용할 수 있습니다. 기본 구조는 아래와 같습니다.

1
DELETE FROM 테이블_이름 WHERE 조건;



오늘은 SQL에서 사용되는 기본 문법을 정리하였습니다.

다음에는 다양한 데이터 타입, JOIN, Stored procedure에 대해 보겠습니다.

읽어주셔서 감사드립니다.