슬라이드 1

Download Report

Transcript 슬라이드 1

데이터베이스 프로그래밍
Department of Computer Software
MyongJi University
SQL*PLUS 실습
 테이블 생성
 테이블 생성
SQL> CREATE TABLE students (
id
int,
name
varchar2(20) );
 테이블 수정
SQL> ALTER TABLE students
ADD department_id number(2) NULL;
 테이블 수정 확인
SQL> desc students
SQL*PLUS 실습
 테이블 생성
 데이타 행 입력, 검색
 ‘INSERT INTO 테이블명 VALUES (값)’의 형식을 취함
SQL> INSERT INTO students VALUES
(1, ‘Ham Sungho’, 20);
SQL> INSERT INTO students VALUES
(2, ‘Kang Seonggoo’, 30);
SQL> SELECT * FROM students;
SQL*PLUS 실습
 테이블 생성
 테이블 수정
SQL> ALTER TABLE students
ADD address varchar2(20) DEFAULT ‘Seoul’ NOT NULL;
SQL> SELECT * FROM students;
 기본키 설정
SQL> ALTER TABLE students
ADD CONSTRAINT pk_students_id PRIMARY KEY (id);
SQL*PLUS 실습
 테이블 생성
 테이블을 새로 만들면서 동시에 기본키 설정
 user_constraints 데이타 딕셔너리 이용
SQL> DROP TABLE students;
SQL> CREATE TABLE students (
id int NOT NULL
CONSTRAINT pk_students_id PRIMARY KEY,
name varchar2(20) NOT NULL,
address varchar2(20)
DEFAULT ‘Seoul’ NOT NULL
);
SQL> DESC students;
SQL> SELECT constraint_name, constraint_type, table_name
FROM user_constraints;
SQL*PLUS 실습
 외래키 설정
 테이블 생성
 오라클 설치시 옵션에 따라 dept 테이블이 생성될 수 있으므로
drop table 시키거나, 여기서 처럼 다른 이름 department로 생
성
SQL> CREATE TABLE department (
dept_id number(2) NOT NULL PRIMARY KEY,
dept_name varchar2(30) NOT NULL
);
SQL> DROP TABLE students;
SQL> CREATE TABLE students (
std_id
int NOT NULL PRIMARY KEY,
std_name varchar2(30) NOT NULL,
dept_id number(2) NOT NULL
);
SQL*PLUS 실습
 외래키 설정
 데이타 행 삽입
 학과번호 ‘99’가 현재 없지만, 외래키가 설정되어 있지 않으므
로 아무런 오류가 발생하지 않음
SQL> INSERT INTO dept VALUES (10, ‘Computer’);
SQL> INSERT INTO dept VALUES (20, ‘EE’);
SQL> INSERT INTO dept VALUES (30, ‘MAE’);
SQL> INSERT INTO students VALUES
(1, ‘Ham Sungho’, 20);
SQL> INSERT INTO students VALUES
(2, ‘Kang Seonggoo’, 30);
SQL> INSERT INTO students VALUES
(3, ‘Seo Sehoon’, 99);
SQL*PLUS 실습
 외래키 설정
 외래키 미설정시 오류보고
SQL> ALTER TABLE students
ADD CONSTRAINT fk_stu_deptid
FOREIGN KEY (dept_id) REFERENCES dept(dept_id);
 외래키 제약을 만족시키는 데이타 행 삽입 후 외래키 설정
SQL> INSERT INTO dept VALUES(99, ‘IE’);
SQL> ALTER TABLE students
ADD CONSTRAINT fk_stu_deptid
FOREIGN KEY (dept_id) REFERENCES dept(dept_id);
SQL*PLUS 실습
 외래키 설정
 외래키 제약을 위반하는 데이타 행 입력 오류보고
SQL> INSERT INTO students VALUES
(4, ‘Kim Sunyoung’, 33);
 참조 당하는 테이블의 삭제시 오류보고
SQL> DROP TABLE dept;
SQL*PLUS 실습
 외래키 설정
 참조 당하는 테이블의 삭제 및 확인
 ‘CASCADE’ 명령어를 이용
SQL> DROP TABLE dept CASCADE CONSTRAINTS;
SQL> SELECT constraint_name, constraint_type, table_name
FROM user_constraints;
SQL*PLUS 실습
뷰
 테이블의 특정 열만으로 뷰 구성하기
 오라클 설치시 옵션에 따라 view_dept20 뷰가 생성되기 때문
에 drop view를 하거나 아래와 같이 다른 이름으로 생성
SQL> CREATE VIEW view_dept20 AS
SELECT ename, sal*12 AS annual_salary
FROM emp
WHERE deptno = 20;
SQL> DESC view_dept20;
SQL> SELECT ename, annual_salary
FROM view_dept20;
SQL*PLUS 실습
뷰
 여러 개의 테이블을 조인하여 뷰 구성
 오라클 설치시 옵션에 따라 view_ed가 생성될 수 있으므로 앞
의 예처럼 drop 시키거나 새로운 이름으로 만들어야 함
SQL> CREATE VIEW view_ed AS
SELECT e.empno, e.ename, d.deptno, d.loc
FROM emp e, dept d
WHERE e.deptno = d.deptno;
SQL> SELECT * FROM view_ed;
SQL*PLUS 실습
뷰
 집단 함수를 사용하여 뷰 구성하기
 오라클 설치시 옵션에 따라 view_avg_sal가 생성될 수 있으므
로 앞의 예처럼 drop 시키거나 새로운 이름으로 만들어야 함
SQL> CREATE VIEW view_avg_sal(deptno, avg_sal) AS
SELECT deptno, AVG(sal)
FROM emp
GROUP BY deptno;
SQL> SELECT * FROM view_avg_sal;
SQL> SELECT avg_sal FROM view_avg_sal;
SQL*PLUS 실습
뷰
 뷰에 대한 뷰의 정의
 오라클 설치시 옵션에 따라 view_edjoin30이 생성될 수 있으
므로 앞의 예처럼 drop 시키거나 새로운 이름으로 만들어야
함
SQL> CREATE VIEW view_ed30 AS
SELECT *
FROM view_ed
WHERE deptno=30;
SQL> SELECT * FROM view_ed30;
 뷰에 대한 정보 보기
SQL> SELECT view_name, text FROM user_views;
SQL*PLUS 실습
 commit과 rollback
 DML(Data Manipulation Language)에 해당하는 insert, delete, update 명
령은 commit을 시키지 않으면, 디스크에 영구적으로 반영되지 않음.
DDL(Data Definition Language)은 이와 반대로 라인 단위로 commit되므
로 별도의 commit은 수행하지 않아도 됨.
 테이블 생성과 데이타 삽입
SQL*PLUS 실습
SQL> CREATE TABLE test(
id number(4,0) PRIMARY KEY,
name varchar2(20),
address varchar2(200),
phone char(14),
email varchar2(100),
age number(3,0)
);
SQL> INSERT INTO test VALUES (1, ‘함성호’,
‘서울 강남 11-11’,‘123-2345’, ‘email@computer’, 25);
SQL> INSERT INTO test VALUES (2, ‘강성구’,
‘서울 관악 55-55’,‘234-4567’, ‘test@machine’, 26);
SQL*PLUS 실습
 commit과 rollback
 rollback 실행 후 결과 비교
 INSERT 구문에 의한 데이타 입력이 모두 취소 되어 아무런 레
코드도 출력되지 않음을 확인
SQL> ROLLBACK;
SQL> SELECT * FROM test;
SQL*PLUS 실습
 commit과 rollback
 commit 실행 후 결과 비교
 다시 데이타를 삽입하고 나서 commit을 하면 다음의 결과를 확인할 수 있으
며, rollback을 다시 시킨다 하더라도 입력된 데이타가 그대로 남아 있음을 확
인
SQL> INSERT INTO test VALUES (1, ‘함성호’,
‘서울 강남 11-11’,‘123-2345’,‘email@computer’, 25);
SQL> INSERT INTO test VALUES (2, ‘강성구’,
‘서울 관악 55-55’,‘234-5678’, ‘test@machine’, 26);
SQL> COMMIT;
SQL> SELECT * FROM test;