데이터베이스 관련 쿼리문
-- 모든 데이터베이스 조회
SHOW DATABASES;
-- 데이터베이스 생성
CREATE DATABASE practice IF NOT EXISTS 데이터베이스명;
-- 데이터베이스 선택
USE데이터베이스명;
-- 데이터베이스 삭제
DROP DATABASE IF EXISTS 데이터베이스명;
테이블 관련 쿼리문
-- 테이블 조회하기(데이터베이스 선택 후 조회)
USE 데이터베이스명;
SHOW TABLES;
-- 테이블 구조 확인하기
DESC 테이블명;
-- 테이블 생성하기
CREATE DATABASE 테이블명;
CREATE TABLE 테이블명 (
컬럼1 데이터_타입 제약조건,
컬럼2 데이터_타입 제약조건,
...
);
-- 테이블 삭제하기 (테이블 자체가 삭제, 복구 불가)
DROP TABLE 테이블명;
-- 테이블 데이터 삭제
# 모든 데이터 삭제(테이블 구조는 유지, 복구 불가, 데이터 골라 삭제 불가)
TRUNCATE TABLE 테이블명;
# 조건 없이 데이터 삭제(원하는 데이터만 골라 삭제 가능, 복구 가능)
DELETE FROM 테이블명;
-- 테이블 복사
# 테이블 구조와 데이터를 복사
CREATE TABLE 새테이블명 AS
SELECT * FROM 기존테이블명;
# 테이블 구조만 복사
CREATE TABLE 새테이블명
LIKE 기존테이블명; -- MySQL
컬럼 관련 쿼리문
-- 컬럼 추가
ALTER TABLE 테이블명
ADD 컬럼명 데이터_타입;
-- 컬럼 기본값 설정
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 SET DEFAULT 기본값;
-- 컬럼 기본값 제거
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 DROP DEFAULT;
-- 컬럼 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명;
-- 컬럼 수정
# 컬럼 이름 변경
ALTER TABLE 테이블명
RENAME COLUMN 기존컬럼명 TO 새컬럼명;
# 컬럼 데이터 타입 변경
ALTER TABLE 테이블명
MODIFY COLUMN 컬럼명 새로운_데이터_타입;
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 SET DATA TYPE 새로운_데이터_타입;
데이터 관련 쿼리문
1. SELECT : 데이터 조회
- SQL에서 데이터를 조회하는 기본 명령어
# 기본 형식
SELECT 컬럼명 FROM 테이블명;
# 모든 열 조회
SELECT * FROM 테이블명;
- SELECT SQL 각 구문별 실행순서
더보기
- FROM, JOIN
- ON, WHERE
- 2차 테이블 완성
- GROUP BY
- 그룹함수
- 3차 테이블 완성(그룹함수의 결과가 반영된 새로운 테이블이 생성됨)
- HAVING
- 4차 테이블 완성(HAVING작업이 있을 경우에만)
- ORDER BY
- LIMIT
- 고객(MySQL 클라이언트, 대표적으로 Sequel Pro, SQLYog, JDBC Driver 등)에게 전달
2. WHERE: 조건 지정
- 조건이 참인 데이터만 조회
- 여러 조건 지정
- AND : 모든 조건을 만족하는 경우
- OR : 하나의 조건만 만족하는 경우
# 기본 형식
SELECT 컬럼명
FROM 테이블명
WHERE 조건;
# 여러 조건 지정
SELECT 컬럼명
FROM 테이블명
WHERE 조건1 AND 조건2;
3. ORDER BY: 정렬
- 데이터를 특정 컬럼 기준으로 정렬
- ASC: 오름차순(기본값)
- DESC: 내림차순
# 기본 형식
SELECT 컬럼명
FROM 테이블명
WHERE 조건
ORDER BY 컬럼명 ASC/DESC;
# 다중 정렬
SELECT 컬럼명
FROM 테이블명
ORDER BY 컬럼1 ASC, 컬럼2 DESC;
4. LIMIT: 출력 행 제한
- 조회할 데이터의 행 개수를 제한
# 기본 형식
SELECT 컬럼명
FROM 테이블명
LIMIT 개수;
# 예시
SELECT *
FROM employees
LIMIT 5; -- 상위 5개 행 출력
5. DISTINCT: 중복 제거
- 중복된 데이터를 제거하고 유일한 값만 반환
SELECT DISTINCT 컬럼명
FROM 테이블명;
6. AS: 별칭 지정
- 별칭을 사용해 컬럼이나 테이블명을 이해하기 쉽게 변경
SELECT 컬럼명 AS 별칭
FROM 테이블명;
# 예시
SELECT salary * 12 AS annual_salary
FROM employees;
7. IN: 특정 값 집합
- 주어진 값 집합에 포함된 데이터를 조회
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IN (값1, 값2, ...);
- NOT IN: 집합 제외
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 NOT IN (값1, 값2, ...);
8. BETWEEN: 범위 조건
- 특정 값의 범위를 지정하여 데이터를 조회
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 BETWEEN 최소값 AND 최대값;
9. LIKE: 검색
- 문자열 검색에 사용합니다.
- %: 0개 이상의 모든 문자
- _: 단일 문자
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 LIKE '%문자%';
- 예시
- %홍길%: "홍길"이 포함된 모든 데이터
- 홍길%: "홍길"로 시작하는 데이터
10. IS NULL: NULL 값 조회
- NULL 값을 조회하거나 제외
# NULL 값 조회
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS NULL;
# NULL 값 제외
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS NOT NULL;
- NULL값 조회 후 대체 값 반환
-- NULL 대체 1 : 가장 범용적인 함수
SELECT COALESCE(컬럼명, '기본값') AS 별칭
FROM 테이블명;
-- NULL 대체 2 (MySQL)
SELECT ISNULL(컬럼명, '기본값') AS 별칭
FROM 테이블명;
-- NULL 대체 3 (MySQL)
SELECT IFNULL(컬럼명, '기본값') AS 별칭
FROM 테이블명;
함수
집계 함수 (Aggregate Functions)
-- 합계
SELECT SUM(컬럼명) AS 총합
FROM 테이블명;
-- 평균
SELECT AVG(컬럼명) AS 평균값
FROM 테이블명;
-- 행 개수
SELECT COUNT(*) AS 총행수
FROM 테이블명;
-- 최대값
SELECT MAX(컬럼명) AS 최대값
FROM 테이블명;
-- 최소값
SELECT MIN(컬럼명) AS 최소값
FROM 테이블명;
문자열 함수 (String Functions)
-- 문자열 연결
SELECT CONCAT(컬럼명1, ' ', 컬럼명2) AS 연결값
FROM 테이블명;
-- 문자열 길이
SELECT LENGTH(컬럼명) AS 문자열길이
FROM 테이블명;
-- 부분 문자열
SELECT SUBSTRING(컬럼명, 시작위치, 길이) AS 부분문자열
FROM 테이블명;
-- 대소문자 변환
SELECT UPPER(컬럼명) AS 대문자값
FROM 테이블명;
SELECT LOWER(컬럼명) AS 소문자값
FROM 테이블명;
-- 공백 제거
SELECT TRIM(컬럼명) AS 공백제거값
FROM 테이블명;
수학 함수 (Math Functions)
-- 반올림
SELECT ROUND(컬럼명, 소수점자리수) AS 반올림값
FROM 테이블명;
-- 올림
SELECT CEIL(컬럼명) AS 올림값
FROM 테이블명;
-- 내림
SELECT FLOOR(컬럼명) AS 내림값
FROM 테이블명;
-- 절대값
SELECT ABS(컬럼명) AS 절대값
FROM 테이블명;
-- 거듭제곱
SELECT POWER(기본컬럼, 지수컬럼) AS 거듭제곱값
FROM 테이블명;
-- 나머지
SELECT MOD(컬럼명1, 컬럼명2) AS 나머지값
FROM 테이블명;
-- 2진수 변환
SELECT BIN(컬럼명) AS 반환이름;
날짜 및 시간 함수 (Date and Time Functions)
- 형식 지정자
| 형식 지정자 | 설명 | 예시 (2025-01-12) |
| %Y | 4자리 연도 | 2025 |
| %y | 2자리 연도 | 25 |
| %M | 월 이름 (영문) | January |
| %b | 월 이름 약어 (영문) | Jan |
| %m | 2자리 월 (01 ~ 12) | 01 |
| %c | 월 (1 ~ 12) | 1 |
| %D | 일 + 서수 접미사(1st, 2nd 등) | 12th |
| %d | 2자리 일(01 ~ 31) | 12 |
| %e | 일 (1 ~ 31) | 12 |
| %W | 요일 이름 (영문) | Sunday |
| %a | 요일 약어 (영문) | Wed |
| %w | 요일 번호 (0=일요일, 1=월요일) | 0 |
| %j | 해당 연도의 몇 번째 날 (001 ~ 366) | 012 |
| %H | 2자리 시간 (00~23) | 14 |
| %h | 2자리 시간 (01~12, 12시간제) | 02 |
| %i | 2자리 분 (00~59) | 30 |
| %s | 2자리 초 (00~59) | 45 |
| %p | AM 또는 PM | PM |
-- 현재 날짜
SELECT CURRENT_DATE() AS 현재날짜;
-- 현재 시간
SELECT CURRENT_TIME() AS 현재시간;
-- 현재 날짜와 시간
SELECT NOW() AS 현재날짜시간;
-- 날짜에 기간 추가
SELECT DATE_ADD(컬럼명, INTERVAL 추가값 단위) AS 조정된날짜
FROM 테이블명;
-- 날짜에서 기간 빼기
SELECT DATE_SUB(컬럼명, INTERVAL 차감값 단위) AS 조정된날짜
FROM 테이블명;
-- 날짜 차이 계산
# 컬럼명1 - 컬럼명2
SELECT DATEDIFF(컬럼명1, 컬럼명2) AS 날짜차이
FROM 테이블명;
-- 날짜에서 특정 부분 추출
SELECT YEAR(컬럼명) AS 연도,
MONTH(컬럼명) AS 월,
DAY(컬럼명) AS 일
FROM 테이블명;
-- 요일 추출
SELECT DAYNAME(컬럼명) AS 요일
FROM 테이블명;
-- 해당 월의 마지막 날
SELECT LAST_DAY(컬럼명) AS 마지막날짜
FROM 테이블명;
-- 날짜 형식 변환
SELECT DATE_FORMAT(컬럼명, '변환형식') AS 형식변환날짜
FROM 테이블명;
-- 날짜에서 특정 단위 추출
SELECT EXTRACT(단위 FROM 컬럼명) AS 값
FROM 테이블명;
조건부 함수 (Conditional Functions)
-- CASE 조건문
SELECT CASE
WHEN 컬럼명 > 값 THEN '조건충족'
WHEN 컬럼명 BETWEEN 최소값 AND 최대값 THEN '범위충족'
ELSE '조건미충족'
END AS 조건결과
FROM 테이블명;
형 변환 함수 (Conversion Functions)
-- 데이터 타입 변환
SELECT CAST(컬럼명 AS 데이터타입) AS 변환값
FROM 테이블명;
-- 날짜 변환 (MySQL)
SELECT CONVERT(컬럼명, 데이터타입) AS 변환값
FROM 테이블명;
'CS > DataBase' 카테고리의 다른 글
| SQL과 NoSQL 비교 (0) | 2025.04.01 |
|---|---|
| DataBase Management System (1) | 2025.01.09 |
| DataBase/DataBase System (2) | 2025.01.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring Boot
- Security
- brute-force
- 디자인패턴
- Spring
- Spring Security
- Greedy
- Kotlin
- Effective Java
- 백준
- db
- Algorithm
- Annotation
- 생활코딩
- programmers
- Java
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함