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;