41
ORACLE ORACLE 버버 버버 : 9i : 9i

ORACLE

Embed Size (px)

DESCRIPTION

ORACLE. 버전 : 9i.  DDL(Data Definition language). 여러 가지 객체 , 즉 데이터베이스 , 테이블 , 인덱스 , 뷰 등을 생성하는 작업과 구조를 변경하는 작업을 위한 기능 CREATE : 데이터베이스 , 테이블 , 인덱스 , 뷰 등의 개체를 생성하기 위한 정의 문이다 . ALTER : CREATE 문에 의해 생성된 개체를 수정하는 - PowerPoint PPT Presentation

Citation preview

ORACLEORACLE

버전 버전 : 9i: 9i

DDL(Data Definition language)DDL(Data Definition language)

여러 가지 객체여러 가지 객체 , , 즉 데이터베이스즉 데이터베이스 , , 테이블테이블 , , 인덱스인덱스 , , 뷰 등을 뷰 등을 생성하는 작업과 구조를 변경하는 작업을 위한 기능 생성하는 작업과 구조를 변경하는 작업을 위한 기능

– CREATE : 데이터베이스 , 테이블 , 인덱스 , 뷰 등의 개체를 생성하기 위한 정의 문이다 . – ALTER : CREATE 문에 의해 생성된 개체를 수정하는 것으로 새로운 항목의 추가나 삭제 등 구조 변경의 경우나 , 또는 기존의 개체에 새로운

제약조건 등을 추가하거나 삭제하는 경우 등의

작업에 사용된다 .

– DROP : 테이블 스페이스나 테이블을 제거 .

▶ ▶ DB DB 접속하기 접속하기

ID : SYSTEMID : SYSTEM

PASSWORD : MANAGER0 PASSWORD : MANAGER0 – 오라클 설치 시 입력한 암호

DATABASE : ORA9 / DBLABDATABASE : ORA9 / DBLAB– 설치 중 입력한 SID 나 로컬네트서비스 이름

▶ ▶ 1.1 1.1 테이블 스페이스 생성하기테이블 스페이스 생성하기

CREATE TABLESPACE CREATE TABLESPACE 테이블스페이스 명 테이블스페이스 명 DATAFILE ‘DATAFILE ‘ 저장경로저장경로 \\ 파일명파일명 .DBF’ SIZE .DBF’ SIZE 용량용량 M; (M; ( 테이블 스페이스 테이블 스페이스

생성생성 ))

– CREATE TABLESPACE DB_HOME DATAFILE 'c:\oracle\oradata\DB_HOME.DBF' SIZE 100M;

CREATE USER CREATE USER 사용자이름 사용자이름 IDENTIFIED BY IDENTIFIED BY 암호암호 ; (; ( 유저생성유저생성 ) )

– CREATE USER MANAGE IDENTIFIED BY MANAGE1 DEFAULT TABLESPACE DB_HOME;

GRANT CONNECT, RESOURCE, DBA TO GRANT CONNECT, RESOURCE, DBA TO 사용자이름사용자이름 ; (; ( 권한 주기권한 주기 ))

– GRANT DBA TO MANAGE;

▶ ▶ 1.2 1.2 만든 테이블 스페이스로 재접속 만든 테이블 스페이스로 재접속

ID : MANAGE ID : MANAGE

PASSWORD : MANAGE1 PASSWORD : MANAGE1

– 오라클 설치 시 입력한 암호

DATABASE : ORA9 / DBLABDATABASE : ORA9 / DBLAB

– 설치 중 입력한 SID 나 로컬네트서비스 이름

▶ ▶ 1.3 1.3 테이블 스페이스 검색하기테이블 스페이스 검색하기

SELECT * FROM DBA_TABLESPACES;SELECT * FROM DBA_TABLESPACES;

– 생성된 테이블스페이스 확인 .

▶ ▶ 1.4 1.4 유저삭제와 테이블스페이스 삭제유저삭제와 테이블스페이스 삭제

유저삭제유저삭제

– DROP USER MANAGE( 사용자 이름 ) CASCADE;

테이블스페이스 삭제테이블스페이스 삭제

– DROP TABLESPACE DB-HOME( 테이블스페이스명 );

▶ ▶ 2.1 2.1 테이블 생성하기테이블 생성하기

테이블 생성구문 테이블 생성구문

CREATE TABLE 테이블명 (

열이름 데이터 타입 열이름 데이터 타입 NOT NULL DEFAULT NOT NULL DEFAULT 기본값기본값 , ,                   PRIMARY KEY(PRIMARY KEY( 열이름열이름 ), ),                   UNIQUE UNIQUE 열이름열이름 , ,                 FOREIGN KEY FOREIGN KEY 열이름 열이름 REFERENCES REFERENCES 테이블명테이블명 (( 열이름열이름 )) ); );

▶ ▶ 2.1 2.1 테이블 생성하기 테이블 생성하기 (( 예문예문 ))

테이블 생성 예문 테이블 생성 예문 CREATE TABLE SANGPUMCREATE TABLE SANGPUM ((

상품코드 상품코드 CHAR(10) NOT NULL,CHAR(10) NOT NULL, 소코드 소코드 CHAR(10) NOT NULL,CHAR(10) NOT NULL, 색상코드 색상코드 CHAR(10) NOT NULL,CHAR(10) NOT NULL, 사이즈 사이즈 CHAR(10) NOT NULL,CHAR(10) NOT NULL, 재고수량 재고수량 INTEGER DEFAULT '0', -- INTEGER DEFAULT '0', -- 재고수량의 기본값은 재고수량의 기본값은 0 0 이다이다 .. PRIMARY KEY (PRIMARY KEY ( 상품코드상품코드 ))

););

▶ ▶ 2.2 2.2 모든 테이블 검색하기모든 테이블 검색하기

SELECT * FROM TAB;SELECT * FROM TAB;

– ‘SANGPUM’ 이란 테이블이 검색됨 .

▶ ▶ 2.3 2.3 테이블 삭제하기와 이름변경테이블 삭제하기와 이름변경

테이블 삭제테이블 삭제– DROP TABLE SANGPUM( 삭제 할 테이블 명 );

테이블 이름변경테이블 이름변경– RENAME SANGPUM( 변경 전 이름 ) TO 상품 ( 변경 후 이름 );

테이블이름이 상품으로 변경됨

▶ ▶ 2.4 2.4 테이블 내 컬럼보기테이블 내 컬럼보기

SELECT * FROM SELECT * FROM 상품 상품 ( ( 테이블 이름 테이블 이름 ););

테이블 생성시 입력한 컬럼들을 확인

▶ ▶ 2.5 2.5 테이블 내 컬럼추가 및 기본값 테이블 내 컬럼추가 및 기본값 설정하기 설정하기

ALTER TABLE ALTER TABLE 테이블 이름 테이블 이름 ADD ( ADD ( 컬럼이름 테이터 형 컬럼이름 테이터 형 DEFAULT DEFAULT 기본값기본값 ););

– ALTER TABLE 상품 ADD ( 비고 CHAR(10)DEFAULT ' 정품 ');

비고라는 컬럼이 추가되었지만 ,

기본값은 데이터가 입력되지 않았기 때문에 보이지 않는다 .

▶ ▶ 2.6 2.6 컬럼 데이터 크기 변경컬럼 데이터 크기 변경

ALTER TABLE ALTER TABLE 테이블 이름테이블 이름 ; ; MODIFY( MODIFY( 컬럼이름 변경할 데이터 형컬럼이름 변경할 데이터 형 (( 크기크기 ) );) );

ALTER TABLE 상품 MODIFY( 비고 CHAR(30));

▶ ▶ 2.7 Oracle Enterpise Manager2.7 Oracle Enterpise Manager 에서 에서 확인하기확인하기

2.5 확인 ( 비고 , 기본값)

2.6 확인 ( 비고 크기 변경)

시작 ORACLE Enterprise Manager Consol Enterprise Manager Consol 독립적 실행 독립적 실행

유저유저 // 암호입력 암호입력 스키마 스키마 유저선택 유저선택 테이블 선택 테이블 선택 (( 더블클릭더블클릭 ) )

▶ ▶ 2.8 2.8 컬럼 삭제하기컬럼 삭제하기

ALTER TABLE 테이블 이름 DROP COLUMN 컬럼이름 ; / / 또는 또는 DROP (DROP ( 컬럼이름컬럼이름 ); );

ALTER TABLE 상품 DROP COLUMN 비고 ;

/ DROP ( 비고 );

비고라는 컬럼이 삭제됨

▶ ▶ 3.1 3.1 제약조건제약조건 테이블 생성시 테이블 생성시

컬럼이름 데이터 형 ( 크기 ) CHECK ( CHECK ( 컬럼이름 컬럼이름 IN ( IN ( 입력 허용 값 입력 허용 값 ))

– CREATE TABLE 상품 ( 상품코드 CHAR(10) NOT NULL, 소코드 CHAR(10), 색상코드 CHAR(10), 사이즈 CHAR(10) CHECK ( 사이즈 IN ( 'S', 'M', 'L', 'XL')),

판매단가 INTEGER, 재고수량 INTEGER DEFAULT '0', -- 재고수량의 기본값은 0 이다

. PRIMARY KEY ( 상품코드 ) );

제약조건

재고수량 기본값 설정

▶ ▶ 3.2 3.2 제약조건 위배 제약조건 위배 데이터 삽입데이터 삽입

INSERT INTO 테이블이름 ( 컬럼이름 1, 컬럼이름 2, …… ) VALUES ( 데이터 1, 데이터 2, …..) 컬럼의 데이터 형과 크기에 맞게 순서대로 데이터를 넣어야 함 .

제약조건 위배 예 제약조건 위배 예 ))INSERT INTO 상품 ( 상품코드 , 소코드 , 색상코드 , 사이즈 , 판매단가 , 재고수량 )values( 'P1', 'S1', 'C1', 'XXL', 67000, 15 );

▶ ▶ 3.3 3.3 데이터 삽입 데이터 삽입 ( 1 )( 1 )

상품테이블에 데이터 입력상품테이블에 데이터 입력

INSERT INTO 상품 ( 상품코드 , 소코드 , 색상코드 , 사이즈 , 판매단가 , 재고수량 )

values( 'P1', 'S1', 'C1', 'XL', 67000, 15 );

입력된 데이터 값

▶ ▶ 3.3 3.3 데이터 삽입 데이터 삽입 ( 2 )( 2 )

다음 행에 ‘상품코드’만 추가하기다음 행에 ‘상품코드’만 추가하기insert into 상품 ( 상품코드 )

values( ‘P2’ );

‘P2’ 가 추가되고 , 재고수량의 기본값은 ‘0’

▶ ▶ 3.3 3.3 데이터 삽입 데이터 삽입 ( 3 )( 3 )

INSERT INSERT 데이터 삽입 후 데이터를 추가 하기 위한 쿼리 문데이터 삽입 후 데이터를 추가 하기 위한 쿼리 문 UPDATEUPDATE 사용사용 ( ( 삽입 후 삽입 후 INSERTINSERT 로 같은 행 다시 삽입 불가 로 같은 행 다시 삽입 불가 ))

UPDATE UPDATE 테이블이름테이블이름 SET SET 컬럼이름컬럼이름 1 = 1 = 데이터 값데이터 값 1 , 1 , 컬럼이름컬럼이름 2 = 2 = 데이터 값데이터 값 2, 2,

……. ……. WHERE WHERE 데이터가 있는 컬럼이름 데이터가 있는 컬럼이름 = = 데이터 값 데이터 값 ( WHERE( WHERE 절은 데이터를 입력 할 행을 나타낸다절은 데이터를 입력 할 행을 나타낸다 . ) . )

▶ ▶ 3.3 3.3 데이터 삽입 데이터 삽입 ( 3 ) ( 3 ) 예예

UPDATE UPDATE 상품상품 SET SET 소코드 소코드 = 'S2', = 'S2', 색상코드 색상코드 = 'C2', = 'C2', 사이즈 사이즈 = 'M', = 'M', 판매단가 판매단가 = 45000, = 45000, 재고수량재고수량 = '20'= '20' WHERE WHERE 상품코드 상품코드 = 'P2';= 'P2'; 상품 테이블에 상품코드가 ‘상품 테이블에 상품코드가 ‘ P2’P2’ 인 행에 나머지 컬럼에 데이터를 입력인 행에 나머지 컬럼에 데이터를 입력 ..

입력된 데이터 값

▶ ▶ 3.4 3.4 데이터 값 변경하기데이터 값 변경하기

UPDATE UPDATE 테이블이름테이블이름 SET SET 변경할 데이터의 컬러이름 변경할 데이터의 컬러이름 = = 변경되어 입력될 값 변경되어 입력될 값 WHERE WHERE 다른 컬럼이름 다른 컬럼이름 = = 다른 컬럼이름의 값다른 컬럼이름의 값 ; ; ( ( 변경될 데이터와 같은 행에 있는 값 변경될 데이터와 같은 행에 있는 값 ))

예 예 ) ) 상품코드가 상품코드가 'P2''P2' 인 행의 사이즈 컬럼의 값을 인 행의 사이즈 컬럼의 값을 'S''S' 로 변경로 변경 - UPDATE - UPDATE 상품 상품 SET SET 사이즈 사이즈 = 'S' WHERE = 'S' WHERE 상품코드 상품코드 = 'P2';= 'P2';

변경된 데이터 값( 사이즈 M S)

▶ ▶ 3.5 3.5 나머지 데이터 삽입나머지 데이터 삽입

▶ ▶ 3.6 3.6 테이블 추가 설명테이블 추가 설명

IDENTITY : IDENTITY : 레코드가 하나씩 추가 될 때마다 자동으로 값을 계산해서 입력 레코드가 하나씩 추가 될 때마다 자동으로 값을 계산해서 입력                                

NULLNULL 값 값 X, DEFALUTX, DEFALUT 값 값 X, X, 열에 값을 주지 않으면 열에 값을 주지 않으면 11 씩 씩 증가 증가

PRIMARY KEY : NULLPRIMARY KEY : NULL 값이 올 수 없고 값이 올 수 없고 UNIQUE UNIQUE 하다하다 . .

NOT NULL : NULL NOT NULL : NULL 값이 올 수 없다값이 올 수 없다 ..

UNIQUE : UNIQUE : 동일한 열에 동일한 값이 두 개 이상 올 수 없다는 제약 조건 동일한 열에 동일한 값이 두 개 이상 올 수 없다는 제약 조건

CHECK CHECK 절 절 : : 해당 열이 가질 수 있는 값의 범위를 지정 해당 열이 가질 수 있는 값의 범위를 지정

DEFAULT : DEFAULT : 해당 열에 값이 입력되지 않으면 자동으로 주어진 값으로 해당 해당 열에 값이 입력되지 않으면 자동으로 주어진 값으로 해당

FOREIGN KEY : FOREIGN KEY : 외래 키를 지정하여 참조되는 테이블에 수정외래 키를 지정하여 참조되는 테이블에 수정 , , 삭제가 발생하면 관련 테이블의 동작을 제한하여 삭제가 발생하면 관련 테이블의 동작을 제한하여

참조 무결성을 지키도록 하는 제약조건 참조 무결성을 지키도록 하는 제약조건

DML (Data Manipulation Language) DML (Data Manipulation Language)

데이터 정의어로 정의된 데이터베이스 스키마 내의 데이터를 데이터 정의어로 정의된 데이터베이스 스키마 내의 데이터를 조작하는데 조작하는데

사용된다사용된다 . .

사용자는 데이터 조작어를 사용하여 데이터를 검색하고사용자는 데이터 조작어를 사용하여 데이터를 검색하고 , , 삽입하고삽입하고 , , 삭제하고삭제하고 , , 수정한다수정한다 ..

• • SELECT :  SELECT :  테이블에서 기존의 레코드를 검색 테이블에서 기존의 레코드를 검색

  • • INSERT : INSERT : 테이블에서 새로운 레코드를 삽입 테이블에서 새로운 레코드를 삽입

  • • DELETE : DELETE : 테이블에서 특정레코드를 삭제 테이블에서 특정레코드를 삭제

  • • UPDATE : UPDATE : 테이블에서 특정레코드의 필드값을 수정 테이블에서 특정레코드의 필드값을 수정

SELECTSELECT 문은 여섯 개의 절로 이루어지지만 이중에서 문은 여섯 개의 절로 이루어지지만 이중에서 SELECTSELECT 절과 절과 FROMFROM 절만 필수적이고 나머지는 선택사항이다절만 필수적이고 나머지는 선택사항이다 . .

- SELECT - SELECT 구문 구문 --     •  • SELECT DISTINCT SELECT DISTINCT 필드필드 1, 1, 필드필드 2, ......2, ...... 필드필드 N FROM N FROM 테이블테이블 1, 1, 테이블테이블 2, .....2, .....

테이블테이블 N N         WHERE WHERE 조건식 조건식 (( 중첩질의가능중첩질의가능 ) )         GROUP BY GROUP BY 필드필드 1, 1, 필드필드 2, ......2, ...... 필드필드 N N         HAVING HAVING 조건식 조건식         ORDER BY ORDER BY 필드필드 1, 1, 필드필드 2... 2... 필드필드 N (ASC, DESC); N (ASC, DESC);      

  ✔  ✔ SELECT SELECT 절 절 : : 질의 결과에 포함하려는 필드들을 열거한다질의 결과에 포함하려는 필드들을 열거한다 . .   ✔  ✔ FROM FROM 절 절 : : 질의 작업에 사용 될 테이블들을 열거한다질의 작업에 사용 될 테이블들을 열거한다 . .   ✔  ✔WHERE WHERE 절 절 : : 특정 조건을 주고 조건에 만족하는 레코드만 검색하는 경우 특정 조건을 주고 조건에 만족하는 레코드만 검색하는 경우   ✔  ✔ GROUP BY GROUP BY 절 절 : : 특정 필드를 기준으로 동일한 값끼리 그룹으로 묶어 요약된 특정 필드를 기준으로 동일한 값끼리 그룹으로 묶어 요약된 결과를 검색 할 수 있게 하는 기능결과를 검색 할 수 있게 하는 기능 . .   ✔  ✔ HAVING HAVING 절 절 : GROUP BY: GROUP BY 의해 묶어진 그룹에서 조건을 주어 검색하고자 의해 묶어진 그룹에서 조건을 주어 검색하고자 할 때 사용하는 기능 할 때 사용하는 기능   ✔  ✔ ORDER BY ORDER BY 절 절 : : 오름차순오름차순 , , 내림차순 내림차순

▶ ▶ 1. SELECT1. SELECT 문문

▶ ▶ 2. SELECT2. SELECT 문 문 ( ORDER BY ( ORDER BY 절 절 ))

재고수량이 낮은 순으로 오름차순 정렬재고수량이 낮은 순으로 오름차순 정렬

SELECT 상품코드 , 색상코드 , 사이즈 , 재고수량 FROM 상품 ORDER BY 재고수량

▶ ▶ 3. SELECT3. SELECT 문 문 ( ORDER BY ( ORDER BY 절 절 ))

재고수량 내림차순 정렬 재고수량 내림차순 정렬 ( DESC )( DESC )

SELECT 상품코드 , 재고수량 FROM 상품 ORDER BY 재고수량 DESC

▶ ▶ 4. SELECT4. SELECT 문 문 ( DISTINCT )( DISTINCT )

사이즈 종류별로사이즈 종류별로 ( ( 동일한 값 동일한 값 ) ) 하나만 보여주기하나만 보여주기

SELECT DISTINCT 사이즈 FROM 상품

▶ ▶ 5. SELECT5. SELECT 문 문 ( ( 조건검색 조건검색 1 )1 )

판매단가가 판매단가가 5000050000 원보다 큰 것을 원보다 큰 것을 '' 상품코드상품코드 ', '', ' 색상코드색상코드 ', '', ' 사이즈사이즈 ', ', '' 판매단가판매단가 '' 로 검색로 검색

SELECT 상품코드 , 색상코드 , 사이즈 , 판매단가 FROM 상품 WHERE 판매단가 > 50000

▶ ▶ 6. SELECT6. SELECT 문 문 ( ( 조건검색 조건검색 2 )2 )

재고수량이 재고수량이 '15''15' 인 것 을 검색인 것 을 검색

SELECT 상품코드 , 소코드 , 재고수량 FROM 상품 WHERE 재고수량 = '15'

▶ ▶ 7. SELECT7. SELECT 문 문 ( ( 조건검색 조건검색 3 )3 )

사이즈가 사이즈가 'S''S' 가 아닌 것을 ‘상품코드’가 아닌 것을 ‘상품코드’ , ‘, ‘ 사이즈’사이즈’ , ‘, ‘ 재고수량’으로 검색재고수량’으로 검색

SELECT 상품코드 , 사이즈 , 재고수량 FROM 상품 WHERE 사이즈 <> 'S'

▶ ▶ 8. SELECT8. SELECT 문 문 ( ( 조건검색 조건검색 4 )4 )

'' 공급업체공급업체 ' ' 테이블에서 담당자가 테이블에서 담당자가 '2''2' 이고 계약금액이 이고 계약금액이 500000500000 만원 만원 이하인이하인

'' 업체코드업체코드 ', '', ' 업체명업체명 ', '', ' 담당자담당자 ', '', ' 계약업종계약업종 ', '', ' 계약금액계약금액 ' ' 검색검색

SELECT 상품코드 , 색상코드 , 사이즈 , 판매단가 FROM 상품 WHERE 판매단가 <= 70000 AND 사이즈 = 'M'

▶ ▶ 9. SELECT9. SELECT 문 문 ( ( 조건검색 조건검색 5 )5 )

판매단가가 판매단가가 5000050000 원 에서 원 에서 8000080000 원 사이에 속하지 않는 원 사이에 속하지 않는 모든 상품 정보를 검색모든 상품 정보를 검색 ..

SELECT * FROM 상품 WHERE NOT( 판매단가 >= 50000 AND 판매단가 <= 80000) ;

▶ ▶ 10. SELECT10. SELECT 문 문 ( ( 조건검색 조건검색 6 )6 )

상품 테이블에서 사이즈 컬럼의 데이터에 상품 테이블에서 사이즈 컬럼의 데이터에 'L''L' 이 들어가있는 이 들어가있는 ‘ ‘ 상품코드’와 ‘사이즈’를 검색상품코드’와 ‘사이즈’를 검색

SELECT 상품코드 , 사이즈 FROM 상품 WHERE 사이즈 LIKE '%L%'

▶ ▶ 11. SELECT11. SELECT 문 문 ( ( 조건검색 조건검색 7 )7 )

판매단가를 판매단가를 10%10% 인상한 값을 인상한 값을 '' 판매단가인상판매단가인상 '' 이란 이름으로 검색이란 이름으로 검색

SELECT 상품코드 , 판매단가 , 판매단가 *1.1 AS 판매단가인상 FROM 상품

▶ ▶ 12. SELECT12. SELECT 문 문 ( ( 조건검색 조건검색 8 )8 )

모든 상품의 판매단가를 ‘모든 상품의 판매단가를 ‘ 2.5%’2.5%’ 인상하되 인상하되 1000010000 단위 까지 반올림하여단위 까지 반올림하여 '' 상품코드상품코드 ', '', ' 판매단가판매단가 ','',' 판매단가인상판매단가인상 '' 을 출력을 출력

SELECT 상품코드 , 판매단가 , ROUND( 판매단가 *1.025, -4) AS 판매단가인상 FROM 상품

▶ ▶ 13. SELECT13. SELECT 문 문 ( ( 조건검색 조건검색 9 )9 )

소코드 소코드 'S2''S2' 에 해당하는 상품은 모두 몇 개 인지 검색에 해당하는 상품은 모두 몇 개 인지 검색

SELECT COUNT(*) FROM 상품 WHERE 소코드 = 'S2'

▶ ▶ 14. SELECT14. SELECT 문 문 ( ( 조건검색 조건검색 9 )9 )

소코드 별 소코드 별 "" 평균판매단가평균판매단가 ""

SELECT 소코드 , AVG( 판매단가 ) FROM 상품 GROUP BY 소코드

▶ ▶ 15. SELECT15. SELECT 문 문 ( ( 조건검색 조건검색 10 )10 )

행 집단을 선택하기 위해 사용 행 집단을 선택하기 위해 사용 (having(having 절절 ))

상품별 판매단가를 소코드 별로 그룹지어 합계를 계산하고 상품별 판매단가를 소코드 별로 그룹지어 합계를 계산하고 판매단가가 판매단가가 5000050000 원 이상인 결과만을 검색원 이상인 결과만을 검색

SELECT 소코드 , SUM( 판매단가 ) FROM 상품 GROUP BY 소코드 HAVING SUM( 판매단가 ) > 50000