반응형
SELECT
- DML중 조회를 담당하는 구문으로, 외부 스키마(사용자 관점)에서 주로 사용된다.
- 테이블뿐만 아니라, 뷰도 조회가 가능하다.
SELECT {ALL | DISTINCT} [속성] FROM [테이블] {WHERE [조건]} {GROUP BY [속성] HAVING [조건]} {ORDER BY [DESC | ASC]}
1. {ALL | DISTNCT}
- ALL : 중복을 포함해준다. (기본값, 생략가능)
SELECT ALL * FROM 구매고객
번호 | 이름 | 상품 |
1 | 홍길동 | 귤 |
2 | 이순신 | 오렌지 |
3 | 홍길동 | 오렌지 |
- DISTINCT : 중복을 제거해준다.
SELECT DISTINCT * FROM 구매고객
번호 | 이름 | 상품 |
1 | 홍길동 | 귤 |
2 | 이순신 | 오렌지 |
2. {WHERE}
- 조건을 적용하여 투플들을 검색한다.
- WHERE [조건] 으로 작동한다.
SELECT * FROM 구매고객 WHERE 학생 = '홍길동'
번호 | 이름 | 상품 |
1 | 홍길동 | 귤 |
3 | 홍길동 | 오렌지 |
- 비교 연산자(>, >=, <, <=, <>)와 논리 연산자(AND, OR, NOT)도 사용이 가능하다.
SELECT * FROM 구매고객 WHERE 번호 > 2
번호 | 이름 | 상품 |
3 | 홍길동 | 오렌지 |
- Like : 부분적으로 일치하는 조건으로 검색
SELECT * FROM 구매고객 WHERE 이름 Like "홍%"
/* 이름이 홍씨로 시작하는 모든 투플을 검색함 (글자수 상관X) */
SELECT * FROM 구매고객 WHERE 이름 Like "홍_"
/* 이름이 홍씨로 시작하는 모든 투플을 검색함 (홍으로 시작하면서 두글자인 투플 검섹) */
- IS NULL: 속성값이 NULL 인지 확인
SELECT * FROM 구매고객 WHERE 이름 IS NULL
/* 이름이 NULL 인지 확인 */
SELECT * FROM 구매고객 WHERE 이름 IS NOT NULL
/* 이름이 NULL 이 아닌지 확인 */
3. {GROUP BY}
- 지정한 속성을 기준으로 그룹을 만들어 출력한다.
- 집계함수(SUM, COUNT 등), AS 구문과 함께 주로 사용한다.
- AS : 속성을 다른 이름으로 바꿔줌 (조회할 때만)
SELECT 이름, COUNT(상품) AS 총구매량 FROM 구매고객 GROUP BY 이름
이름 | 총구매량 |
홍길동 | 2 |
이순신 | 1 |
4. {HAVING}
- GROUP BY 에 조건을 추가한다. (WHERE 과 유사)
SELECT 이름, COUNT(상품) AS 총구매량 FROM 구매고객 GROUP BY 이름 HAVING COUNT(상품) >= 2
이름 | 총구매량 |
홍길동 | 2 |
5. {ORDER BY}
- DESC : 내림차순 정렬
- ASC : 오름차순 정렬
- 여러 개의 속성들을 정렬할 수 있다.
SELECT * FROM 구매고객 ORDER BY 이름 DESC, 번호 ASC
번호 | 이름 | 상품 |
2 | 이순신 | 오렌지 |
1 | 홍길동 | 귤 |
3 | 홍길동 | 오렌지 |
JOIN (조인 검색)
- 데이터 검색을 위해 여러개의 테이블을 연결하는 것
- 외래키를 기준으로 테이블을 연결한다. (즉, 도메인이 같야아함)
번호 | 이름 | 상품 |
1 | 홍길동 | 귤 |
2 | 이순신 | 오렌지 |
3 | 홍길동 | 오렌지 |
구매고객 테이블
이름 | 나이 |
홍길동 | 20 |
이순신 | 30 |
이성계 | 50 |
고객 테이블
- INNER JOIN (내부 조인) : 테이블 간 교집합을 조회한다.
SELECT 구매고객.이름, 구매고객.상품, 고객.나이 FROM 구매고객 INNER JOIN 고객 ON 구매고객.이름 = 고객.이름
이름 | 상품 | 나이 |
홍길동 | 귤 | 20 |
이순신 | 오렌지 | 30 |
홍길동 | 귤 | 20 |
ON 구매고객.이름 = 고객.이름
구매고객 테이블에 존재하는 이름만 고객 테이블에서 조회한다.
- OUTER JOIN (외부 조인) : 테이블 간 차집합 + 교집합을 조회한다. (LEFT, RIGHT)
SELECT 구매고객.이름, 구매고객.상품, 고객.나이 FROM 고객 LEFT OUTER JOIN 주문고객 ON 구매고객.이름 = 고객.이름
SELECT 구매고객.이름, 구매고객.상품, 고객.나이 FROM 주문고객 RIGHT OUTER JOIN 고객 ON 구매고객.이름 = 고객.이름
이름 | 상품 | 나이 |
홍길동 | 귤 | 20 |
이순신 | 오렌지 | 30 |
홍길동 | 귤 | 20 |
이성계 | NULL | 50 |
부속 질의문(이중 SELECT)
- SELECT 안에 또 다른 SELECT를 넣는다.
- 주로 WHERE 절에서 사용된다.
SELECT * FROM 고객 WHERE 나이 = (SELECT 나이 FROM 고객 WHERE 이름='홍길동')
이름 | 나이 |
홍길동 | 20 |
반응형
'IT Dictionary > Database' 카테고리의 다른 글
데이터베이스(Database) SQL ALTER TABLE 정리 (0) | 2024.12.04 |
---|---|
데이터베이스(Database) 설계하기 (0) | 2024.11.21 |
데이터베이스 SQL CREATE TABLE 정리 (0) | 2024.11.10 |
데이터베이스(Database) 관계 대수 정리 (1) | 2024.11.07 |
컴활 데이터베이스(Database) 기본 용어 정리 (0) | 2023.04.29 |