5.1.1 애스터 리스크
SELECT * FROM dept;
*을 기술하면 테이블의 전체 열 조회
DESC dept
DESC 명령어로 테이블의 열 정보 확인 가능
5.1.2 열
SELECT dname, deptno FROM dept;
조회할 열을 기술할 수 있음. 열은 쉼표로 구분함
5.1.3 열 별칭
SELECT deptno dept_no, dname AS dept_nm, loc AS "Location" FROM dept;
열에 별칭을 지정할 수 있음. 큰 따옴표로 별칭을 감싸면 제약을 회피할 수 있음.
5.1.4 DISTINCT 키워드
SELECT DISTINCT deptno FROM emp;
DISTINCT 키워드나 UNIQUE 키워드를 기술하면 중복행이 제거된 결과를 반환함.
5.2 FROM 절
FROM 절에 조회할 테이블을 기술할 수 있음. 테이블은 쉼표로 구분함. 2개 이상의 테이블을 기술하면 조인이 수행됨.
5.2.1 스키마
테이블에 스키마를 지정하면 해당 스키마의 테이블을 조회할 수 있다.
SELECT scott.dept.deptno FROM scott.dept;
-> SELECT 스키마.테이블.열 FROM 테이블.열;
5.2.2 테이블 별칭
테이블에 별칭을 부여할 수 있다.
SELECT a.deptno FROM dept a;
-> dept라는 테이블을 a라는 별칭으로 지정하였음
5.2.3 SAMPLE 절
테이블을 샘플링하여 조회할 수 있다.
SELECT * FROM dept SAMPLE (30);
-> 총 데이터의 30%를 샘플링 하는 듯?
5.3.1 리터럴
프로그래밍 언어의 상수와 유사함.
문자, 숫자, 날짜, 인터벌 리터럴을 사용 가능
5.3.1.1 문자 리터럴
문자 리터럴은 작은 따옴표( ' )로 감싸서 기술한다.
리터럴은 전체 행에서 동일한 값을 반환한다.
SELECT 'Department' AS c1, deptno FROM dept;
-> c1의 모든 행의 값은 모두 Department가 됨
5.3.2 널(null)
오라클 데이터베이스는 널과 빈 문자('')를 동일하게 처리한다.
5.3.3 연산자
일반적으로 우리가 생각하는 연산자와 동일.
0으로 나눌 경우 에러가 발생
SELECT 1/0 FROM DUAL;
-> 에러 발생
날짜 값의 산술연산에 사용되는 숫자 값은 일(day)수로 계산됨.
5.3.3.2 연결 연산자 (||)
문자 값이 아닌 피연산자는 문자 값으로 변환된다. 널(null)은 무시된다.
SELECT 1 || NULL || 'A' AS c1 FROM DUEL;
-> c1의 1행 값은 1A가 됨.
5.3.4.1 CASE 표현식
IF THEN ELSE 논리를 평가할 수 있다.
SELECT deptno, CASE deptno WHEN 10 THEN 1 WHEN 20 THEN 2 ELSE 9 END AS c1 FROM dept;
-> deptno가 10이면 1을 return, 20이면 2를 return, 그 외에는 9를 return
만약 ELSE 절이 없으면 null이 return 됨.
- 검색 CASE 표현식
SELECT deptno, CASE WHEN deptno BETWEEN 10 AND 20 THEN 1
WHEN deptno BETWEEN 20 AND 30 THEN 2
ELSE 9
END AS c1
FROM dept;
조건에 맞으면 특정값을 return
5.4 바인드 변수
v1이라는 변수에 값을 할당하여 사용
VAR v1 NUMBER;
EXEC :v1 := 1;
SELECT :v1 AS c1 FROM DUAL;
'SQL > 불친절한 SQL 프로그래밍' 카테고리의 다른 글
6장 part.2 [단일 행 함수] (0) | 2022.09.22 |
---|---|
6장 [단일 행 함수] (0) | 2022.09.21 |