JDBC JAVA 언어를 사용하여 응용프로그램을 개발하는 경우, 가장 널리 사용되는 표준적인 DBMS 인터페이스 방식 DBMS에 접근하여 데이터를 사용하기 위한 Java API 제공 💡 기능 DBMS 서버에 접속 SQL 문을 전송 전달된 결과를 처리 💡 종류 🎀 Type 1: JDBC-ODBC 브리지와 ODBC 드라이버 사용 🎀 Type 2: Native-APi (클라이언트 라이브러리) + Java JDBC 드라이버 🎀 Type 3: 순수 Java JDBC 드라이버 + 서버 라이브러리 🎀 Type 4: 순수 Java JDBC 드라이버 Type1, Type2는 드라이버 외 부가적인 라이브러리 사용 Type3, Type4는 드라이버 외 부가적인 라이버러리 사용 X Type3은 여러 DBMS에 접근 가능 Ty..
트리거 테이블에 이벤트가 발생하면 자동으로 실행되는 작업 데이터베이스 작업을 제한하거나, 작업의 기록log, 작업에 대한 감사audit를 수행하기 위해 사용 트리거의 구성요소 : 이벤트, 조건, 동작 행 트리거 : 테이블 내에 변경되는 행에 대해 각각 실행 문장 트리거 : INSERT UPDATE DELETE 문장 전체에 대해 실행 [트리거 정의] CREATE\[OR REPLACE\] TRIGGER \[BEFORE|AFTER\] \[INSERT|UPDATE|DELETE\] ON \[FOR EACH ROW|FOR EACH STATEMENT\] \[WHEN condition\] BEGIN ... END; [트리거 삭제] DROP TRIGGER [트리거 카탈로그] ALL_TRIGGERS : 데이터베이스 내의 ..
함수 SP와 동일하게 데이터베이스에 저장되는 서브루틴이며 값을 리턴할 수 있다 함수는 SQL 문장 내에서 사용 가능 [함수 정의] CREATE\[OR REPLACE\] FUNCTION { \[IN|OUT|IN OUT\] (data\_type), \[IN|OUT|IN OUT\] (data\_type), ... } IS|AS ... return data\_type; BEGIN ... return expression; END; [함수 삭제] DROP FUNCTION [함수 카탈로그 정보] ALL_OBJECTS : where 절 조건에 object_type = 'FUNCTION' 사용 USER_PROCEDURES : 사용자가 정의한 프로시저 및 함수 USER_SOURCE : 함수 소스 코드( 컴파일 에러 발생도..
저장 프로시저(SP, Stored Procedure) 데이터베이스 내에 저장된 서브루틴 영구저장모듈(PSM) 이라고도 함 데이터 뿐만아니라 처리 로직을 DB에 저장할 수 있음을 의미 SQL/PSM 표준이 있으나 DBMS 별로 구문에 차이가 존재 Oracle의 경우 PL/SQL : 표준 SQL 언어 + 변수, 정의, 조건문, 반복문 등의 기능을 가짐 범용 프로그래밍 언어 사용 가능 (Oracle의 경우 Java) 💡 저장프로시저의 장점 하나의 요청으로 일련의 SQL문을 수행 미리 컴파일되어 있는 코드를 실행하므로 처리시간이 줄어듬 응용프로그램 수준의 데이터 무결성 관리를 대신함 응용프로그램을 수정하지 않고서도 프로그램의 동작을 변경 💡 저장프로시저의 단점 DBMS 별로 SP 지원 방식 및 기능에 차이가 있..
View 란? 다른 테이블로 유도된 가상의 테이블 기본 테이블은 데이터가 실제 데이터베이스에 저장되지만 뷰의 경우 정의만 저장 뷰를 기반으로 새로운 뷰를 정의할 수 있음 create view [컬럼 이름 리스트] as select 문 [with check option]; -- where 절이 만족되는지 체크 (생략가능) select 문은 union 또는 order by를 포함할 수 없음 컬럼명을 지정하지 않으면 select 결과의 컬럼명과 동일 View 의 확인 all_catalog : 테이블, 뷰, 시퀀스 확인 all_view : 뷰의 정의 확인 View 의 삭제 drop view [restric|cascade] restric : 가 다른 곳에 사용되지 않을 때만 삭제 cascade : 해당 뷰를 사용..
부속질의 select문 안에 포함된 select문 --'C413'과목을 등록한 학생 이름을 검색하라 select sname from STUDENT where sno in (select sno from ENROL where cno = 'C413'); --학번이 100인 학생과 동일한 학과에 속한 학생을 모두 찾아라 select sname from STUDENT where dept = (select dept from STUDENT where sno = 100 ); 카티션 프로덕트 from절에 여러 개의 테이블을 지정하면 카티션 프로덕트 생성 select * from STUDENT, ENROL; 조인 Join은 자식테이블의 외래키와 부모테이블의 기본키 사이에서 자주 사용 아무 관계가 없는 테이블의 컬럼들 사이..
데이터 조작어 데이터 조작을 위해서는 CREATE, READ, UPDATE, DELETE 연산이 가능해야함 SQL의 DML은 insert, select, update, delete 명령문에 해당 💡insert insert into values (...); 💡 update : 레코드 값을 변경 update set , ... (where 조건식) 💡 delete : 테이블 내 행 삭제 delete _\-- 테이블 내의 모든 행 삭제_ delete where 조건식 _\-- 조건에 해당하는 행 삭제_ 🎀 delete와 drop table 과의 차이점 drop table은 테이블의 정의까지 삭제 delete는 테이블 정의는 남아있음 💡 commit 이전 commit 시점부터 현재 commit 명령 실행 시점까지..
💡 select : 조건에 맞는 데이터를 검색 select 컬럼1, 컬럼2 ... from [where ] -- '산공'과 4학년 학생들의 이름을 찾아라 select sname from student where dept = '산공' and year = 4; -- 기말고사 또는 중간고사의 성적이 90점 이상인 학생들의 학번을 찾아라 select sno from enrol where midterm < finterm; 💡 select distinct : 중복된 레코드는 한 번만 출력 💡 order by : select 결과를 정렬하여 출력 asc : 오름차순 desc : 내림차순 select * from order by 컬럼1 [asc|desc]; select * from STUDENT order by yea..
테이블 생성 명령어 create table ( 컬럼1 자료형1 [constraint 제약조건이름] [제약조건], 컬럼2 자료형2 [constraint 제약조건이름] [제약조건], ... ); 제약조건 💡 not null : 해당 컬럼이 null값을 가지면 안됨 create table STUDENT ( sname nchar(3) constraint sname_always_exists not null -- 또는 sname nchar(3) not null -- 제약 조건의 이름이 주어지지 않은 경우에는 시스템이 자동으로 이름 생성 ); 💡 primary key : 해당 컬럼이 기본키임을 나타냄 테이블에 최대 한 번만 정의 null이 될 수 없음 create table STUDENT ( sno number(3)..
관계 데이터베이스 모든 데이터는 릴레이션으로 표현한다. 릴레이션 ≒ 테이블(표) 릴레이션 릴레이션 : 스키마 + 인스턴스 스키마 : 속성들의 집합 👉 시간에 따라 변하지 않음 인스턴스 : 투플들의 집합 👉 시간에 따라 변함 릴레이션의 특성 투플의 상이성 투플의 무순서성 속성의 무순서성 속성의 원자성 : 관계 데이터 모델은 정규화 릴레이션만을 대상으로 함 데이터베이스 키 키(key) 릴레이션 내의 투플을 항상 유일하게 식별할 수 있는 속성들의 집합 동일한 투플이 존재할 수 있다면 키가 될 수 없음 후보키(candidate key) 유일성, 최소성을 만족하는 키 -> 하나의 속성이라도 제외하면 키가 되지 못함 모든 릴레이션은 적어도 하나의 후보키를 갖음 슈퍼키(super key) 유일성은 만족하나 최소성은 ..