지식보부상님의 공부 일지

[01] SQL 기본 본문

KB IT's Your Life/DB

[01] SQL 기본

지식보부상님 2025. 5. 21. 11:26

[1] SELECT문

SELECT ~ FROM ~

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

 

USE 구문

- 사용할 데이터베이스를 지정하는 구문

USE 데이터베이스 이름;

 

주석

- 한줄 주석은 `-- `, 여러줄 주석`/* */` 

-- 한줄 주석
/* 블록 주석 */

 

SHOW

- 현재 서버의 DB 확인

SHOW DATABASES;

 

- 현재 서버의 TABLE 확인

SHOW TABLES;

 

DESCRIBE

- 특정 테이블의 열 확인

DESCRIBE 테이블명;
-- 또는
DESC 테이블명;

 

◈ AS

- 열 이름 별칭

- `SELECT 열 이름 AS 별칭`

 

◈ DISTINCT

-  `SELECT DISTINCT 열 이름` : 중복 제거 

 

◈ WHERE 조건절

- `BETWEEN A AND B` : A와 B 사이에 있는 값 출력

- `LIKE 형식` : 해당 형식에 맞는 내용만 출력 

  • `%` : 여러 글자  ex) '김%' : 김으로 시작하는 내용 출력
  • `_`  :  한 글자  ex) '김_' : 김으로 시작하고, 2글자인 내용 출력

 - `IN ( 포함할 목록 )` : 해당 값이 포함할 목록에 있으면 출력

더보기

 - 예제

-- BETWEEN 예제
SELECT NAME, HEIGHT FROM USERTBL
WHERE HEIGHT BETWEEN 180 AND 183;

-- LIKE 예제
SELECT NAME, HEIGHT FROM USERTBL
WHERE NAME LIKE '김%';

-- IN 예제
SELECT NAME, ADDR FROM USERTBL
WHERE ADDR IN ('서울', '경기', '강원');

ANY

- 서브 쿼리의 여러 결과 중 하나만 만족해도 출력

- `= ANY(서브쿼리)` 는 `IN(서브쿼리)`와 동일한 의미를 가짐

-- 예제
SELECT NAME, HEIGHT FROM USERTBL
WHERE HEIGHT = ANY (SELECT HEIGHT FROM USERTBL WHERE ADDR='경남');

SELECT NAME, HEIGHT FROM USERTBL
WHERE HEIGHT = IN (SELECT HEIGHT FROM USERTBL WHERE ADDR='경남');

 

ALL

서브쿼리 결과 중 여러개 결과 모두 만족해야 출력

-- 예제
SELECT NAME, HEIGHT FROM USERTBL
WHERE HEIGHT > ALL (SELECT HEIGHT FROM USERTBL WHERE ADDR='경남');

 

◈ ORDER BY 절

- 출력 순서 조절하는구문

- 디폴트는 오름차순 `ASC`, 내림차순은 `DESC`

SELECT ~ FROM ~
ORDER BY 열 이름 [ASC | DESC];


 출력 개수 제한

- `LIMIT N` : 상위 N개의 결과만 출력

- `LIMIT 시작, 개수` 또는 `LIMIT 개수 OFFSET 시작` : 상위 `시작` 부터 `개수` 출력

- 가장 마지막(ORDER BY절 뒤)에 작성

 

◈ 테이블 복사

CREATE TABLE 새로운 테이블명 (SELECT 복사할 열 FROM 기존테이블명);

- 제약 조건은 복사되지 않음 주의

 

◈ GROUP BY 절

- 그룹별 최대/최소/개수 등 출력 (집계함수 사용) 

- 집계함수

함수명 설명
`AVG()` 평균
`MIN()` 최소값
`MAX()` 최대값
`COUNT()` 행 개수
`COUNT(DISTINCT)` 중복 제외 행 개수 (중복은 1개로 셈)
`STDEV()` 표준 편차
`VAR_SAMP()` 분산

 

◈ HAVING 절

- 집계함수에 대한 조건 제한

SELECT 열이름
FROM 테이블명
WHERE 조건
GROUP BY 그룹화
HAVING 그룹화 조건
ORDER BY 오름/내림차순

 

◈ ROLLUP

- `WITH ROLLUP` : 총합 또는 중간 합계 (소합계) 필요한 경우 GROUP BY 절과 같이 사용

-- 분류(groupName) 별로 합계 및 그 총합 구하기
SELECT num, groupName, SUM(price * amount) AS '비용'
FROM BUYTBL
GROUP BY groupName, num
WITH ROLLUP;

[2] 데이터 변경을 위한 SQL 문 (DML)

INSERT 

- 열 추가

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

- `(열 이름1, ...)` 부분 생략 가능

 

- 다른 테이블의 열 추가

INSERT INTO 테이블명(열 이름1, ...)
SELECT 열 이름
FROM 가져올 테이블명

 

AUTO_INCREMENT

- 자동으로 증가시킴

- `CREATE TABLE`에서 PK 또는 UNIQUE 인 열에 대해 `AUTO_INCREMENT` 라고 지정

- 데이터형이 숫자일 때만 사용 가능

- INSERT 문에서는 `NULL` 로 지정하여 자동으로 값 입력하도록 함

 

UPDATE

- `UPDATE .. SET` : 기존 데이터 수정

UPDATE 테이블명
SET 열1 = 값1, ...
[WHERE 조건];

- WHERE 절 생략하면 테이블 전체 내용이 변경되므로 주의

 

DELETE FROM

- 행 단위로 데이터 삭제

DELETE FROM 테이블명 [WHERE 조건] [LIMIT N];

- WHERE 절 생략시 전체 데이터가 삭제되므로 주의

- `LIMIT N`으로 삭제할 개수 지정 가능

- 참고 : 테이블 자체를 삭제할 때는 `DROP`, 테이블 구조는 남기려면 `TRUNCATE`로 삭제하는 것이 효율적임 

 

◈ 조건부 데이터 입력/변경

- `INSERT IGNORE` : 에러 발생해도 다음 구문으로 넘어감

- `ON DUPLICATE KEY UPDATE` : 기본키 중복되면 데이터 수정


 

'KB IT's Your Life > DB' 카테고리의 다른 글

[02] 데이터 타입, 내장함수  (2) 2025.05.21