[혼공S] 2주차 Chap 03. [혼공학습단 13기]

YOUNG·2025년 1월 16일
0
[혼공학습단 13기] 활동의 일환으로 한빛미디어의 < 혼자 공부하는 SQL >을 읽고 요약 정리한 글입니다.

Chap 03. SQL 기본 문법

1. SELECT ~ FROM ~ WHERE

SELECT 문 : 구축이 완료된 테이블에서 데이터를 추출하는 기능

실습용 데이터베이스 구축

실습용 예제 파일은 한빛미디어 사이트 자료실에서 다운로드 가능

파일을 살펴보면 데이터베이스를 만들 때 워크벤치 기능이 아니라 SQL로도 만들 수 있다는 사실을 알 수 있다.

기본 조회하기

USE 문

: SELECT 문을 실행하려면 사용할 데이터베이스를 지정해야 한다.

USE 데이터베이스_이름;

워크벤치를 재시작하거나 쿼리 창을 새로 열면 다시 USE를 실행해야 한다.

SELECT 문의 기본 형식

SELECT 열_이름
	FROM 테이블_이름
    WHERE 조건식
    GROUP BY 열_이름
    HAVING 조건식
    ORDER BY 열_이름
    LIMIT 숫자

SELECT와 FROM

열 이름에 *을 입력하면 모든 열을 가져오며, 여러 개의 열을 가져오고 싶으면 콤마로 구분한다.
테이블의 이름은 원칙적으로 데이터베이스_이름.테이블_이름으로 표현하나 데이터베이스 이름을 생략하면 USE 문으로 지정한 데이터베이스가 자동으로 선택된다.

SELECT ~ FROM ~ WHERE

WHERE가 없으면 테이블의 모든 행이 출력되므로 SELECT 문을 사용할 때는 대부분 WHERE 절과 함께 사용한다.
조건식은 일반적으로 열_이름 = 값의 형태를 가진다.

연산자 사용

숫자로 표현된 데이터는 관계 연산자 (>, <, = 등)를 이용해 범위를 지정할 수 있다.
2가지 이상의 조건을 만족하는 데이터는 논리 연산자 (AND)를 이용해서 조회할 수 있다.

BETWEEN ~ AND

숫자의 범위를 조건식에서 사용할 때는 BETWEEN을 사용하는 것이 편리하다.

IN()

문자 형태의 여러 조건을 만족하는 데이터를 조회하고 싶을 때에는 OR로 쓰는 방법이 있지만,
IN()을 사용하면 더욱 간결한 코드가 만들어진다.

LIKE

문자열의 일부 글자를 검색하는 방법으로 LIKE를 사용한다.
%는 무엇이든 허용한다는 의미이며, _는 한 글자와 매치한다.
(Ex. '혼%' : 혼으로 시작하는 단어, '혼_ _' : 혼으로 시작하는 세 글자 단어)

서브 쿼리 : SELECT 안에는 또 다른 SELECT가 들어갈 수 있다.


2. 좀 더 깊게 알아보는 SELECT 문

ORDER BY 절

ORDER BY 절은 결과가 출력되는 순서를 조절한다. (값이나 개수에는 영향 없다.)
ASC는 오름차순, DESC는 내림차순을 의미하며, 생략 시 ASC로 인식한다.

정렬 기준은 여러 개의 열을 지정하는 것이 가능하다.
👉 첫 번째 지정 열로 정렬 후, 동일한 경우 다음 지정 열로 정렬한다.

LIMIT

LIMIT는 출력하는 개수를 제한한다.
형식은 LIMIT 시작, 개수이며 시작을 생략하면 처음부터 센다.
LIMIT 개수 OFFSET 시작과 동일

DISTINCT

DISTINCT는 조회된 결과에서 중복된 데이터를 1개만 남기며 열 이름 앞에 쓴다.

GROUP BY 절

GROUP BY절은 그룹으로 묶어주는 역할을 한다.
집계 함수는 주로 GROUP BY절과 함께 쓰이며 데이터를 그룹화해주는 기능을 한다.

집계 함수

함수명설명
SUM()합계 구하기
AVG()평균 구하기
MIN()최소값 구하기
MAX()최대값 구하기
COUNT()행의 개수 세기
COUNT(DISTINCT)중복 제외 행의 개수 세기

집계 함수와 GROUP BY 절을 사용한 예시는 다음과 같다.

SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수"
	FROM buy GROUP BY mem_id;

위 코드를 통해 회원 아이디 별로 총 구매한 개수를 추출할 수 있으며 별칭을 사용해 보기 좋게 만들 수 있다.

HAVING 절

HAVING은 WHERE처럼 조건을 제한하는 역할이지만, 집계 함수에 대해서 조건을 제한한다.
👉 HAVING 절은 꼭 GROUP BY 절 다음에 나와야 한다.

[기본 숙제]

p. 138의 확인 문제 2번 풀고 인증하기

  1. 다음 보기 중에서 각 문항의 빈칸에 들어갈 것을 고르세요.
    [LIKE, DESC, ORDER BY, DISTINCT, ASC, AND, OR, >=, LIMIT]
    1️⃣SELECT * FROM member [ORDER BY] height;
    2️⃣SELECT * FROM member [LIMIT] 5, 2;
    3️⃣SELECT [DISTINCT] phone1 FROM member;

3. 데이터 변경을 위한 SQL 문

데이터 입력: INSERT

기본 문법

INSERT는 테이블에 데이터를 삽입하는 명령으로 기본적인 형식은 다음과 같다.

INSERT INTO 테이블 [(열1, 열2, ···)] VALUES (값1, 값2, ···)

테이블 이름 다음에 나오는 열은 생략 가능하나, VALUES 다음에 나오는 값들의 순서, 개수는 테이블과 동일해야 한다.

AUTO_INCREMENT

AUTO_INCREMENT는 열을 정의할 때 1부터 증가하는 값을 입력해준다.
단, AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해줘야 한다.
자동으로 입력되므로 데이터를 입력할 때는 NULL로 지정하면 된다.

시작하는 값, 증가되는 값 변경도 가능하다.

INSERT INTO ~ SELECT

INSERT INTO ~ SELECT 구문을 통해 다른 테이블에 이미 입력된 데이터를 가져와 한 번에 입력할 수 있다.
SELECT 문의 열 개수는 INSERT할 테이블의 열 개수와 같아야 한다.

데이터 수정: UPDATE

기본 문법

UPDATE는 기존 입력 값을 수정하는 명령으로 기본적인 형식은 다음과 같다.

UPDATE 테이블_이름
	SET 열1=값1, 열2=값2, ···
    WHERE 조건;

WHERE 절은 문법상 생략 가능하지만, 생략 시 테이블의 모든 행의 값이 변경된다.

데이터 삭제: DELETE

DELETE는 행 단위로 삭제하며, 형식은 다음과 같다.

DELETE FROM 테이블이름 WHERE 조건;

LIMIT와 함께 사용하면 상위 몇 건만 삭제할 수 있다.

※ 대용량 테이블 삭제

  • DROP : 테이블 자체를 삭제함
  • TRUNCATE : 테이블 구조는 남기고 삭제

[추가 숙제]

데이터 입력, 삭제하는 기본 형식 작성하기


profile
개발 연습생

0개의 댓글

관련 채용 정보