-
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 |