(1) SELECT 문의 구조
SELECT 컬럼명 1, 컬럼명 2 . . .
FROM 테이블명
[WHERE 검색조건];
Ch4의 관계 대수에서 셀렉트와 푸로젝트 연산이 SELECT로 표현된 것이다.
<SELECT 문 작성하는 순서>
1. 질의를 해결하기 위해 어떤 테이블을 검색해야 하는가? -> FROM 테이블명
2. 질의에서 요구되는 정보는 어느 칼럼에 있는가? -> SELECT 컬럼명
3. 데이터를 검색하기 위한 조건은 무엇인가? -> WHERE 검색조건
(2) WHERE 절에서 검색 조건의 작성
<WHERE 절에서 조건 지정 시 사용할 수 있는 키워드>
비교 연산자 : <> 같지 않다 , = 같다 , >= 이후, < 이전
논리 연산자 : AND , OR, NOT
SELECT 문에서 WHERE 절이 생략되면 모든 튜플을 선택한다는 것을 의미한다.
(3) 널(NULL) 값의 비교
널 값은 테이블에 데이터를 입력하는 시점에서 어떤 값을 넣어야 할지 알 수 없거나 넣을 값이 존재하지 않을 때 입력하는 특별한 값, 공백이나 0과는 다른 특수한 값
어떤 컬럼의 값이 NULL인지 여부를 알아보려면 IS NULL 또는 IS NOT NULL 사용
비교연산 수행 시 NULL값은 아예 비교 대상에서 제외된다.
(4) 숫자, 문자, 날짜의 비교
WHERE 절에서 값을 비교할 때 칼럼의 자료형이 숫자인 경우는 1234와 같이 쓰면 되고, 문자나 날짜의 경우는 작은따옴표로 묶어서 표현한다.
(5) WHERE 절에서 다수의 값 비교
BETWEEN . . AND : 비교하는 값이 지정 범위 안에 있는지 비교
NOT BETWEEN . . AND : 비교하는 값이 지정 범위 밖에 있는지 비교
IN ( . . . ) : 비교하는 값이 지정 범위 안에 있는지 비교
NOT IN ( . . .) : 비교하는 값이 지정 범위 밖에 있는지 비교
select ename, job, sal
from emp
where job in ('ANALYST', 'CLERK', 'MANAGER') ;
// where 쓸 때 순서 주의 + 괄호 필수
조건을 지정할 때 여러 개의 값 중 하나와의 일치 여부를 표현할 때 조건을 AND나 OR로 여러 개 연결하는 것보다 IN을 사용하는 것이 편리
(6) 문자 컬럼의 부분 비교
<WHERE 절에서 문자 컬럼의 값과 부분 비교 시 사용할 수 있는 키워드>
LIKE :문자 속성의 컬럼에 대해 지정한 문자열을 포함하는지 비교
% : LIKE과 함께 사용되며 임의의 개수의 문자를 표현
_ : LIKE과 함께 사용되며 하나의 문자를 표현
select ename, job
from emp
where job like '_A%';
// where 쓸 때 순서 주의
<SELECT 문 안에서 사용할 수 있는 내장 함수>
COUNT ( ) : 튜플의 개수 반환
MAX ( ) : 최댓값 반환
MIN ( ) : 최솟값 반환
AVG ( ) : 평균값 반환
SUM ( ) : 합계값 반환
(1) 튜플의 개수 카운트 : COUNT( )
COUNT(*)를 하면 결과 칼럼 이름이 함수 이름인 COUNT(**)으로 표시 되는데 AS를 사용하면 원하는 이름으로 표시할 수 있음
SELECT COUNT(*) AS cnt_salesman
FROM emp
WHERE job = 'SALESMAN';
(2) 칼럼의 최댓값 : MAX ( )
SELECT MAX(sal)
FROM emp;
(3) 칼럼의 최솟값 : MIN ( )
SELECT MIN(sal)
FROM emp;
(4) 칼럼의 평균 : AVG ( )
SELECT AVG(sal)
FROM emp;
(5) 칼럼의 합계 : SUM ( )
SELECT SUM(sal)
FROM emp;
(1) 정렬: ORDER BY
WHERE 절 다음에 서술하며 오름차순(ASC) 과 내림차순(DESC)이 있다.
정렬 조건이 두 개이면 앞쪽에 있는 튜플을 1차 정렬 후 2차 정렬한다.
(2) 그룹: GROUP BY
❗ GROUP BY를 사용할 때 SELECT 다음에 오는 컬럼에 주의
1) GROUP BY에 사용한 컬럼이 올 수 있다.
2) COUNT( ) , MAX( ) 와 같은 집계 함수를 적용한 컬럼이 올 수 있다.
이 두 경우를 제외한 컬럼을 SELECT에 사용하면 오류 발생
SELECT deptno, ename, AVG(sal) AS avg_sal
FROM emp
GROUP BY deptno ;
//에러 발생 ( ename 칼럼이 GROUP BY와 함께 쓸 수 없는 컬럼임)
데이터베이스 및 데이터베이스 내의 개체(테이블, 뷰, 인덱스 등)를 정의한다.
-CREATE
테이블에 저장된 데이터를 조건에 맞게 조회한다.
-SELECT
테이블에 새로운 데이터(튜플)를 추가한다.
-INSERT
테이블에 저장된 데이터(튜플)를 삭제한다.
-DELETE
사용자에게 접근/사용 권한을 부여한다.
-GRANT