[CODE]/Database

[DB] 3. SQL 기초(1) - SQL 개요, 데이터 조작어

원°C 2026. 3. 26. 13:00

1) SQL 개요

SQL(Structured Query Language)

: RDBMS를 위한 표준 질의어, 비절차적 데이터 언어
➔  SEQUEL에서 유래했다.

SQL 분류
  • 데이터 정의어(DDL)
    : 테이블 생성/변경/삭제
    ➔  ex) CREATE, ALTER, DROP ...
  • 데이터 조작어(DML)
    : 데이터 삽입/수정/삭제/검색
    ➔  ex) SELECT, INSERT, DELETE ...
  • 데이터 제어어(DCL)
    : 데이터 접근 및 사용권한 제어
    ➔  ex) GRANT, REVOKE ...

2) 데이터조작어 - 검색

/* == 작성 순서에 주의할 것 ==*/
SELECT [ALL | DISTINCT] 속성이름
FROM 테이블이름
WHERE 검색조건
GROUP BY 속성이름
HAVING 검색조건
ORDER BY 속성이름;
SELECT
  • ALL(DEFAULT) / DISTINCT(중복제거)
  • 속성이름 순서 = 테이블 열 순서
    IF 모든 속성 검색 ➔ *로 대체
WHERE vs. HAVING
  WHERE HAVING
사용 가능 조건 비교, 범위, 집합(IN/NOT IN), 패턴(LIKE), NULL, 복합조건(AND/OR/NOT) 집계함수(SUM/AVG/MAX/MIN/COUNT)
예시 가격이 1만원이상 2만원 이하인 도서 검색
SELECT *
FROM Book
WHERE price BETWEEN 10000 AND 20000
아래 참고

 

와일드 문자(LIKE와 같이 사용됨)
% : 0개 이상의 문자열과 일치
➔ ex) %축구% = 축구를 포함하는 문자열

[] : 1개의 문자와 일치
➔ ex) [0-5]% = 0-5 사이 숫자로 시작하는 문자열

[^] : 1개의 문자와 불일치
➔ ex) [^0-5]% = 0-5 사이 숫자로 시작하지 않는 문자열

_ : 특정 위치의 1개의 문자와 일치
➔ ex) _구% 두 번째 위치에 ‘구’가 들어가는 문자열

사용 예) WHERE bookname LIKE '_구%'

 

ORDER BY
  • ASC: 오름차순 (DEFAULT)
  • DESC: 내림차순
    예시) ORDER BY bookname DESC, publisher ASC
집계함수

: 특정 속성 값을 통계적으로 계산하는 함수

  •  특징
    • NULL값 제외하고 계산
    • WHERE(X) / SELECT, HAVING(O)
  • 종류
    • SUM([ALL | DISTINCT] 속성이름)
    • AVG([ALL | DISTINCT] 속성이름)
    • COUNT([[ALL | DISTINCT] 속성이름] | *) : 행의 개수 카운트
    • MAX([ALL | DISTINCT] 속성이름)
    • MIN([ALL | DISTINCT] 속성이름)
AS 키워드

: 속성이름의 별칭 부여(AS 생략 가능)
ex) SELECT SUM(salesprice) AS 총매출

⚠️ AS 사용한 별칭을 언급할 땐, 실행 순서 유의하기
GROUP BY

: 특성 속성의 값이 같은 튜플을 모아 그룹을 만든 후 검색

/*== 실행 순서 ==*/
5  SELECT custid, COUNT(*) AS 도서수량, 
				SUM(saleprice) AS 총액
1  FROM Orders
2  WHERE saleprice >= 8000
3  GROUP BY custid
4  HAVING COUNT(*) >= 2
6  ORDER BY custid;

 

조인 검색

ex) 주문.주문고객 (= 테이블이름.속성)

  • 카티션 프로덕트 (= 비효율적)
    : SELECT * FROM Customer, Orders; 
      조건 없이 연결
  • 외부조인
    : 테이블1 LEFT | RIGHT OUTER JOIN 테이블2 ON 조인조건
      여러 개의 테이블로 연결하여 데이터를 검색하는 것, 일반적으로 외래키를 속성으로 사용
    > 도서를 구매하지 않은 고객을 포함하여 고객의 이름과 고객이 주문한 도서의 판매가격을 구하세요
    ➔ Customer 왼쪽 외부조인(custid기준) Orders
    
    SELECT Customer.name, saleprice
    FROM Customer LEFT OUTER JOIN Orders ON 
    			Customer.custid=Orders.custid;

관련 노션 링크:

https://eastern-albatross-55e.notion.site/3-SQL-32771eb963f08089a13ef0eeab314d70?source=copy_link

 

[목차여기]