[DQL]

sesame·2021년 8월 9일
0

sql

목록 보기
3/24

SELECT

       중복o | 중복x
SELECT [ALL | DISTINCT] {속성명 [alias]}
FROM 테이블이름()
[ON/USING 조건절]
[WHERE 검색조건()]
[GROUP BY 속성이름()]     #어느 고객이 얼마나 주문했는지 알고 싶다
[HAVING 검색조건()]      #몇 개이상 ~한고객 / count(*)>=2
[ORDER BY 속성이름[ASC | DESC]]   #도서를 이름순으로 보고싶다

🚨SELECT 순서
FROM → ON/USING → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

DISTINCT: 중복을 제거

컬럼끼리 산술연산

  • NUMBER이나 DATE일 경우
  • DATE는 +,-만

WHERE 절

연산자

술어연산자
비교=,<>,<,<=,>,>=price<20000
범위BETWEENprice BEETWEN 10000 AND 20000
집합IN, NOT INprice IN(10000,20000,30000)
패턴 LIKEbookname LIKE ‘축구의 역사’
NULLIS NULL, IS NOT NULLprice is NULL
복합조건AND, OR, NOT(price<20000) AND (bookname LIKE ‘축구의 역사’)

📋oracle
<>, !=, ^=는 같지않다는 연산자!
||는 연결연산자

SELECT 컬럼명||'의 급여는'|| 컬럼명 FROM 테이블명;
-- 결과: 홍길동의 급여는 500

와일드 문자

와일드문자의미
+문자열을 연결‘골프’ + ‘바이블’: ‘골프 바이블’
%0개 이상의 문자열과 일치‘%축구%’: 축구를 포함하는 문자열
[ ]1개의 문자와 일치‘[0-5]%’: 0-5사이 숫자로 시작하는 문자열
[^]1개의 문자와 불일치‘[^0-5]%’: 0-5사이 숫자로 시작하지 않는 문자열
_특정위치의 1개의 문자와 일치‘_구%’: 두번째 위치에 ‘구’가 들어가는 문자열

GROUP BY절

데이터를 원하는 그룹으로 나누고 싶을 때 사용

HAVING 절

WHERE절에서는 그룹함수를 사용할 수 없기 때문에 GROUP BY 이후 조건적으로 데이터를 선별하고 싶을 때 사용

<주의>

문법주의사항
GROUP BY <속성>맞는 예
SELECT custid, SUM(saleprice)
FROM Orders
GROUP BY custid;

틀린 예
SELECT bookid, SUM(saleprice) //select절에 bookid 속성이 올 수 없다.
FROM Orders
GROUP BY custid;
HAVING <검색조건>맞는 예
SELECT custid, COUNT() AS 도서수량FROM Orders
WHERE salesprice >= 8000
GROUP BY custid
HAVING count(
) >= 2;

틀린 예
SELECT custid, COUNT() AS 도서수량
FROM Orders
HAVING count(
) >=2 //순서가 틀렸음
WHERE saleprice >= 8000
GROUP BY custid;

0개의 댓글