일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DBMS
- Xcode
- MySQL
- JPA
- 인공지능
- 프로그래밍언어론
- 아이패드다이어리
- 다이어리
- 데이터베이스
- 밥먹는 철학자
- Dining philosopher problem
- swift
- 오라클
- 스프링부트 웹 소켓
- IOS
- 42seoul
- 스프링
- 리눅스
- jenkins
- 네트워크
- libasm
- CD
- CI
- javascript
- AI
- 소켓
- 스프링부트
- sql
- Spring
- springboot
- Today
- Total
Hi yoahn 개발블로그
#2 SQL 데이터 조작_1. 데이터 검색 본문
1. 데이터 검색
# 기본 검색
SELECT [ ALL | DISTINCT ] 속성_리스트
FROM 테이블_리스트;
- ALL 이 디폴트(명시하지 않아도 됨), 중복 허용 검색
- 검색 결과는 릴레이션, 메모리에 저장되는 것은 아님
(검색 결과를 메모리에 저장하려면 insert 명령어에서 values 대신 select 명령어 사용)
- 모든 속성을 검색하려면 *사용
- 결과로 출력되는 테이블의 속성 명을 변경해서 출력할 수 있다.
-> 속성1 AS 속성2
결과 테이블에 속성1을 속성2 이름으로 바꿔서 출력(테이블 내용이 바뀌는 것은 아님)
# 산술식을 이용한 검색
SELECT 제품명, 단가+500 AS "조정 단가"
FROM 제품;
# 조건 검색
SELECT [ ALL | DISTINCT ] 속성_리스트
FROM 테이블_리스트
[ WHERE 조건 ];
- 비교연산자
= 같다
<> 다르다
< , >, <=, >=
- 논리 연산자
AND, OR, NOT
ex) where 제조업체='한빛제과'; //대입XX, 비교문
where 주문고객='apple' AND 수량>=15;
- where 절에는 집계함수 사용 불가
## LIKE 를 이용한 검색
: 검색 조건을 부분적으로 아는 경우 = 대신 사용(*문자열에만 사용 가능)
- 기호
% : 0개 이상의 문자
_ : 1개의 문자
ex) LIKE '_ _한%' //문자열 길이에 상관없이 세번째 글자가 '한'인 문자열
## NULL 이용한 검색
WHERE 나이 ( IS NULL | IS NOT NULL );
- 다른 값을 NULL값과 크기를 비교하면 모두 거짓
# 정렬 검색
SELECT ....
FROM ...
[ WHERE 조건 ]
[ ORDER BY 속성_리스트 [ ASC | DESC ]];
- ASC : 오름차순 //기본값
DESC : 내림차순
- 결과를 여러 기준에 따라 정렬
-> ORDER BY 주문제품 ASC, 수량 DESC;
# 집계 함수를 이용한 검색
- 집계 함수
[모든 데이터]
COUNT
MAX
MIN
[숫자 데이터]
SUM
AVG
- NULL 값은 제외하고 계산
- SELECT 절이나 HAVING 절에서만 사용 가능
ex) SELECT COUNT( DISTINCT 제조업체) AS "제조업체 수"
FROM 제품;
SELECT SUM(재고량) AS "재고량 합계"
FROM 제품
WHERE 제조업체='한빛제과';
# 그룹별 검색
SELECT ....
FROM ...
[ WHERE 조건 ]
[ GROUP BY 속성_리스트 [ HAVING 조건 ]]
[ order by...];
- 그룹을 나누는 기준이 되는 속성 지정, 그룹에 대한 조건은 HAVING 키워드와 함께 작성
- having 절에는 집계함수 사용 가능
**그룹별 검색할 때 집계 함수나 group by 절에 있는 속성 외의 속성은 SELECT 절에 사용할 수 없다
ex)
SELECT COUNT(*) AS 제품수, MAX(단가) AS 최고가
FROM 제품
GROUP BY 제조업체 HAVING COUNT(*)>=3;
# 여러 테이블에 대한 조인 검색
조인 속성: 테이블들을 연결해주는 속성. 조인 속성의 이름은 달라도 되지만 도메인은 같아야 함 (외래키)
테이블의 이름과 속성의 이름은 . 으로 연결
ex)
SELECT 제품.제품명
FROM 제품, 주문
WHERE 주문.주문고객='banana' AND 제품.제품번호=주문.주문제품;
- 테이블 이름이 길면 별명 사용 가능
FROM 절에 테이블 명과 별명을 함께 제시.
# 부속 질의문을 이용한 검색
: select문 안에 다른 select문 포함 -> 부속 질의문
* 부속 질의문은 괄호로 묶어 작성
* order by 절 사용 불가
* 상위 질의문보다 먼저 수행됨
## 단일 행 부속 질의문 =
- 일반 비교 연산자 사용 가능
- 부속 질의문이 수행된 결과가 단일 값인 경우 사용
## 다중 행 부속 질의문 IN
- 일반 비교 연산자 사용 불가
- 부속 질의문이 수행된 결과가 다중 값일 경우 사용
- 사용 가능 연산자
IN, NOT IN, EXISTS, NOT EXISTS, ALL(비교연산자와 함께 사용), ANY | SOME
'데이터베이스 > SQL' 카테고리의 다른 글
SQL 실행계획 (0) | 2023.05.26 |
---|---|
#3 SQL 데이터 삽입,수정, 삭제 (0) | 2020.03.14 |
#1 SQL 데이터 정의어 (0) | 2020.03.14 |