DB/MySQL

[ SQL 스터디 - 1주차 ] SQL 기본 문법

yangheeb 2024. 1. 31. 21:49

 
위 포스트는 "혼자 공부하는 SQL" 책 Chapter 03 내용과
"유선배 SQL개발자(SQLD) 과외노트" 책 Part 2-1 내용을 정리한 글입니다. 
 

 

한빛미디어 - 혼자 공부하는 SQL (우재남 저) : 무료 동영상 강의 제공

누구를 위한 책인가요? SQL을 처음 시작하려고 하는 학생과 취업 준비생, 데이터베이스 기초를 배우고자 하는 초보 개발자, SQL의 이론과 실습을 동시에 학습하고 싶은 입문자, SQL을 공부하다가

hongong.hanbit.co.kr

 

2024 SD에듀 유선배 SQL개발자(SQLD) 과외노트 | 정미나 - 교보문고

2024 SD에듀 유선배 SQL개발자(SQLD) 과외노트 | 이 책은 데이터베이스에 대한 기본 지식은 없지만 자격증을 취득해보기로 마음을 먹은 용감한 초보자들을 위한 책입니다. 기술 서적의 경우 전공자

product.kyobobook.co.kr

 
 
 
 
 
 

Chapter 3-1. 기본 중에 기본 SELECT ~ FROM ~ WHERE

 

** 실습용 데이터베이스 구축

 

01. 데이터베이스 만들기


DROP DATABASE IF EXISTS market_db;
CREATE DATABASE market_db;

 
DROP DATABASE데이터베이스를 삭제하는 문장이다.
 
위 DROP DATABASE IF EXISTS market_db; 는
기존의 market_db라는 데이터베이스가 존재할 시에 삭제하는 것을 의미한다.
 
CREATE DATABASE데이터베이스를 새로 만드는 문장이다.
CREATE DATABASE market_db;를 하면서 market_db라는 데이터베이스가 생성되었다.
 
 
 
 

02. 회원 테이블(member) 만들기


USE market_db;
CREATE TABLE member -- 회원 테이블
( mem_id  		CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
  mem_name    	VARCHAR(10) NOT NULL, -- 이름
  mem_number    INT NOT NULL,  -- 인원수
  addr	  		CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
  phone1		CHAR(3), -- 연락처의 국번(02, 031, 055 등)
  phone2		CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
  height    	SMALLINT,  -- 평균 키
  debut_date	DATE  -- 데뷔 일자
);

 
USE문데이터베이스를 선택하는 문장이다.
USE market_db;를 입력하면서 앞서 만들었던 market_db가 선택되었다.
 
CREATE TABLE테이블을 생성하는 문장이다.
위 CREATE TABLE member는 member 테이블을 만드는 과정이라고 할 수 있다.
 
cf) SQL에서 주석은 연속된 하이픈(-) 2개 이후에 띄어쓰기를 하여 사용한다.
 
 
 
 

03. 구매 테이블(buy) 만들기


CREATE TABLE buy -- 구매 테이블
(  num 		INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
   mem_id  	CHAR(8) NOT NULL, -- 아이디(FK)
   prod_name 	CHAR(6) NOT NULL, --  제품이름
   group_name 	CHAR(4)  , -- 분류
   price     	INT  NOT NULL, -- 가격
   amount    	SMALLINT  NOT NULL, -- 수량
   FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);

 
CREATE TABLE buy를 입력하면서 새로운 buy 테이블이 생성되었다.
 
 
 
 

04. 데이터 입력하기


 
아래 문장은 market_db 안에 들어있는 회원(member) 테이블에 입력할 데이터이다.

INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');

 
데이터를 입력하기 위해서는 INSERT문을 사용한다.
예시는 INSERT INTO member VALUES 라는 문장을 사용하여 member 테이블에 속성값을 입력했다.
 
 

INSERT INTO buy VALUES(NULL, 'APN', '아이폰', '디지털', 200, 1);

 
구매(buy) 테이블 역시 각각의 인스턴스에 속성값을 입력하면, 데이터 입력이 끝난다.
 
 
 
 
 

05. 데이터 조회하기


 

member 테이블

 

buy 테이블

 
market_db 데이터베이스에 위와 같은 member, buy 테이블이 생성된다.
 
 
 
 

** 기본 조회하기 : SELECT ~ FROM

 

01. USE문


USE 데이터베이스_이름;

 
SELECT문을 실행하기 전에, 사용하는 데이터베이스를 지정 또는 변경하는 문장이다.
 
 
 

02. SELECT문의 기본 형식


 

SELECT문

저장되어 있는 데이터를 조회하고자 할 때 사용하는 명령어이다.
 

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

 
SELECT문의 기본 형식은 위와 같지만,

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

 
핵심적인 형식은 SELECT ~ FROM~  WHERE 까지의 내용이다.
 
 
 
 

03. SELECT와 FROM


 
# 전체 열 추출

USE market_db;
SELECT * FROM member;

 
이 문장은 market_db 안에 있는 member 테이블에서 모든 열의 내용을 가져와라는 뜻이다.
 
SELECT문 각각의 기능에 대해 알아보자.

- SELECT 예약어 : 테이블에서 데이터를 가져올 때 사용하는 예약어
- * : 일반적으로 '모든 것'을 의미하며, SELECT문에서 사용될 시 모든 열을 의미
- FROM : 다음에 테이블 이름이 나오며, 그 테이블에서 내용을 가져온다는 것을 의미
- member : 조회할 테이블 이름

 

member 테이블

 
SELECT문을 출력하면 위와 같은 결과가 나온다.
 
 
우리는 USE문을 사용하여 데이터베이스를 선택하고,
SELECT * FROM members; 라는 문장을 통해 테이블에서 열을 추출하였다.
 
이 SELECT문은 원칙상으로
members라는 테이블 이름은 "데이터베이스_이름. 데이터_이름"으로 표현해야 한다.
즉 SELECT * FROM market_db.member; 으로 표현해야 한다.
 
하지만 데이터베이스 이름을 생략하면 USE문으로 지정해 놓은 데이터베이스가 자동적으로 선택되어,
members와 같이 '테이블_이름'으로 표시하여도 무방하다.
 
 
 
# 필요한 열 추출

SELECT mem_name FROM member;

 
mem_name 행만 추출하면 다음과 같은 결과가 나온다.
 

SELECT addr,debut_date,mem_name FROM member;

 

 
여러 개의 열을 가져오고 싶으면 콤마(,)로 구분하면 된다.
그리고 조회되는 컬럼의 순서는 테이블의 컬럼 순서와 동일하다.
열 이름 순서는 원래 테이블을 만들 때 순서에 맞출 필요 없으며, 보고 싶은 순서대로 나열하면 된다.
 
 
 
# 별칭 사용
테이블명이나 컬럼명에 별도의 별칭(Alias)을 붙여줄 수 있다.
 
 

04. 연산자


 
우리는 앞서 SELECT문을 사용할 때 아래와 같은 형식으로 표현하였다.

SELECT 열_이름 FROM 테이블_이름;

 
 
이때 "열이름 부분" 단순히 열이름으로만 기입하지 않고,
"연산자"와 "다양한 함수"들을 이용해서 표현할 수 있다.
 
함수에 대해서는 바로 다음 부분에서 살펴보고, 우선 연산자에 대해 알아보겠다.
 
 
# 산술 연산자

연산자 의미 우선순위
( ) 괄호로 우선순위를 조정할 수 있음 1
* 곱하기 2
/ 나누기 (0으로 나눌 경우 에러 발생)
+ 더하기 3
- 빼기
% (SQL Server) 나머지 (0으로 나눌 경우 NULL 반환) 3

 
수학에서 사용하는 사칙연산의 기능을 가진 연산자이다.
NUMBER DATE 유형의 데이터와 같이 사용할 수 있다.
 
 
# 합성 연산자
문자와 문자를 연결할 떄 사용하는 연산자이다.

SELECT 'S'||'Q'||'L'||'개'||'발'||'자'|| AS SQLD FROM DUAL;
SELECT * FROM SAMPLE;
SELECT COL1 || ' ' || 'SQLD' || ' '|| COL2 AS RESULT FROM SAMPLE;

 
 

05. 함수


# 문자 함수
# 숫자 함수
# 날짜 함수
# 변환 함수
# NULL 관련 함수
 
 
 
 
 

** 특정 조건만 조회하기 : SELECT ~ FROM ~ WHERE

 
 

01. WHERE 없이 조회하기


 
우리는 앞서 간단한 데이터들을 가지고 WHERE절 없이 SELECT문을 사용하였다.
 

이 WHERE절 없이 SELECT ~ FROM만으로 테이블을 조회한다면,

테이블의 모든 행이 출력되는 단점이 있다.
 
그렇기에 데이터 건수가 많은 실무에서 SELCET문을 사용할 때는
필요한 데이터를 쉽게 찾아내기 위해, 컴퓨터에 부담을 덜 주기 위해 WHERE 절을 함께 사용한다.
학습할 때 역시 SELECT문을 WHERE절과 함께 사용하자.
 
 
 
 
 

02. 기본적인 WHERE절


 

WHERE절

조회하는 결과에 특정한 조건을 추가해서 원하는 데이터만 보고 싶을 때 사용하는 절이다.
 
형식은 

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

 
또는

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

 
으로 사용된다.
 
 
 
 
WHERE절조건식을 만들기 위해 다양한 연산자들을 사용하는데,
이 연산자들에 대해 하나씩 살펴보자.
 
 
# 비교(=관계) 연산자

연산자 의미 예시
= 같음 where col = 10
< 작음 where col < 10
<= 작거나 같음 where col <= 10
> where col > 10
>= 크거나 같음 where col >= 10

 
 
연산자 = 를 사용하여 WHERE절을 예시로 들어 결과를 출력해보겠다.
이름(mem_name)열은 문자형(CHAR)이므로 작은 따옴표로 묶어서 조건식으로 표현한다.

SELECT * FROM member WHERE mem_name='블랙핑크';

 

 
 
인원(mem_number)처럼 숫자형 열을 조회할 때는 작은 따옴표 없이 조건식을 표현한다.

SELECT * FROM member WHERE mem_number=4;

 
 
 
 

# 부정 비교 연산자

연산자 의미 예시
!= 같지 않음 where col != 10
^= 같지 않음 where col ^= 10
<> 같지 않음 where col <> 10
not 컬럼명 = 같지 않음 where not col =  10
not 컬럼명 > 크지 않음 where not col > 10

 
 
 

# 논리 연산자
 

2가지 이상의 조건을 만족하도록 하는 논리 연산자에는 'AND' 'OR', 그리고 'NOT' 이 있다.

연산자 의미 예시
AND 모든 조건이 TRUE여야 함 where col > 1 and col < 10
OR 하나 이상의 조건이 TRUE여야 함 where col = 1 or col = 10
NOT TRUE면 FALSE이고 FALSE이면 TRUE where not col > 10

 
 

AND

두 조건이 모두 만족해야 하는 조건문이다.

SELECT mem_name, height, mem_number 
    FROM member 
    WHERE height >= 165 AND mem_number > 6;

 

OR

두 조건 중 하나만 만족해도 되는 조건문이다.

SELECT mem_name, height, mem_number
    FROM member
    WHERE height >= 165 OR mem_number > 6;

있지를 잇지라고 제가 기입하지 않았습니다 ;;

 
 

# SQL 연산자

연산자 의미 예시
BETWEEN A AND B A와 B의 사이 (A,B 포함) where col between 1 and 10
LIKE '비교 문자열' 비교 문자열을 포함

'%'는 문자열을 의미
'_'는 하나의 문자를 의미

'_' 혹은 '%' 기호가 포함된 문자 검색 시 ESCAPE 지정
where col like 'SHIN%'
where col like '%ee'
where col like '%HINe%'
where col like 'SH_N%'
where col like '%#%%' escape '#'
IN (LIST) LIST 중 하나와 일치 where col in (1,3,5)
IS NULL NULL 값 where col is null

 
 
앞서 살펴본 AND 논리연산자를 이용한 조건문으로 쿼리를 짜보면 다음과 같다.

SELECT mem_name, height
    FROM member 
    WHERE height >= 163 AND height <= 165;

 
 
그런데 범위에 있는 값을 구하는 경우에는 

SELECT mem_name, height
    FROM member 
    WHERE height BETWEEN 163 AND 165;

 
위와 같이 BETWEEN ~ AND를 사용해도 AND를 사용한 SQL과 동일한 결과가 나온다.

 
 
 
 

IN

문자와 같이 크다/작다의 범위를 지정할 수 없는 데이터를 추출할 때 사용한다.
주로 OR 논리연산자처럼 사용된다.
 
 
경기/전남/경남 중 한 곳에 사는 회원을 검색하기 위해 다음과 같이 OR로 일일이 쓴다면,
아래와 같은 코드로 나타낼 수 있다.

SELECT mem_name,addr
    FROM member
    WHERE addr='경기' OR addr='전남' OR addr='경남';

 
하지만 우리는 IN(LIST)를 사용하면서 코드를 훨신 간결하게 작성할 수 있고,
앞의 SQL과 동일한 결과를 출력된다.

SELECT mem_name,addr
    FROM member
    WHERE addr IN('경기','전남','경남');

 

 

 
LIKE

문자열의 일부 글자를 검색하기 위해 사용한다.
 
 
 
# 부정 SQL 연산자

연산자 의미 예시
NOT BETWEEN A AND B A와 B의 사이가 아님 (A,B 미포함) where col not between 1 and 10
NOT IN (LIST) LIST 중 일치하는 것이 없음 where col not in (1,3,5)
IS NOT NULL NULL 값이 아님 where col is not null

 
 
 
 
 
 
 
 

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

데이터를 처리할 때 중복을 제거하거나, 일부만 보여주는 등의 다양한 처리가 필요할 때가 있다.
또한 결과를 한 건씩 보는 경우도 있지만 묶음으로 처리해서 봐야 하는 경우도 있다.
이번 장에서는 정렬과 관련된 SQL에 대해 알아보겠다.
 

** ORDER BY 절

 

01. 결과의 정렬을 위한 ORDER BY절


 
SELECT 절의 형식은 다음과 같다.

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

 
 
우리는 이중에서 SELECT문에서 논리적으로 맨 마지막에 수행되는

ORDER BYLIMIT절에 대해 먼저 알아보겠다.

우선 ORDER BY절부터 살펴보자.
 
 
 

ORDER BY절

결과의 값이나 개수에 대해서는 영향을 미치지 않지만,
결과가 출력되는 순서조절하는 절이다.
 

SELECT mem_id, mem_name, debut_date
    FROM member
    ORDER BY debut_date;

 
즉 , 아래와 같이 SELECT한 데이터를 정렬할 수 있다.
 

ORDER BY debut_date;

 
 
 

ORDER BY절을 따로 명시하지 않으면

데이터는 임의의 순서대로 출력되는데,
 
이때 ORDER BY절은 "옵션""정렬의 기준이 되는 컬럼"을 사용하여 데이터를 정렬한다.
 

** 옵션의 종류
- ASC(Ascending) : 오름차순
- DESC(Descending) : 내림차순
>> 옵션 생략 시 ASC가 기본값이 된다 !

 
위 코드는 ORDER BY debut_date; 로 옵션을 생략하여 표현하였기에
ASC가 기본값이 되어 데뷔일자가 빠른 순서대로 출력되었다.
 
 

SELECT mem_id, mem_name, debut_date
    FROM member
    ORDER BY debut_date DESC;

 
위 코드는 ORDER BY debut_date DESC; 로 옵션을 DESC 내림차순 정렬을 하여
아래와 같이 데뷔일자가 느린 순서대로 출력되었다.
 

ORDER BY debut_date DESC;

 
 
 
ORDER BY debut_date DESC; 부분에서 debut_date와 같은 정렬의 기준이 되는 컬럼
하나가 될 수도 있고, 그 이상이 될 수도 있다.
 
 
 
# 논리적 수행 순서
SELECT문에는 논리적 수행 순서가 존재하는데,

                            <SELECT문의 논리적 수행 순서>
                            
SELECT 열_이름          ----------- 5 
    FROM 테이블_이름    ----------- 1
    WHERE 조건식        ----------- 2
    GROUP BY 열_이름    ----------- 3
    HAVING 조건식       ----------- 4
    ORDER BY 열_이름    ----------- 6
    LIMIT 숫자          ----------- 7

 
이 구문의 순서대로 쿼리문을 짜지 않는다면 오류가 발생한다.
SELECT문에 나오는 절은 생략 가능하지만, 사용해야 한다면 순서를 지켜야한다.
 

SELECT mem_id, mem_name, debut_date
    FROM member
    WHERE height >= 164
    ORDER BY height DESC, debut_date ASC;

 
다음과 같이 ORDER BY 절은 항상 WHERE절 다음에 나와야한다.
그리고 이 ORDER BY절은 정렬 기준이 2개의 열로 지정되어 있는 것을 확인할 수 있으며,
위 코드를 출력하면 아래의 결과가 나온다.
 

ORDER BY height DESC, debut_date ASC;

 
 
 
 

02. 결과의 개수를 제한하는 LIMIT절


 
LIMIT절

출력하는 개수를 제한하는 절이다.
 
 
LIMIT 절의 형식

LIMIT 시작, 개수

 
위와 같이 표현할 수 있으며, LIMIT 개수 OFFSET 시작이라고 쓰는 것과 동일하다.
또한 LIMIT는 첫 데이터를 0번으로 설정하고 시작한다.
 

SELECT mem_name, debut_date
    FROM member
    ORDER BY debut_date
    LIMIT 3;

 
예시 코드의 LIMIT 3은 LIMIT 0,3과 동일하며, 출력하면 아래와 같은 결과값을 얻게 된다.

LIMIT 3;

 
 
 
 

03. 중복된 결과를 제거하는 DISTINCT절


 
DISTINCT절

조회된 결과에서 중복된 데이터를 1개만 남기는 절이다.
 

SELECT addr FROM member ORDER BY addr;

 
ORDER BY를 사용하면서 addr 데이터를 오름차순으로 정리하였지만,
아래와 같이 addr에서 중복된 데이터들이 존재하는 것을 확인할 수 있다.

 
 
이때 이 중복 문제를 간단하게 하는 것이 DISTINCT절이다.

SELECT DISTINCT addr FROM member ORDER BY addr;

 
열 이름 앞에 DISTINCT를 사용하면 중복된 데이터를 1개만 남기고 제거한다.
출력값은 아래와 같다.
 

 
 
 

** GROUP BY절

 

01. GROUP BY절


 

GROUP BY절

말 그대로 그룹을 묶어주는 역할을 하는 절이다.
 
GROUP 뒤에는 수단의 전치사인 BY가 붙었기 때문에,
GROUP BY 뒤에는 그룹핑의 기준이 되는 컬럼이 오게 된다.
또한, 이 컬럼은 하나 혹은 그 이상이 될 수 있다.
 
 
 

SELECT mem_id, amount
     FROM buy
     ORDER BY mem_id;

 

 
위 코드의 출력값을 살펴보면,
APN 회원의 경우 총 5개의 물건을 구매한 것을 1,2,1,1으로 각각 표시하고 있다.
 
GROUP BY는 이것을 그룹별로 묶어서 5개로 한번에 표현할 수 있게 하는 절이다.
이때 우리는 "집계 함수"라는 함수를 사용하여 데이터를 그룹화 할 수 있다.
 
 
 

02. 집계 함수


데이터를 그룹별로 나누면 그룹별로 집계 데이터를 도출하는 것이 가능해진다.
아래는 집계 함수의 예시이다.

함수명 설명
COUNT(*) 전체 Row를 Count하여 반환
COUNT(컬럼) 컬럼값이 Null인 Row를 제외하고 Count하여 반환
COUNT(DISTINCT 컬럼) 컬럼값이 Null이 아닌 Row에서 중복을 제거한 Count를 반환
SUM(컬럼) 컬럼값들의 합계를 반환
AVG(컬럼) 컬럼값들의 평균을 반환
MIN(컬럼) 컬럼값들의 최솟값을 반환
MAX(컬럼) 컬럼값들의 최댓값을 반환

 
 
# SUM(컬럼)

SELECT mem_id, SUM(amount)
    FROM buy
    GROUP BY mem_id;

 

 
 
buy 테이블을 GROUP BY로 회원별로 묶어준 후에
SUM() 함수로 구매한 개수를 합치면 위와 같은 출력값이 나온다.
 
 

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

 
별칭을 사용하여 위 코드를 수정하면 열이름이 바뀐 것을 확인할 수 있다.
 
 
 
 
 
# COUNT(*), COUNT(컬럼), COUNT(DISTINCT 컬럼)
 
member 테이블을 다시 살펴보자.

 

select count(distinct phone1) FROM member;

 
 
 

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

데이터베이스와 테이블을 만든 후에는 데이터를 변경하는, 즉 입력/수정/삭제하는 기능이 필요하다.
각각의 기능에 대해 하나씩 알아보자.
 

** 데이터 입력 : INSERT 


INSERT문

테이블에 행 데이터를 입력하는 기본적인 SQL문이다.
 
 
# INSERT문의 기본 문법
 
INSERT는 테이블에 데이터를 삽입하는 명령어이다.
INSERT문의 기본형은 아래와 같다.

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

 
테이블 다음에 나오는 열은 생략 가능하며,
열 이름을 생략할 경우 VALUES 다음에 나오는 값들의 순서 및 개수는
테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다.
 
 
# 자동으로 증가하는 AUTO_INCREMENT

 
AUTO_INCREMENT

열을 정의할 때 1부터 증가하는 값을 입력해준다.
INSERT에서는 해당열이 없다고 생각하며 입력하고, AUTO_INCREMENT로 지정하는 열에 PK로 지정해 주어야한다.

toy_id INT AUTO_INCREMENT PRIMARY KEY,

 
위 코드와 같이 열을 자동 증가시키게 설정해주면 된다.
 
 
만일 처음 입력되는 값을 1000, 증가값을 3으로 설정하고 싶다면, 다음과 같은 SQL을 작성해야한다.

ALTER TABLE hongong3 AUTO_INCREMENT=1000; -> 시작값은 1000으로 지정
SET @@auto_increment_increment=3; -> 증가값은 3으로 지정

 
여기서 중요한 것은
시스템 변수인 @@auto_increment_increment를 변경시켜야 하는 것이다 !
 
 
 
# 다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT
 
다른 테이블에 이미 데이터가 입력되어 있다면,
INSERT INTO ~ SELECT 구문을 사용해 해당 테이블의 데이터를 가져와서 한 번에 입력할 수 있다.

INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
    SELECT문;

 
다만 SELECT 문의 열 개수는 INSERT할 테이블의 열 개수와 같아야 한다.
즉 SELECT의 열이 3개라면, INSERT될 테이블의 열도 3개여야 한다.
 
 

** 데이터 수정 : UPDATE  


UPDATE문

테이블에 행 데이터를 수정해야 하는 경우 사용되는 SQL문이다.
 
 
# UPDATE문의 기본 문법
UPDATE는 기존에 입력되어 있는 값을 수정하는 명령어이다.
UPDATE문의 기본형은 아래와 같다.

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

 
한꺼번에 여러 열의 값을 변경할 경우, 콤마(,)로 분리해서 여러 개의 열을 변경하면 된다.
 
 
# WHERE가 없는 UPDATE문
UPDATE문에서 WHERE절은 문법상 생략이 가능하지만, WHERE절을 생략하면 테이블의 모든 행의 값이 변경된다.
 
 

** 데이터 삭제 : DELETE


DELETE문

테이블에 행 데이터를 삭제해야 하는 경우 사용되는 SQL문이다.
 
 
# DELETE문의 기본 문법
DELETE는 행 단위로 삭제하며, UPDATE와 거의 비슷하게 사용된다.
DELETE문의 기본형은 아래와 같다.

DELETE FROM 테이블이름 WHERE 조건;

 
# 대용량의 테이블의 삭제
DELETE문은 행 데이터를 삭제하고, 빈 테이블을 남긴다.
DROP문은 테이블 자체를 삭제하고 테이블 자체가 없어진다.
TRUNCATE문은 빈 테이블만 남긴다.