일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- kb 취업교육
- 이차원배열
- kb취업교육
- KB국민은행
- kb네트워킹캠프
- sql
- kb it's your life
- sql내장함수
- 빅분기필기
- 전문가특강
- 첫알고리즘평가
- 반별이벤트
- kb 기자단
- 빅데이터분석기사필기
- 금융권 부트캠프
- SQL데이터타입
- kb it's your life 6기
- 빅분기
- kb it's your life 기자단
- 백엔드개발
- 백엔드개발교육과정
- 금융권it
- 멀티캠퍼스
- kbit교육
- 빅데이터분석기사
- prefixsum #C언어
- 부트캠프
- 데이터분석자격증
- autohotkey
- 금융권 it
- Today
- Total
지식보부상님의 공부 일지
[01] SQL 기본 본문
[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 |
---|