1. SQL 개요
- SQL (Structured Query Language): 데이터베이스에서 사용되는 구조화된 질의 언어
- 표준: ANSI/ISO SQL 표준(예: ANSI-92, ANSI-99)이 있으며, 대부분의 DBMS(데이터베이스 관리 시스템)가 이를 따름
- DBMS별 SQL: 각 회사는 표준을 준수하며 고유의 기능을 추가한 SQL을 사용함
- MySQL: SQL
- Oracle: PL/SQL
- SQL Server: T-SQL (Transact SQL)
2. SELECT 문의 기본
- SELECT ... FROM: 테이블에서 데이터를 검색하는 기본 구문
- SELECT *: 모든 열을 선택
- SELECT 열1, 열2, ...: 특정 열만 쉼표(,)로 구분하여 선택
- USE [데이터베이스이름]: 작업할 데이터베이스를 지정하거나 변경. Workbench에서는 스키마 이름을 더블클릭하여 지정할 수도 있음
- 기타 기본 명령어:
- SHOW DATABASES; : 서버의 모든 데이터베이스 목록 확인
- SHOW TABLES; : 현재 데이터베이스의 테이블 목록 확인
- DESCRIBE [테이블이름]; (또는 DESC) : 테이블의 구조(열 정보)를 확인
3. WHERE 절 (데이터 필터링)
SELECT 문에서 WHERE 절을 추가하여 특정 조건을 만족하는 행만 조회할 수 있음
- 조건 연산자: AND , OR 를 사용해 여러 조건을 조합
- BETWEEN ... AND ...: 특정 범위 내의 값 조회 (예: height BETWEEN 180 AND 182).
- IN (...): 이산적인(discrete) 값 목록 중 하나와 일치하는 데이터를 조회 (예: addr IN ('경남', '충남', '경북')).
- LIKE: 문자열 패턴 검색
- %: 0개 이상의 모든 문자를 의미함 (예: '김%').
- _: 1개의 단일 문자를 의미함 (예: '_경규').
4. 서브쿼리 (Subquery)
SELECT 문 내부에 또 다른 SELECT 문(서브쿼리)을 사용하여, 그 결과를 상위 쿼리의 조건으로 활용할 수 있음
- 서브쿼리의 결과가 2개 이상의 행을 반환할 때 비교 연산자를 그냥 사용하면 오류가 발생함
- 이때 ANY, ALL, SOME 연산자를 사용해야 함
- >= ANY: 서브쿼리 결과 중 "최솟값"보다 크거나 같으면 참
- >= ALL: 서브쿼리 결과 중 "최댓값"보다 크거나 같으면 참
- = ANY는 IN과 동일한 의미
5. 결과 정렬 및 제한
- ORDER BY: 결과를 특정 열 기준으로 정렬
- ASC: 오름차순 (기본값)
- DESC: 내림차순
- 여러 열을 기준으로 정렬할 수 있음 (예: ORDER BY height DESC, userName ASC).
- DISTINCT: SELECT 키워드 뒤에 사용하여 중복된 값을 제거하고 고유한 값만 표시
- LIMIT: 출력되는 행의 개수를 제한
- LIMIT 5: 상위 5개만 출력
- LIMIT 0, 5 (또는 LIMIT 5 OFFSET 0): 0번 인덱스부터 5개를 출력
6. GROUP BY 및 HAVING 절
- GROUP BY: 특정 열의 값이 같은 행들을 하나의 그룹으로 묶음
- 집계 함수 (Aggregate Functions): GROUP BY와 함께 사용되어 그룹별 통계를 냄
- SUM(): 합계
- AVG(): 평균
- MAX(): 최댓값
- MIN(): 최솟값
- COUNT(): 행의 개수. COUNT(*)는 전체 행 수, COUNT(열이름)은 해당 열이 NULL이 아닌 행의 수를 셈
- HAVING: GROUP BY로 그룹화된 결과에 대해 조건을 적용하여 필터링 (WHERE는 그룹화 전 개별 행에, HAVING은 그룹화 후 그룹에 적용)
- 예: GROUP BY userID HAVING SUM(price * amount) > 1000 (총구매액이 1000을 초과하는 사용자 그룹만)
'공부 기록 > MySQL' 카테고리의 다른 글
| SQL 기본 문법 (2) (0) | 2025.11.12 |
|---|