중복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는 +,-만
술어 | 연산자 | 예 |
---|---|---|
비교 | =,<>,<,<=,>,>= | price<20000 |
범위 | BETWEEN | price BEETWEN 10000 AND 20000 |
집합 | IN, NOT IN | price IN(10000,20000,30000) |
패턴 LIKE | bookname LIKE ‘축구의 역사’ | |
NULL | IS NULL, IS NOT NULL | price 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개의 문자와 일치 | ‘_구%’: 두번째 위치에 ‘구’가 들어가는 문자열 |
데이터를 원하는 그룹으로 나누고 싶을 때 사용
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; |