login.jsp 로그인 페이지 아이디 비밀번호 로그인 회원가입 login-data.jsp : 로그인 할 때 데이터 베이스에 있는 정보들을 비교해서 있으면 로그인 register.jsp : 유효성 검사 회원 기본 정보 아이디 4~12자의 영문 대소문자와 숫자로만 입력 비밀번호 4~12자의 영문 대소문자와 숫자로만 입력 비밀번호 확인 메일 주소 예) id@domain.com 이름 개인 신상 정보 주민등록번호 - 예)123456-1234567 생일 년 월 일 관심분야 컴퓨터 인터넷 여행 영화감상 음악감상 자기소개 data.jsp : register.jsp에서 입력한 정보를 받아서 데이터 베이스에 넘겨줌 admin.jsp : 로그인 완료시, 아이디가 admin(관리자)이면 관리자모드로, 아니면 사용자모드로 들..
JDBC : Java DataBase Connectivity - 자바 어플리케이션에서 표준화된 데이터 베이스 접근 제공 - 각 데이터 베이스 접속에 대한 상세한 정보를 알 필요 없음 - 이론적으로는 개발된 어플리케이션에서 DB변경 시 JDBC 드라이버만 교체 1. 구조 - 자바에서 데이터 베이스를 표준화 된 방법으로 접속할 수 있도록 만든 API 규격 - 데이터 베이스 벤더와 상관없이 동일한 개발 가능 Eclipse에 Database 연동 1. 오라클 JDBC 드라이버 - 사용자가 DB를 설치한 위치에서 product 파일안에서 들어가기 ex) D:\app\bit\product\11.2.0\dbhome_1\jdbc\lib - ojdbc6.jar 파일 [ctrl + c] 해서 복사 2. 설치 디렉터리 : ..
커서 - 처리 결과가 여러 개의 행으로 구해지는 SELECT문을 처리할 때 사용 1. Declare 커서 - 명시적으로 커서를 선언하기 위해 커서문장 사용 - 기본 형태 CURSOR 커서명 IS select_statement; - select_statement : INTO절이 없는 SELECT 문장 2. Open 커서 - 질의 수행 - 검색 조건을 충족하는 모든 행으로 구성된 결과 SET을 생성하기 위해 커서를 OPEN - 기본 형태 OPEN 커서명; 3. Fetch 커서 - 결과 SET에서 로우 단위의 데이터를 읽어드림 - 각 FETCH후에 커서는 결과 SET에서 다음 행으로 이동 - 기본 형태 FETCH 커서명 INTO {variable1[,variable2, ....]}; - 커서가 끝에 위치하게 ..
Role : 사용자에게 허가 할 수 있는 권한들의 집합 - 권한 부여와 회수를 쉽게 할 수 있음 - CREATE ROLE : 권한을 가진 user에 의해 생성 - 한명의 사용자가 여러 개의 role을 접근 할 수 있고, 여러 사용자에게 같은 role 부여 가능 - 시스템 권한을 부여하고, 취소할 때와 동일한 명령을 사용해서 사용자에게 부여 및 취소 가능 - 사용자는 role에게 role 부여 가능 - 오라클에서 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공됨 Role 생성 - 기본 형태 CREATE ROLE 롤이름; Role 권한 부여 - 기본 형태 GRANT 권한 TO 롤이름; 권한이 부여된 롤을 다른 유저에게 부여 - 기본 형태 GRANT 롤이름 TO 유저명1, 유저명2,......
DCL (Data Control Language) : 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용 - 데이터 베이스 관리자가 데이터 관리를 목적으로 사용 유형 1. GRANT : 권한 부여 - 유저에게 여러 권한(삽입, 삭제, 생성 등)을 부여 ⓐ 시스템 - 기본 형태 GRANT [권한명 | 롤 | ALL] TO [유저명 | 롤 | PUBLIC] [WITH ADMIN OPTION]; - 대표적인 시스템 권한 종류 - CREATE SESSION : 데이터 베이스를 연결할 수 있는 권한 - CREATE ROLE : 오라클 데이터 베이스 역할을 생성할 수 있는 권한 - CREATE VIEW : 뷰의 생성 권한 - ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한 - DRO..
Trigger : 특정 이벤트가 발생할 때마다 자동으로 실행되는 PL/SQL 블럭 - 개발자가 호출하여 사용할 수 없음 - 데이터 베이스내에 오브젝트로 저장되어 관리 - DML Trigger가 가장 많이 사용 특징 - 트리거를 생성하려면 권한이 필요 - 트리거를 이루는 몸체 부분에 TCL 명령은 포함될 수 없음 #TCL 명령 : rollback 등 단순 DML Trigger 1. 유형 - Before Trigger : 테이블에서 DML 이벤트를 Trigger 하기 전에 본문 실행 - After Trigger : 테이블에서 DML 이벤트를 Trigger 한 후에 본문 실행 - Instead of Trigger : Trigger문 대신 Trigger본문 실행 다른 방법으로 수정 불가능한 뷰에 사용 2. 구조..
Package : 관련있는 함수나 프로시저를 보다 효율적으로 관리하기 위함 - 패키지 단위로 배포할때 유용 - 업무가 간결하고 편함 구조 1. 선언부 : 패키지에 사용될 함수나 프로시저, 변수 등 정의를 선언하는 부분 기본 형태 CREATE [OR REPLACE] PACKAGE 패키지이름 IS [AS] PROCEDURE 프로시저명1, PROCEDURE 프로시저명2, ... END; / 2. 몸체부 : 실체 실현되는 부분 기본형태 CREATE [OR REPLACE] PACKAGE 패키지이름 IS [AS] PROCEDURE 프로시저명1, SUBPROGRAM BODIES : (실제 작동할 서부 프로그램 - 프로시저, 함수 등) END; / - 선언부에서 선언되지 않더라도, 몸체부에서 사용될 수는 있지만 권장사..
프로시저 : 작업 순서가 정해진 독립된 프로그램의 수행 단위 - 지정된 특정 처리를 실행하는 서브 프로그램의 한 유형 - 단독으로 실행되거나 다른 프로시저나 툴 또는 환경등에서 호출되어 실행 - 사용자가 만든 PL/SQL문을 데이터 베이스에 저장 할 수 있도록 제공 - 복잡한 DML문들을 필요할때 마다 다시 입력할 필요 없이 간단하게 호출만 해서 복잡한 DML문의 실행결과를 얻음 - 성능 향상 및 호환성 문제 해결 함수 CREATE OR REPLACE PROCEDURE : 프로시저가 기존에 없으면 새로 생성이 되고, 기존에 있으면 수정 - 여러번 호출해서 사용가능 DROP PROCEDURE : 생성된 프로시저 제거 프로시저 생성 내용 추가로 입력 위에 입력한 내용 수정을 하기 위해서는 새로은 프로시저를 ..
PL/SQL : 오라클 자체에서 내장되어 있는 절차적언어 - SQL 보완 - 변수 정의, 조건 처리(IF), 반복 처리(LOOP, WHILE, FOR)등 지원 - 블록 구조 기능 - 변수 선언 - 비교 처리 - 반복 처리 장점 - 블록 안의 여러 SQL 구문이 한번에 서버로 전송되므로 수행속도가 향상되고, 통신량도 줄일 수 있다 BLOCK 구조 1. 이름부 (IS/AS) : 블록의 이름 지정 - 아무것도 쓰지 않으면 익명 블록이 됨 2. 선언부 (DECLARE) : 변수나 상수 선언 3. 실행부 (BEGIN) : SQL문 - PL문 안에 SQL문을 쓰는것 - 제어문, 반복문 - 커서 4. 예외 처리부 (EXCEPTION) 5. END - END문 뒤에 ;를 선언하면 하나의 블록이 끝남 #set serve..
Sequence : 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기 - 시퀀스를 기본키로 사용하게 되면 사용자의 부담을 줄일 수 있음 #기본키는 중복된 값을 가지면 안됨 -> 항상 유일한 값을 가져야함 기본 형태 CREATE SEQUENCE 시퀀스명 추가적 형식; 추가적 형식 1. START WITH : 시퀀스 번호의 시작값을 지정 할 때 사용 2. INCREMENT BY : 연속적인 시퀀스 번호의 증가치를 지정 3. MAXVALUE / NOMAXVALUE - MAXVALUE : 시퀀스가 가질 수 있는 최대값 지정 - NOMAXVALUE - ASCENDING : 1027 - DESCENDING : -1 4. MINVALUE / NOMINVALUCE - MINVALUE : 시퀀스가 가질 수 ..
Synonym : 오라클 객체에 대한 대체 이름 - 실질적으로는 객체에 대한 직접적인 참조 사용 이유 - 데이터 베이스의 투명성 제공 - 다른 유저의 객체를 참조할 때 많이 사용 - SQL 코딩을 단순화 - 보안 유지 목적 - 객체의 실제 이름과 소유자, 위치를 감춤으로써 데이터 베이스 보안 개선 접근 지정 종류 1. Private : 특정 사용자만 이용 2. Public : 모든 사용자가 공유 기본 형태 CREATE 접근지정 SYNONYM 동의어명 FOR 사용자이름.객체이름; 객체 권한 부여 SCOTT / TIGER 사용자로 접속해서 TEST USER에게 EMP 테이블을 조작할 권한 부여 USER로 접속해서 동의어 scott_emp 생성 동의어 제거 기본 형태 DROP SYNONYM 동의어명;
Index : 색인 - 컬럼 단위로 생성 - 제약 조건 사용 -> PRIMARY KEY / UNIQUE 기본 형태 CREATE INDEX 인덱스명 ON 테이블명(컬럼1, 컬럼2...); 장점 - 검색속도가 빠름 - 시스템 전체 성능 향싱 단점 - 10%의 추가 공간 필요 - 첫 인덱스 생성에 시간 소요가 큼 - 변경작업이 자주 일어나면 성능 저하 특징 - 인덱서 생성시, 데이터 블록은 놔둔 상태에서 별도의 블록에 인덱스를 구성 - 인덱스의 리프 블록은 데이터가 아니라, 데이터가 위치하는 주소값 - 데이터의 입력 / 수정 / 삭제시 인덱스가 없을때보다 느림 종류 1. BITMAP 2. 함수 기반 3. 어플리케이션 도메인 4. B-TREE 인덱스 : 꼭 필요한 인덱스만 최소로 생성 -> 인덱스 오용 및 남용..
SubQuery : 한 문장의 절 안에 포함된 또 다른 하나의 문장 - 메인 쿼리 : 서브 쿼리를 포함하고 있는 쿼리문 - 서브 쿼리 : 또 다른 하나의 쿼리 - 서브 쿼리는 메인 쿼리가 실행되기 이전에 한 번만 실행됨 기본 형태 SELECT 컬럼명 FROM 테이블명 WHERE 조건 (서브쿼리절); 주의사항 - 반드시 where절에, 비교연산자의 오른쪽에 위치 - 괄호로 묶어서 사용 - 서브 쿼리절 안에 order by절이 들어가면 안됨 장점 - 한번 디스크에서 읽어온 데이터를 메모리 안에 가공해서 사용할 수 있도록 도와줌 - 동일한 데이터를 다시 한번 이용하여 복잡한 가공에도 물리적인 I/O를 줄여줌 #I/O : Input / Output -> 입출력 종류 1. 단일행 서브쿼리 - 가장 기본적인 서브 ..
Join : 한개 이상의 테이블에서 데이터를 조회하기 위해 사용 조인 형태 1. Cross Join : 2개 이상의 테이블이 조인될 때 WHERE절에 의해 공통되는 칼럼에 의한 결합이 발생되지 않는 경우 - 테이블에 존재하는 모든 데이터가 검색 결과로 나타남 - 특별한 키워드 없이 사용 - 기본 형태 SELECT * FROM 테이블명; 2. Equi Join : 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 칼럼의 값이 일치되는 행을 연결하여 결과를 생성 - 가장 많이 사용하는 조인 방법 - 기본 형태 SELECT * FROM 테이블1, 테이블2 WHERE 테이블1.칼럼명 = 테이블2.칼럼명; #WHERE뒤에 선언한 칼럼명은 두개의 테이블에서 동일한 칼럼명을 호출한것 3. Non-Equi Join ..
View : 자체적으로 데이터를 포함하거나 저장하지 않은 논리적인 구조로서 기본 테이블의 데이터를 조회하고 변경할 수 있는 창 - 가상 테이블 개념 -> 데이터를 물리적으로 갖지 않음 - 저장 공간이 없음 - 쿼리문을 저장하고 있는 객체 목적 - 직접적인 테이블 접근을 제한 - 복잡한 질의를 쉽게 만들기 위함 - 보안에 유리 특징 - 테이블에 대한 제한을 갖고 있음 - 테이블의 일정한 부분만 볼 수 있는 가상 테이블 - 실제 자료를 갖지 않지만, 테이블 관리 가능 - 하나의 테이블에 뷰의 갯수는 제한이 없음 - 데이터를 물리적으로 갖고 있지 않음 #테이블과 달리 뷰는 이미 존재하는 테이블을 근거로 한 쿼리문 형태로 저장 -> 기본 테이블이 존재해야 함 기본 형태 CREATE VIEW 뷰이름 AS 쿼리문;..
스키마 : 데이터의 구조 - 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조 - 데이터베이스의 정보 구조를 설계 - 데이터 베이스의 구조와 제약조건에 대한 전반적인 명세를 기술한 것 - 데이터베이스를 구성하는 개체, 속성, 관계 및 데이터 조작시 값들이 갖는 전반적인 조건을 정의 - 법칙에 따라 데이터를 입력함으로써 정보의 구조를 설계 1. 외부 스키마 : 프로그래머나 사용자의 입장에서 데이터 베이스의 모습으로 조직의 일부분을 정의 2. 내부 스키마 : 전체 데이터 베이스의 물리적 저장 형태를 기술 3. 개념 스키마 : 모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터 베이스를 구조 논리적으로 정의
모델링 : 추상적인 요구사항을 찾아내서 분석 및 검증 후 적절한 기호를 사용해서 객관적으로 표현하고, 물리적으로 구현하는 전체 과정 - 현업을 얼마나 잘 이해하는지가 중요 특징 1. 추상화 : 현실 세계를 일정한 형식에 맞추어 표현 - 다양한 현상을 일정한 양식인 표기법에 의해 표현 2. 단순화 : 복잡한 현실 세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 함 3. 명확화 : 누구나 쉽게 이해하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술 종류 1. 프로세스 모델링 - 모델링을 진행할 때 어떤 업무가 있는지 파악해서 업무 흐름의 중심으로 설계 - 장점 : 업무만 잘 분석되면 비교적 쉽고 편하게 모델링 가능 - 단점 : 해당 업무가 변경되거나 없어지면..
관계형 데이터 베이스 : 임의의 데이터 베이스 내에 존재하는 여러 테이블들이 서로 관계를 갖게 되며 운영 - 데이터 베이스의 테이블 간의 관계를 분명하게 설정 - 제약 조건들을 사용하여 정확한 데이터들을 설정 키 : 무언가를 식별하는 고유한 식별자 1. 기본키 (PRIMARY KEY) : 후보키 중 한가지 - null값 불가 2. 슈퍼키 (SUPER KEY) : 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합 3. 후보키 (CANDIDATE KEY) : 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합 4. 대체키 (ALTERNATE KEY) : 후보키가 2개 이상일 경우 그 중 하나를 기본키로 지정하고 남은 후보키 5. 외래키 (FOREIGN KEY) : 다른 테이블의 데이..
Transaction : 데이터 베이스 내에서 하나의 그룹으로 처리되어야하는 명령문들을 모아놓은 논리적인 작업 단위 - 여러 단계의 처리를 하나의 처리처럼 다룸 - 여러개의 명령어의 집합이 정상적으로 처리되면 정상종료, 하나의 명령어라도 잘못되면 전체 취소 -> 이유 : 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기위함 특징 1. 원자성 (Automicity) : 트랜잭션이 데이터 베이스에 모두 반영되던지, 전혀 반영되지 않아야함 2. 일관성 (Consistency) : 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야함 3. 독립성 (Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 경우, 어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산을 끼어들 수 없음 4. 지속성 (..
DML - 데이터 조작 언어 - 데이터를 실질적으로 관리 - 데이터 베이스 사용자와 관리 시스템간의 인터페이스 제공 INSERT : 생성된 테이블에 튜플을 삽입 - 기본 형태1 CREATE TABLE [테이블 이름] (칼럼이름 타입( ),칼럼이름 타입( )); - 입력한 데이터 값은 속성의 갯수보다 적어야함 - 기본 형태2 INSERT INTO 테이블명 (속성명1, 속성명2, ....) VALUES (데이터1, 데이터2, ...); UPDATE : 데이터 갱신 - 기본 형태 UPDATE 테이블명 SET 속성명1 = 바꿀 데이터값, 속성명2 = 바꿀 데이터 값, ... WHERE 조건; DELETE : 데이터 삭제 - 기본 형태 DELETE FROM 테이블명 WHERE 조건; - 조건을 쓰지 않으면 모든 ..
DDL - 데이터베이스 객체들을 생성, 변경, 제거 할 때 사용 - 테이블 기준 CREATE : 테이블 생성 - 기본 형태 CREATE TABLE [테이블 이름] (칼럼이름 타입( ),칼럼이름 타입( )); 테이블 복사 - 기본 형태 CREATE TABLE 복사할 테이블명 AS SELECT * FROM 기존 테이블명; ALTER : 테이블 구조 변경 - 기본 형태 ALTER TABLE 테이블명 ADD(칼럼명 데이터타입); 기존 칼럼 수정 # 해당 칼럼에 자료가 없는 경우 - 칼럼의 데이터 타입 변경 가능 - 칼럼의 크기 변경 가능 #해당 칼럼에 자료가 있는 경우 - 칼럼의 데이터 타입 변경 불가 - 현재 갖고 있는 데이터 크기보다 큰 크기로 늘리는것만 가능 기존 칼럼 삭제 - 기본 형태 ALTER TAB..
그룹 함수 : 여러개의 행으로부터 하나의 결과를 도출 규칙 1. NULL 값이 있는 컬럼은 조회에 포함시키지 않는다 2. ROW가 없는 테이블에 그룹함수 count( )를 사용시, 0이 출력되며 sum( )을 사용하면 NULL값이 출력 3. COUNT, MAX와 MIN은 문자, 숫자, 날짜 데이터 모두에게서 사용 가능 4. AVG, SUM, VARIANCE, STDDEV는 NUMBER만 사용 가능 5. Expr이 있는 인수들의 자료 형태는 CHAR, VARCHAR2, NUMBER, DATE형이 될 수 있음 쓰는 이유 - 사용자가 알기 쉽게 보기위함 예제 - 테이블명 : bit5; count( ) : ( )안에 있는 값 반환 MAX( ) / MIN( ) : 최댓값, 최소값 sum( ) : 컬럼 값의 합계 ..
Dual Table 듀얼 테이블 확인 듀얼 테이블 내용 확인 upper : 글자를 대문자로 바꾸기 length : 글자 길이 구하기 lengthb : 바이트 길이 구하기 substr : 문자열 일부부만 추출 - 미리 만들어놓은 bit_5 테이블 사용 #생일이 3월달인 사람만 추출 instr : 특정 문자의 위치를 구함 lpad : 공백을 특정 기호로 채움 -> l은 오른쪽으로 밈 rpad : 공백을 특정 기호로 채움 -> r은 왼른쪽으로 밈 20byte만큼 크기를 지정해서 ORACLE 글씨를 오른쪽으로 밀고, 나머지를 #으로 채운다 sysdate : 현재 날짜 출력 #내가 살아온 날 계산 round : 특정 기준으로 반올림 trunc : 특정 기준으로 내림 months_between : 두 날짜 사이의 ..
권한 설정 SQL에서 새로운 사용자 생성 1. cmd 창에서 SQLPLUS "/as sysdba" 입력 2. 사용자 생성 create user 사용자이름 identified by 비밀번호; 3. 새로 생성한 사용자에게 권한 부여 grant connect, resource, dba to 사용자이름; 4. SQL PLUS 창에서 새로 생성한 사용자 계정으로 들어가지면 완료! SQL Developer 에서 설정 cmd 창에서 생성한 새로운 계정 추가 - 접속 이름 : 자신이 원하는 이름으로 지정 - 사용자 이름 : SQL PLUS에서 생성한 사용자 이름 - 비밀번호 : SQL PLUS에서 생성한 사용자 이름에 대한 비밀번호 - SID (I) : DATABASE를 설치할때 설정한 이름