// CONSTRAINT 형태 : CONSTRAINT 조건명. 조건을 준다는 구문이며 생략 가능 |
// PRIMARY KEY : 기본키. 고유 레코드를 구분할수 있도록 구분이 되는 칼럼?
// FOREIGN KEY : 외래키. 관계 맺은 다른 테이블의 칼럼이 기본키인 컬럼을 설정한다.
// UNIQUE : 중복되는 값이 들어갈 수 없다.
// NOT NULL : 비어있을 수 없다. (NULL이 들어갈 수 없다.)
// CHECK : 조건문. AND,OR <>등 사용 가능
// 아래 구분처럼 테이블을 복사할 수 있다.
CREATE TABLE COPY2_SAWON AS SELECT * FROM SAWON;
CREATE TABLE COPY2_SAWON AS SELECT EMPNO,ENAME,JOB FROM SAWON;
// 테이블 삭제 - 바로 지워지지 않고 휴지통 같은 공간에 들어간다.
DROP TABLE 테이블명;
// 모든 테이블 열람 - 삭제 후 바로 보면 BIN$~~ 하는 형태로 지워진 테이블을 확인할 수 있다.
SELECT * FROM TAB;
// DROP TABLE로 휴지통으로 들어간 테이블 열람.
SHOW RECYCLEBIN;
// 휴지통 비우기
PURGE RECYCLEBIN;
// DROP한 테이블 살리기
FLASHBACK TABLE 테이블명 TO BEFORE DROP;
// 복원시 이전에 지운 테이블명과 중복되는 테이블명이 현재 남아있을 경우 RENAME TO를 추가해서 다른 이름으로 복원할 수 있다.
FLASHBACK TABLE SS TO BEFORE DROP RENAME TO SS3;
// 테이블에 저장된 데이터를 삭제하는 명령. ROLLBACK이 되지 않는다.
// DELETE TABLE SAWON4; 와 같은 동작을 하지만 DELETE는 롤백이 된다.
TRUNCATE TABLE SAWON4;
// ALTER 뒤에 오는 옵션에 따라
ALTER TABLE SS RENAME TO SS2;
// ADD : 칼럼 추가
ALTER TABLE BOARD1 ADD (BB VARCHAR2(10), CC VARCHAR2(20));
// NUM 칼럼에 기본키만 부여
ALTER TABLE BOARD1 ADD PRIMARY KEY(NUM);
// MODIFY : 칼럼 형태 변경 - 레코드 데이터 소실의 위험이 있으면 변경이 안된다.
ALTER TABLE BOARD1 MODIFY (TITLE VARCHAR2(100));
// DROP : 테이블의 칼럼 지우기
ALTER TABLE BOARD DROP (WRITEDAY);
// SEQUENCE : 자동으로 값이 증가되거나 감소되는 오라클 객체
// 변수 선언 하듯이 사용
// 50부터 시작, 5씩 증가, 최고값은 70, CYCLE=최고값 도달시 1부터 반복된다, CACHE 3 = 최대 3번 반복 가능
CREATE SEQUENCE MYBOARD_SEQ
START WITH 50
INCREMENT BY 5
MAXVALUE 70;
CYCLE
CACHE 3;
CREATE TABLE MYBOARD(NUM NUMBER(4), NAME VARCHAR2(20) );
// NEXTVAL은 시퀸스의 다음 값을 얻는다.
// CURRVAL은 시퀀스의 현재 값을 얻는다.
INSERT INTO MYBOARD(NUM, NAME)
VALUES(MYBOARD_SEQ.NEXTVAL, 'XXX');
오후
일반 사용자 계정으로는 DB사용자 계정을 줄 수 없다.
관리자 권한만이 사용자 계정 설정이 가능하다.
접속 사용자 이름 : SYS
비밀번호 : 오라클 비번
롤 : SYSDBA
//일반 계정 사용자 이름 : USER_NAME
CREATE USER 사용자명 IDENTIFIED BY 비번;
CREATE USER GUEST1 IDENTIFIED BY PGUEST1;
권한 1) 계정을 연결할 수 있는 권한 CONNECT.
2) 삽입, 삭제, 수정 DDL, DML ==> RESOURCE
// 계정 GUEST1에 CONNECT와 RESOURCE의 권한을 부여
GRANT CONNECT, RESOURCE TO GUEST1;
// 계정 GUEST1의 비밀번호를 변경
ALTER USER GUEST1 IDENTIFIED BY PPGUEST1;
// GUEST1 계정 삭제. 해당 DB에 접속상태가 없어야 삭제가 된다.
DROP USER GUEST1 CASCADE;
JOIN 명령
서로 다른 테이블과 테이블을 연결 시켜주는 것
- Equi Join
조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치하는 행을 연결하여 결과를 생성하는 조인 방법이다.
SELECT 테이블1.컬럼명 , 테이블2.컬럼명
FROM 테이블1, 테이블2
WHERE 테이블1.공통컬럼명 = 테이블2.공통컬럼명;
- Non Equi Join
조인 조건에 =(동등연산자) 이외의 연산자를 사용해서 조인하는 방법이다.
// 테이블명 X
// 테이블 EMP를 E로 줄여서 표기하기
// S.LOSAL 과 S.HISAL의 사이에 있는 E.SAL을 찾아라.
SELECT E.EMPNO, E.ENAME, E.SAL, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
// E.DEPTNO = D.DEPTNO 그리고 E.SAL이 S.LOSAL과 S.HISAL 사이에 있는 것의 등급(S.GRADE) 구하기
SELECT E.ENAME, D.DNAME, E.SAL,S.GRADE
FROM EMP E, DEPT D, SALGRADE S
WHERE
E.DEPTNO = D.DEPTNO AND
E.SAL BETWEEN S.LOSAL AND S.HISAL;
-Self Join
다른 테이블이 아닌 자기 자신과의 조인을 의미한다.
SELECT EMPLOYEE.ENAME 사원명, MANAGER.ENAME 관리자명
FROM EMP EMPLOYEE, EMP MANAGER
WHERE EMPLOYEE.MGR = MANAGER.EMPNO;
- Outer Join
조인 조건에 만족하지 않아도 해당 행을 출력하고 싶을 때 사용할 수 있다.
조인할 데이터가 없는 쪽에 (+) 연산자를 사용한다.
SELECT EMPLOYEE.ENAME 사원명, MANAGER.ENAME 관리자명
FROM EMP EMPLOYEE, EMP MANAGER
WHERE EMPLOYEE.MGR = MANAGER.EMPNO(+);
JDBC
자바 언어에서 데이터베이스에 접근할 수 있는 프로그래밍 API이다.
Downloads - Driver - JDBC Drivers - Oracle Database 10g (10.1.0.5), (10.1.0.4), (10.1.0.2.0) drivers
- (accept하고) ojdbc14_g.jar 를 받는다.
1. DB가 있어야 된다. 오라클 DB설치
2. DB 작동을 되야한다.
데이타 베이스 시작을 누른다
3. 오라클 사이트에 드라이브를 받는다.
4. 이클립스에 등록한다.
C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext 경로에 ojdbc14_g.jar를 옮기고, 이클립스 실행하면 준비 끝~
이클립스에서 Window - Java - Build Path - Classpath Variable 로 가서
New 한 후 ojdbc14_g.jar 를 추가하는 걸로 예상?