Oracle SQL * Plus 실습
-
Upload
sacha-sellers -
Category
Documents
-
view
77 -
download
9
description
Transcript of Oracle SQL * Plus 실습
1Database & Internet Computing Laboratory, 2007
Oracle SQL*Plus 실습
Database & Internet Computing
Laboratory
한 양 대 학 교
Database & Internet Computing Laboratory, 2007
목차
1. 기본적인 SQL SELECT 문 작성
2. 데이터 제한과 정렬
3. 여러 테이블로 부터 여러 컬럼 표시
4. 그룹 함수를 사용한 데이터 모임
5. 서브 쿼리
Database & Internet Computing Laboratory, 2007
SQL Statement문장 설명
SELECT 데이터베이스로부터 데이터를 검색함
INSERT
UPDATE
DELETE
MERGE
새로운 데이터를 추가하고 , 이미 존재하는 데이터를 변경하고 , 테이블에서 원하지 않는 자료를 삭제함 . DML(Data Manipulation Language. 데이터 조작 언어 )
CREATE
ALTER
DROP
RENAME
TRUNCATE
테이블을 생성하고 , 변경하고 , 삭제하고 , 테이블 이름을 변경하고 , 테이블의 자료를 삭제함 .
DDL(Data Definition Language. 데이터 정의 언어 ).
COMMIT
ROLLBACK
SAVEPOINT
DML 문장으로 생성된 변화를 관리함 . 데이터에 대한 변화는 논리적인 트랜잭션으로 함께 그룹화될 수 있다 .
GRANT
REVOKE
오라클 데이터베이스와 그 내부의 구조에 대한 접근 권한을 주거나 박탈함 . DCL(Data Control
Language. 데이터 제어 언어 ).
Database & Internet Computing Laboratory, 2007
Oracle Datatype
Oracle 테이블 생성시 각 column 에 지정할 수 있는 데이터 타입들
DATA TYPE 설 명
VARCHAR2(n) 가변 길이 문자 데이터 (1~4000byte)
CHAR(n) 고정 길이 문자 데이터 (1~2000byte)
NUMBER(p,s) 전체 p 자리 중 소수점 이하 s 자리
DATE 날짜 (7Byte), 고정 길이 필드로 저장
LONG 가변 길이 문자 데이터 (1~2Gbyte)
CLOB 단일 바이트 가변 길이 문자 데이터 (1~4Gbyte)
RAW(n) n Byte 의 원시 이진 데이터 (1~2000), 크기가 적은 이진 데이터의 저장에 사용
LONG RAW 가변 길이 원시 이진 데이터 (1~2Gbyte)
BLOB 가변 길이 이진 데이터 (1~4Gbyte)
BFILE 가변 길이 외부 파일에 저장된 이진 데이터 (1~4Gbyte)
5Database & Internet Computing Laboratory, 2007
1. 기본적인 SQL SELECT 문 작성
Database & Internet Computing Laboratory, 2007
기본적인 Select 문
SELECT * | { [DISTINCT] column | expression [alias], …}
FROM table
SQL 문 작성
SQL 문은 대소문자를 구별하지 않는다 .
SQL 문은 하나 이상의 줄로 표현될 수 있다 .
키워드는 생략되거나 여러 줄로 분리될 수 없다 .
절 (Clause) 은 일반적으로 줄을 분리하여 표시한다 .
들여쓰기 (Indent) 는 가독성을 향상시키기 위해 사용된다 .
산술 연산자
+ , - , * , /
산술연산자는 FROM 절을 제외한 SQL 문의 어떤 절이라도 사용 가능 하다 .
Ex> SELECT ename, sal, sal + 300
FROM emp;
Database & Internet Computing Laboratory, 2007
컬럼 별칭 정의
컬럼 별칭 :
컬럼의 제목을 변경
계산식과 함께 사용될 경우 유용
Ex1> SELECT ename AS name, comm commission
FROM emp;
Ex2> SELECT ename “Name”, sal*12 “Annual Salary”
FROM emp;
Database & Internet Computing Laboratory, 2007
결합 연산자
결합 연산자 :
컬럼과 다른 컬럼의 문자열을 결합
2 개의 수직바 (||) 로 표현
문자열로 된 결과 컬럼을 생성
Ex1> SELECT ename || empno AS “Employees”
FROM emp;
Database & Internet Computing Laboratory, 2007
중복된 자료
Ex> SELECT deptno
FROM emp;
중복된 자료 제거
Ex> SELECT DISTINCT deptno
FROM emp;
10Database & Internet Computing Laboratory, 2007
2. 데이터 제한과 정렬
Database & Internet Computing Laboratory, 2007
WHERE 절의 사용
SELECT * | {[DISTINCT] column / expression [alias ], …}
FROM table
WHERE condition(s);
조건 (condition) 은 컬럼 이름 , 표현식 , 상수 , 비교 연산자로 구성된다 .
비교 연산자
Database & Internet Computing Laboratory, 2007
다른 비교 연산자
논리 연산자
Database & Internet Computing Laboratory, 2007
ORDER BY 절
ASC: 오름차순 정렬 (Default)
DESC: 내림차순 정렬
기본 정렬 순서는 오름차순이다 .
Null 값은 오른차순 정렬에는 마지막에 , 내림차순 정렬에는 처음에 표시된다 .
SELECT expr
FROM table
[WHERE condition(s)]
[ORDER BY { column, expr } [ASC|DESC]];
Database & Internet Computing Laboratory, 2007
Ex> SELECT empno, ename, sal*12 annsal
FROM emp
ORDER BY annsal;
Ex> SELECT ename, deptno, sal
FROM emp
ORDER BY deptno, sal DESC;
15Database & Internet Computing Laboratory, 2007
3. 여러 테이블로 부터 여러 컬럼 표시
Database & Internet Computing Laboratory, 2007
조인 (Join)
둘 이상의 테이블을 연결하여 데이터를 검색하는 방법
Equijoin ( 동등 조인 , 내부 조인 )
조건절 Equality Condition(=) 에 의한 조인
Non-equijoin
테이블의 어떤 컬럼도 조인할 테이블의 컬럼에 일치하지 않을 때 사용
동등 (=) 이외의 연산자를 가짐 (BETWEEN AND, IS NULL, IS NOT NULL, IN, NOT
IN)
Ex> SELECT emp.ename, dept.dname
FROM emp, dept
WHERE emp.deptno = dept.deptno;
Ex> SELECT emp.ename, dept.dname
FROM emp, dept
WHERE emp.sal BETWEEN 3000 AND 4000;
Database & Internet Computing Laboratory, 2007
Self join
Equijoin 과 동일하지만 하나의 테이블에서 조인이 발생
같은 테이블에 대해 두 개의 별칭을 지정함으로써 사용
Outer join
Equijoin 을 사용하려면 두 개의 테이블에서 두 개의 컬럼에 공통된 값이 존재해야만 함
Outerjoin 은 위의 조인 조건을 만족하지 못하는 행들을 보기 위해서 사용
조인 시킬 값이 없는 조인측에 “ (+)” 를 표시
Ex> SELECT a.ename, b.sal
FROM emp a, emp b
WHERE a.empno = b.empno;
Ex> SELECT DISTINCT(a.deptno), b.deptno
FROM emp a, dept b
WHERE a.deptno(+) = b.deptno;
18Database & Internet Computing Laboratory, 2007
4. 데이터 제한과 정렬
Database & Internet Computing Laboratory, 2007
그룹 함수 문법
종류
SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY
[column,] group function(column) , …
table
condition ]
column]
column] ;
중복불가 중복허용 ,default
Database & Internet Computing Laboratory, 2007
Example
Database & Internet Computing Laboratory, 2007
HAVING 절
포함된 그룹 함수
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY
[column,] group function(column) , …
table
condition ]
group_by_expression]
group_condition]
column] ;HAVING : Alias 사용불가
22Database & Internet Computing Laboratory, 2007
5. 서브쿼리
Database & Internet Computing Laboratory, 2007
서브 쿼리 문법
사용법
서브쿼리는 오직 GROUP BY 절에서는 사용될 수 없다 .
SELECT
FROM
WHERE
select_list
table
expr operator
(SELECT select_list
FROM table) ;
Single-Row Subqueries Multi-Row Subqueries
=
>
<
IN
> ANY , > ALL
< ANY , < ALL
Database & Internet Computing Laboratory, 2007
단일 데이터 서브 쿼리
Ex) SELECT
FROM
WHERE
AND
ename, job, sal
emp
job =
(SELECT job
FROM emp
WHERE empno = 7499)
Salary >
(SELECT sal
FROM emp
WHERE empno = 7369) ;
SALESMAN
800
Database & Internet Computing Laboratory, 2007
IN
Database & Internet Computing Laboratory, 2007
복수 데이터 서브 쿼리추가후
1600, 1250
SELCET empno, ename, job, sal
FROM emp
WHERE sal < any
(SELECT sal
FROM emp
WHERE job = ‘SALESMAN’)
AND job <> ‘SALESMAN’ ;
1600, 1250
SELCT empno, ename, job, sal
FROM emp
WHERE sal < all
(SELECT sal
FROM emp
WHERE job = ‘SALESMAN’)
AND job <> ‘SALESMAN’ ;
Database & Internet Computing Laboratory, 2007
서브 쿼리에서의 Null 값
주의 : 서브 쿼리에 결과값에 NULL 이 들어가면 메인 쿼리에 대해 엉뚱한 결과 값이 나올 수 있다 .---------------------------------------------------------------------------해결책 : IS NOT NULL 또는 NVL(manager_id, -1)
SELECT ename
From emp
Where comm NOT IN
(SELECT comm
FROM emp
WHERE empno = 7866);
SELECT ename
From emp
Where comm NOT IN
(SELECT comm
FROM emp
WHERE empno = 7866
AND comm IS NOT NULL);