[국비 코딩 수업 13일차!] 4. 데이터베이스

 *Non Equi Join
직원의 사번, 이름, 급여, 급여 등급을 조회
 
selelct * from salgrade; (급여등급) 

 
모든 조인의 결국엔 inner join이라고 생각하면 되고
약간 변형된 것이 non equi join 이라고 생각하면 됨.
 
slelect empno, ename, sal, grade from emp inner  join salgrade on sal >= losal and sal <= hisal;

 
때에 따라서는 그 범위 안에 따라서 포함되는 값인지 이런식으로 변형시킬 수 있다.
 
서로 같은 테이블을 조인 할때 사용.
 
직원의 사번, 이름, 업무, 직속상사의 사번,직속상사의 이름을 조회
select ename, nmpno, job, mgr from emp self join mgr on empno on ename;

 
평소 조회를 이렇게 할 것이고
두 개를 하나로 조인하는 방법이 따로 있는데 바로 self join이다.
 

 
 
select e1.empno, e1.ename, e1.job, e1.mgr, e2.ename from emp e1 inner join emp e2 on e1.mgr = e2.
empno;
 

3. SET 연산자(집합 연산자)

- union
- union all
- intersect
- minus (차집합)
 
selct deptno from dept;

 
select deptno from emp;

 
두개를 결합
 
select deptno from dept union select deptno from emp;
select deptno from dept union all select deptno from emp;
select deptno from dept intersect select deptno from emp;
select deptno from dept minus select deptno from emp;
 

 
자주 사용하지는 않음. 
 

 
 


 

6.  transaction  ★★★★★

 
데이터 베이스 관리 시스템 또는 유사한 시스템에서 상호작용하는 단위.
트랜잭션은 성공과 실패가 분명하고 상호 독립적이며 일관된다. 
원자성(atomicity), 일관성(consistency) , 독립성(lsolation), 영구성(durability) 시스템들에서는 트랜잭션들은 논리적 작업단위(luw, logical units of work)로 불린다. 
 
ACID라고 통용.
 
트렌젝션을 하면 가장 먼저 떠올려야할 용어.
 
all or nothing
[일을 시작했으면 끝까지 해라. 그렇지 않으면 원상태로 돌아가]
그러나 중간에 일이 끊어지는 경우 로그파일을 통해 작업을 이어갈 수 있도록 함.
 
로그파일: 뭘 수정하고 입력하고 기억하는지 기록해두는 것.
데이터 파일, 로그파일이 = 물리적인 데이터베이스
 
관련 명령어
 
- commit : 데이터 베이스에 영구적으로 적용하는 명령어. 커밋이 실행되면 트랙젝션에서 수행된 모든 데이터 수정이 확정되고 이후에는 롤백이 가능해짐.
 
- rollback : 이전 상태로 돌리는 명령. 오류가 발생시에 대부분 사용 (원자성 속성이 보존됨)
 
- savepoint : 롤백을 할 때 지정 위치를 설정함.
 
동기화(synchronous) : 하나에 하나씩만 처리 될 수 있게 하는 것.   /  동시에 접근하는 방법은 비동기화
트렌젝션의 경우 동기화를 내포하고 있음.

 
동기화
 
두 개의 cmd를 통해서 입력값을 설정해도 상호작용을 하지 않음.
그래서 commit을 써줘야 함. 그럼 값이 저장이 되고(동기화 되고) 다른 곳에서 해도 값이 입력됨. 
 
※ datawarehouse : 데이터 하나를 저장하는 것을 뛰어넘어서 의사 결정을 내리는 용도로 쓰임.
 
※ data mining : 데이터를 체굴 /  자료 채굴 


 
 

7. 데이터 무결성 (data integrity)

 
결점이 없는 데이터만 저장할 수 있겠금 만듦.
잘못된 데이터는 막아줌.
 
무엇을 지켜야할 지 알아야 함.
 
- what
 
※ 제약 (on straint)
 
* 실체 무결성(entity)  : table을 가리킴. (기본 키의 고유성과 존재성을 보장)
중복된 데이터 방지  /  primary key, unique
 
* 영역 무결성(domain) : 특정 열에 값의 범위를 지켜줌. 
범위 / check 
 
* 참조 무결성(reference) : 참조 외래 키의 제약을 중심으로 한 무결성 규칙.
참조 / foreign key
 
- 컬럼의 속성 (num의 속성을 가짐).
 
* NN(not null)속성 : 비워놓을 수 없게끔 만드는 속성.
primary key
 
* ND(not duplicate) 속성 : 중복된 데이터값을 들어가지 못하게 해주는 속성.
primary key, unique
 
* NC(no change) 속성 : 컬럼 앞에 있는 것들은 바꿀 수 있는 속성이지만 바꿀 수 없게해주는 무기.
foreign key
 
 


솔직히 오늘 수업은 뭐라고 하는지 하나도 모르겠다. 

 
primary key

 
* 한 테이블에 단 한 개만 사용할 수 있음.
* 여러 개의 필드를 묶어서 설정할 수 있음. 
 
create table tblexam(
         id              number             not null
         name       varchar(10)        null
);
 
insert into tblexam(name) values('hong');
insert into tblexam(id, name) values(1, 'hong');
insert into tblexam(id, name) values(1, 'hong');
 
ALTER TABLE tblexam ADD CONSTRAINT scott_tblexam_id PRIMARY KEY (id);
insert into tblexam(id, name) values(1, 'hong');
insert into tblexam(id, name) values(1, 'hong');
 
desc user_constraints;
select contraints_name, table_name from user_constraints; 
 
drop table tblexam;
create table tblExam(id number primary key, name varchar(10) null);
 

 
drop table tblexaml;
create table tblexam(id number, name varchar(10) null, constraint pk_tblexam_id primary key(id, name)
 

4) unique

-중복방지
-하나의 테이블에 여러 개를 설정 가능
 
drop table tblexam; 
 
create table tblexam(id number , name varchar(10) null,
constraint uk_unique(id)
 

 
 

5) default

 
drop table tblexam; 
 
create table tblexam(id number not default 0, name varchar(10) default 'noname');
 

6) Sequence

 
create sequence seq_id;
 
insert into tblexam(id) values(seq_id.nextval);
 

7) check

 
drop table tblexam; 
 
CREATE TABLE tblExam(
    id NUMBER(3),
    name VARCHAR2(10),
    city VARCHAR2(10),
    CONSTRAINT ck_tblexam_city CHECK (city='서울' OR city='경기' OR city='인천' OR city='수원')
);

 
 
참조는 관계형 DB
참조하는 테이블은 = 자식 테이블  /   참조를 해주는 테이블은 = 부모 테이블
 

8) foreign 

create table tbldept(deptno char(3), dname varchar2(10));
 
insert into tbldept values(10, 'sales');
insert into tbldept values(10, 'marketting');
 
 
create table tblemp(
empno number,
ename varchar2(10),
hiredate date,
deptno char(3)
constraint fk_tblemp_deptno foreign key(deptno) references tbldept(deptno)
);
 
alter table tbldept add constraint pk_tbldept_deptno primary key(deptno);
insert into tblemp values(1, 'hong' sysdate, '10');
insert into tblemp values(1, 'hong' sysdate, '30');
 
update tbldept set deptno = 100 where deptno=10;


[국비 코딩 수업 14일차!] 5. 데이터베이스

8. 데이터베이스 모델링 요구사항 수집 > 요구사항 분석(ERD) > 코딩 > 테스트 > 납품 > 유지보수 기간. 개발 프로세스. 필요한 게 무엇인지 먼저 미팅을 통해 필요한 부분을 메모하고(요구사항 수집

gestyou.tistory.com