IT 공부용

3. Select문 본문

▶ Database

3. Select문

호롤롤로루 2022. 9. 22. 14:41

할 때 캡쳐해서 복습하자

# 기본 문법

USE sqldb;
SELECT * FROM usertbl;
-- * : 모든 열 출력

SELECT NAME, addr FROM usertbl;
-- name,addr만 검색

SELECT * FROM usertbl WHERE NAME = '김경호';
-- 이름이 '김경호'인 넘만 출력

# SELECT WHERE

SELECT * FROM usertbl WHERE NAME = '김경호';
-- 이름이 '김경호'인 넘만 출력

# WHERE(OR, AND)

SELECT userID, Name FROM usertbl
WHERE birthYear >= 1970 AND height >=182 ;
-- 조건이 2개 이상일 때, OR AND를 사용해 두 조건 합침

 

# 사잇 값(BETWEEN)

SELECT height, Name FROM usertbl
WHERE height >= 180 AND height <= 183 ;
SELECT height, Name FROM usertbl
WHERE height BETWEEN 180 AND 183 ;

밑에꺼는 Between 써서

# OR, IN

SELECT NAME, addr FROM usertbl
WHERE addr = '경남' OR addr='경북' OR addr = '전남'

--------------------또는--------------------

SELECT NAME, addr FROM usertbl
WHERE addr IN('경남','경북','전남')

# WHERE LIKE (%, _)

SELECT NAME, height FROM usertbl
WHERE NAME LIKE '김%'
-- '김' LIKE기능 사용--
-- 뒤에 몇글자가 나오던 상관없음

SELECT NAME, height FROM usertbl
WHERE NAME LIKE '_경호'
-- 뒷 문자 고정
-- _(언더바):글자수 고정
-- 즉 이건 한글자만

# 서브쿼리 SELECT 안에 SELECT를 두번 씀

SELECT NAME,height FROM usertbl
WHERE height > 
(SELECT height FROM usertbl WHERE NAME ='김경호');

---김경호 보다 키 큰 새끼 뽑아내기----

#  ANY 함수

SELECT NAME,height FROM usertbl
WHERE height > ANY
(SELECT height FROM usertbl WHERE addr ='경남');

-- 경남 인 새끼가 2마리 뜸 걔네 키가 각각 173 170 임

-- ANY없으면 오류뜸  ANY = 모든지 // 서브쿼리의 결과는 173이상이거나 170이상이거나 다 출력

-- IN = any 결과가 같음!!!!!

# 오름차순 내림차순 ASC DESC

SELECT NAME,mDate FROM usertbl ORDER BY mDate;
-- mDate 순으로 정렬 오름차순(기본 값)

SELECT NAME,mDate FROM usertbl ORDER BY mDate DESC;
-- mDate 순으로 정렬 내림차순(DESC)

NAME, mDate를 뽑을 껀데 mDate순으로 오름차순 내림차순 정렬 한다.

 

# DISTINT(중복 제거)

SELECT DISTINCT addr FROM usertbl;

- 위치 주의 !!! , 중복된 값 제거 후 결과 출력

 

# LIMIT(제한)

SELECT NAME,height FROM usertbl ORDER BY height LIMIT 10;

usertbl테이블에 NAME,height를 선택해서 키순으로 정렬 대신 LIMIT 10개 까지만 출력

 

# GROUP BY

SELECT userID AS '사용자', SUM(amount) AS '총 구매'FROM buytbl GROUP BY userID;
-- 개인이 구매한 총 량
SELECT userID AS '사용자', SUM(price*amount) AS '총 구매'FROM buytbl GROUP BY userID;
-- 개인이 구매한 총 물건의 구매 액수
SELECT userID AS '사용자', SUM(price*amount) AS '총 구매액'
FROM buytbl GROUP BY userID ORDER BY SUM(price*amount) DESC;
-- 개인이 구매한 총 물건의 구매 액수 내림차순

# 집계함수
- AVG(): 평균

- MIN(): 최솟값

- MAX(): 최댓값

- COUNT(): 행의 갯수

- COUNT(DISTINCT): 행갯수+중복제거
- STDEV(): 표준편차

- VAR_SAMP(): 분산

 

SELECT AVG(amount) AS '평균 구매 개수' FROM buytbl;
-- 전체인원 구매개수 평균

 

SELECT AVG(amount) AS '평균 구매 개수' FROM buytbl GROUP BY userID;
-- 사용자 별 평균 구매 개수
SELECT NAME,height FROM usertbl WHERE height = (SELECT max(height) FROM usertbl) 
OR height = (SELECT min(height)  AS FROM usertbl);

-- 젤 큰사람과 젤 작은사람 뽑기
 -------------
|NAME  height |
|조용필 166   |
|성시경 186   |
 -------------

# HAVING (집계함수 SUM같은거에 조건걸때 사용)

SELECT userID AS '사용자', SUM(price*amount) AS '총 구매' 
FROM buytbl 
GROUP BY userID 
HAVING SUM(price*amount) > 10
ORDER BY SUM(price*amount) DESC;

-- 집계함수를 조건에 넣을 때 HAVING 절 사용

-- userID 와 SUM값을 뽑는데 

-- buytbl테이블에서

-- userID별로

-- 집계함수 SUM의 조건이  >10 보다 클 때 

-- sum을 기준으로 내림차순 정렬 

 

'▶ Database' 카테고리의 다른 글

5. View  (0) 2022.09.23
4. CREATE, INSERT,DELETE,DROP,UPDATE,TRUNCATE  (0) 2022.09.22
2. DB - 테이블 생성(CLI)  (0) 2022.09.21
1. DB 기본 설정 + GUI로 DB 만져보기 + Select  (0) 2022.09.21
0. 데이터 베이스 설치 및 이론  (0) 2022.09.21