신입사원 입문교육_정리

sql oracle Day3

FireStone 2021. 1. 28. 10:30
  •   Mybatis  

DeptMapper.xml - mybatis-config.xml 

 

MySqlSessionFactory : 자바에서 인식하기 위해 돕는 파일

-> import 할 때 org.apache.ibatis로 해야함

 

- Dept class 생성시, 테이블의 컬럼명과 변수이름을 동일하게 지정해야한다.

만약 다르다면 별칭을 사용해 맞춰준다.

  => 컬럼의 헤더와 일치해주어야 한다.

ex) select deptnum as deptno 
     select to_char(deptno) as deptno

 

-----------------------------------------------------------------------------------------------------------------------------------

  •   DDL  

: 데이터베이스의 DDL(Data Definition Language) 구조를 생성하거나 수정 및 삭제하는데 사용되는 SQL

 

- 자동 commit 되기 때문에 취소가 안됨 -> rollback 사용불가

 

- CREATE

: 데이터베이스 객체 생성

 

CREATE TABLE [스키마].테이블명
( 컬럼명 데이터타입 [DEFAULT 값 | 제약조건][,...] );

 

  - DEFAULT 옵션

: 값을 저장하지 않으면 default 값으로 지정이 되도록 함

- 안하면 null이 저장됨

 

CREATE TABLE employee2
( empno NUMBER(4),
ename VARCHAR2(20),
hiredate DATE DEFAULT SYSDATE,
sal NUMBER(7,2));

 

-   제약조건  

 

컬럼 레벨 / 테이블 레벨(추가개념 사용)

 

1) NOT NULL

 :  null을 허용하지 않는다. (원래는 됐는데 안되도록 - 변경

 => 컬럼 레벨 방식만 지원

 

 2) UNIQUE

 : 해당 컬럼은 유일한 값을 가지고 null이 허용됨

 => 컬럼 레벨/ 테이블 레벨 방식 모두 지원

 

 3) PRIMARY KEY

: not null + unique  => 값은 반드시 가져야하고 유일해야함

 -> 식별이 가능함

=> 컬럼 레벨/ 테이블 레벨 방식 모두 지원

 

 4) FOREIGN KEY

 : 해당 컬럼의 값이 다른 테이블의 컬럼의 값을 참조해야한다.

 참조되는 컬럼에 없는 값은 저장이 불가능하다.

*master의 pk, null, uk값만 가질 수 있음

=> 컬럼 레벨/ 테이블 레벨 방식 모두 지원

 

 

 5) CHECK

: 해당 컬럼에 가능한 데이터 값의 범위나 사용자 조건을 지정함

=> 컬럼 레벨/ 테이블 레벨 방식 모두 지원

 

 

PRIMARY KEY

 

 - 제약조건명  : 용자 지정

-> table명_컬럼명_pk 이런 형식으로 씀

 

 - 컬럼 레벨 방식으로 기본키 제약조건 추가 

 

CREATE TABLE [스키마].테이블명 
( 컬럼명 데이터타입 [CONSTRAINT 제약조건명]PRIMARY KEY ==> 제약조건 타입,
컬럼명 데이터타입,...);

 

ex) CONSTRAINT department_deptno_pk PRIMARY KEY,

 

CREATE TABLE department
deptno NUMBER(2) CONSTRAINT department_deptno_pk PRIMARY KEY,
dname VARCHAR2(15),
loc VARCHAR2(15) );

-> pk로 하면 deptno의  index는 자동으로 추가가 된다.

 

 - 테이블 레벨 방식으로 기본키 제약조건 추가 

 

 => 복합 컬럼 가능

CREATE TABLE [스키마].테이블명
( 컬럼명 데이터타입,
컬럼명 데이터타입,
[CONSTRAINT 제약조건명] PRIMARY KEY(컬럼명[,컬럼명2) );

 

 UNIQUE

: 중복 x

 -> NULL을 가질 수 있음

 - 인덱스 자동 추가

 

- 테이블 레벨 방식으로  UNIQUE 추가

 

CREATE TABLE department5
( deptno NUMBER(2) CONSTRAINT department5_deptno_pk PRIMARY KEY,
dname VARCHAR2(15),
loc VARCHAR2(15),
CONSTRAINT department5_dname_uk UNIQUE(dname)
);

 

- NOT NULL

-> 컬럼레벨만 가능 

 

CREATE TABLE [스키마].테이블명
( 컬럼명 데이터타입 [CONSTRAINT 제약조건명] NOT NULL,
컬럼명 데이터타입,
...
);

 

- CHECK

: 일관된 값만 저장할 수 있도록 

 

 - 컬럼 레벨 방식으로 추가 

 

CREATE TABLE department7
( deptno NUMBER(2) ,
dname VARCHAR2(15)
CONSTRAINT department7_dname_ck CHECK( dname IN('개발','인사')) ,
loc VARCHAR2(15)
);

==> 개발과 인사만 저장 가능

 

EX) insert into department7(deptno, dname, loc) values (2,'인사과','bbb');  ==> 저장안됨

insert into department7(deptno, dname, loc) values (1,'개발','bbb');  ===> 저장가능

 

- 테이블 레벨 방식으로 추가

 

CREATE TABLE department8
( deptno NUMBER(2) ,
dname VARCHAR2(15),
loc VARCHAR2(15),
CONSTRAINT department8_dname_ck CHECK( dname IN('개발','인사'))
);

 

 

- FOREIGN KEY

 

 - 컬럼 레벨 방식으로 추가 

CREATE TABLE [스키마].테이블명
컬럼명 데이터타입 [CONSTRAINT 제약조건명] REFERENCES 부모테이
블명(컬럼명),    //어떤 테이블 참조했는지 알려줘야함
컬럼명 데이터타입,
...
);

 

 테이블 레벨 방식으로 추가

CREATE TABLE [스키마].테이블명
( 컬럼명 데이터타입,
컬럼명 데이터타입,
...,
[CONSTRAINT 제약조건명] FOREIGN KEY(컬럼명)
REFERENCES 부모테이블명(컬럼명)
);

 

- 추가조건

 

- ON DELETE CASCADE

 

CREATE TABLE emp02
( empno NUMBER(4) CONSTRAINT emp02_empno_pk PRIMARY KEY,
ename VARCHAR2(15),
deptno NUMBER(2)
CONSTRAINT emp02_deptno_fk REFERENCES dept02(deptno) ON DELETE CASCADE
);

 

- ON DELETE SET NULLE

 

 

CREATE TABLE emp02
( empno NUMBER(4) CONSTRAINT emp02_empno_pk PRIMARY KEY,
ename VARCHAR2(15),
deptno NUMBER(2)
CONSTRAINT emp02_deptno_fk REFERENCES dept02(deptno) ON DELETE SET NULL
);

 

- CASCADE CONSTRAINTS

 : 테이블 삭제 가능 - 부모/자식 모두 삭제 가능

 

  •   테이블 변경

- 컬럼 추가

ALTER TABLE 테이블명
ADD ( 컬럼명 데이터타입 [, 컬럼명 데이터타입]);

 

  - 컬럼 변경

ALTER TABLE 테이블명
MODIFY ( 컬럼명 데이터타입 [, 컬럼명 데이터타입]);

 

- NOT NULL은 변경이기 때문에 MODIFY 사용 ( 추가개념X)

ALTER TABLE 테이블명
MODIFY ( 컬럼명 데이터타입 [CONSTRAINT 제약조건명] NOT NULL );

 

* DDL이 DML보다 성능은 좋다.

 

 -- 테이블 데이터 삭제
  select * from slave_1;
  --1. DML - delete, rollback 가능
  delete from slave_1;
  rollback;  --복구 가능
  
   select * from slave_2;
  --2. DDL - truncate
  truncate table slave_2;
  --rollback 불가

 

 

ALTER(데이터베이스 객체 변경)
DROP(데이터베이스 객체 삭제)
RENAME(데이터베이스 객체이름 변경)
TRUNCATE(객체 정보 절삭)

 

  •  인덱스 

CREATE [UNIQUE] INDEX 인덱스명
ON 테이블( 컬럼[,컬럼] );

'신입사원 입문교육_정리' 카테고리의 다른 글

Spring Framework - Day1  (0) 2021.02.02
Web - JSP / Servlet / JS / Java - Day1  (0) 2021.02.01
workshop 3  (0) 2021.01.27
oracle db - 나머지공부 - 정리  (0) 2021.01.27
ddl workshop  (0) 2021.01.27