IT 공부용
3. Select문 본문
할 때 캡쳐해서 복습하자
# 기본 문법
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 |