27
1 Database & Internet Computing Laboratory, 2007 Oracle SQL * Plus 실실 Database & Internet Computing Laboratory 한 한 한 한 한

Oracle SQL * Plus 실습

Embed Size (px)

DESCRIPTION

Oracle SQL * Plus 실습. Database & Internet Computing Laboratory 한 양 대 학 교. 목차. 기본적인 SQL SELECT 문 작성 데이터 제한과 정렬 여러 테이블로 부터 여러 컬럼 표시 그룹 함수를 사용한 데이터 모임 서브 쿼리. SQL Statement. Oracle Datatype. Oracle 테이블 생성시 각 column 에 지정할 수 있는 데이터 타입들. 1. 기본적인 SQL SELECT 문 작성. 기본적인 Select 문 - PowerPoint PPT Presentation

Citation preview

Page 1: Oracle SQL * Plus  실습

1Database & Internet Computing Laboratory, 2007

Oracle SQL*Plus 실습

Database & Internet Computing

Laboratory

한 양 대 학 교

Page 2: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

목차

1. 기본적인 SQL SELECT 문 작성

2. 데이터 제한과 정렬

3. 여러 테이블로 부터 여러 컬럼 표시

4. 그룹 함수를 사용한 데이터 모임

5. 서브 쿼리

Page 3: Oracle SQL * Plus  실습

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. 데이터 제어 언어 ).

Page 4: Oracle SQL * Plus  실습

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)

Page 5: Oracle SQL * Plus  실습

5Database & Internet Computing Laboratory, 2007

1. 기본적인 SQL SELECT 문 작성

Page 6: Oracle SQL * Plus  실습

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;

Page 7: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

컬럼 별칭 정의

컬럼 별칭 :

컬럼의 제목을 변경

계산식과 함께 사용될 경우 유용

Ex1> SELECT ename AS name, comm commission

FROM emp;

Ex2> SELECT ename “Name”, sal*12 “Annual Salary”

FROM emp;

Page 8: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

결합 연산자

결합 연산자 :

컬럼과 다른 컬럼의 문자열을 결합

2 개의 수직바 (||) 로 표현

문자열로 된 결과 컬럼을 생성

Ex1> SELECT ename || empno AS “Employees”

FROM emp;

Page 9: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

중복된 자료

Ex> SELECT deptno

FROM emp;

중복된 자료 제거

Ex> SELECT DISTINCT deptno

FROM emp;

Page 10: Oracle SQL * Plus  실습

10Database & Internet Computing Laboratory, 2007

2. 데이터 제한과 정렬

Page 11: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

WHERE 절의 사용

SELECT * | {[DISTINCT] column / expression [alias ], …}

FROM table

WHERE condition(s);

조건 (condition) 은 컬럼 이름 , 표현식 , 상수 , 비교 연산자로 구성된다 .

비교 연산자

Page 12: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

다른 비교 연산자

논리 연산자

Page 13: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

ORDER BY 절

ASC: 오름차순 정렬 (Default)

DESC: 내림차순 정렬

기본 정렬 순서는 오름차순이다 .

Null 값은 오른차순 정렬에는 마지막에 , 내림차순 정렬에는 처음에 표시된다 .

SELECT expr

FROM table

[WHERE condition(s)]

[ORDER BY { column, expr } [ASC|DESC]];

Page 14: Oracle SQL * Plus  실습

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;

Page 15: Oracle SQL * Plus  실습

15Database & Internet Computing Laboratory, 2007

3. 여러 테이블로 부터 여러 컬럼 표시

Page 16: Oracle SQL * Plus  실습

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;

Page 17: Oracle SQL * Plus  실습

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;

Page 18: Oracle SQL * Plus  실습

18Database & Internet Computing Laboratory, 2007

4. 데이터 제한과 정렬

Page 19: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

그룹 함수 문법

종류

SELECT

FROM

[WHERE

[GROUP BY

[ORDER BY

[column,] group function(column) , …

table

condition ]

column]

column] ;

중복불가 중복허용 ,default

Page 20: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

Example

Page 21: Oracle SQL * Plus  실습

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 사용불가

Page 22: Oracle SQL * Plus  실습

22Database & Internet Computing Laboratory, 2007

5. 서브쿼리

Page 23: Oracle SQL * Plus  실습

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

Page 24: Oracle SQL * Plus  실습

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

Page 25: Oracle SQL * Plus  실습

Database & Internet Computing Laboratory, 2007

IN

Page 26: Oracle SQL * Plus  실습

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’ ;

Page 27: Oracle SQL * Plus  실습

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);