728x90
반응형
SELECT [PREDICATE] [테이블명.]속성명[ AS 별칭][, [테이블명.]]속성명, ...]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명[, 속성명, ...]]
[HAVING 조건]
[ORDER BY [ASC|DESC][, [ASC|DESC], ...]];
- PREDICATE : 검색할 튜플을 제한할 목적
- ALL
- DISTINCT : 중복 제거
- DISTINCTROW : 중복 제거 하지만 선택된 속성의 값이 아닌 튜플의 전체 값을 대상으로 할 때
- GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용, 일반적으로 그룹 함수와 함께 사용됨
- 그룹 함수 - COUNT, MAX, MIN, SUM, AVG
- 비교 연산자 ( = : 같다, <> : 같지 않다)
- 논리 연산자 (NOT, AND, OR)
- LIKE 연산자
- * 또는 % : 모든 문자를 대표
- ? 또는 _ : 문자 하나를 대표
- # : 문자 하나를 대표
- 연산자 우선순위
- 높음 * / + - ( = <> < > >= <= ) NOT AND OR 낮음
SELECT Trim(이름)+"월급은" AS 이름, 기본급+10 AS 기본급
FROM 사원;
--Trim 좌우 공백 제거
SELECT CONCAT(MAX(LENGTH), "cm") AS MAX_LENGTH
SELECT *
FROM 사원
WHERE 부서 = '기획' OR 부서 = '인터넷';
WHERE 부서 IN ('기획', '인터넷');
--둘이 같은 표현 - 부서가 '기획'이거나 '인터넷'인 튜플
WHERE 이름 LIKE '김%';
SELECT 부서, AVG(기본급) AS 평균
FROM 사원
GROUP BY 부서
ORDER BY 부서 ASC;
SELECT 이름,주소
FROM 사원
WHERE 이름 IN (SELECT 이름 FROM 여가활동 WHERE 취미='나이트댄스');
--통합 질의 UNION : 두 테이블 합치기
SELECT *
FROM 임원
UNION SELECT * FROM 직원;
-- 평균
SELECT round(avg(컬럼명),0) as AVERAGE_FEE
-- 평균 + 그룹
SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
-- DETE 포맷
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
또는
SELECT MEMBER_ID, MEMBER_NAME, GENDER, to_char(DATE_OF_BIRTH,'yyyy-mm-dd') "DATE_OF_BIRTH"
-- 3월 찾기
where TO_CHAR(date_of_birth, 'MM') = 03
--NULL 값을 가지고 있을 경우
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
-- 중복 제거
SELECT COUNT(DISTINCT (NAME))
SELECT name
from ANIMAL_INS
where DATETIME = (select min(DATETIME) from ANIMAL_INS);
SELECT COUNT(*) AS FISHCOUNT
FROM FISHINFO AS FI
JOIN FISHNAMEINFO AS FNI ON FI.FISHTYPE=FNI.FISHTYPE
WHERE FNI.FISH_NAME IN ('BASS', 'SNAPPER')
---재구매가 일어난 상품과 회원 리스트 구하기
SELECT user_id, product_id
from online_sale
group by USER_ID, PRODUCT_ID
having count(user_id) >= 2
order by user_id asc, product_id desc;
--UNION
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
from ONLINE_SALE
where SALES_DATE like '2022-03%'
union
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, null as USER_ID, SALES_AMOUNT
from offline_sale
where SALES_DATE like '2022-03%'
order by SALES_DATE, PRODUCT_ID, USER_ID;
728x90
반응형
'개발일기 > DB, SQL' 카테고리의 다른 글
SQL - DML (0) | 2024.04.08 |
---|---|
SQL - JOIN (0) | 2024.04.08 |
SQL - DDL (0) | 2024.04.08 |
오라클 데이터베이스 백업하기(feat, expdp / impdp) (0) | 2022.08.13 |
S3 서버에 대용량 파일 업로드(feat, AWS CLI) - 내용 추가 (0) | 2022.08.13 |