분류 전체보기 (277)

반응형

 

키(Key)

 

: 데이터 베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(Attribute)

 

- 후보키(Candidate key)

: 튜플을 구별하는데 기준이 되는 컬럼들의 집합

각 튜플을 고유하게 식별할 수 있다. (유일성)

기본키(PK), 대체키(AK)로 구분된다.

 

후보키, 기본키, 대체키

 

- 기본키(Primary key) = PK

: 튜플을 식별하는데 기준으로 사용하는 키.

적어도 하나의 기본키가 존재. (=> 기본이 NOT NULL)

NOT NULL(null 값이면 안 됨), NODUPLICATE (반드시 유일)

 

기본 키로 선택되기 위해선 대표할 수 있고, 짧으며, 자주 사용되는 컬럼이어야 한다.

 

- 대체키(Alternate key)

: 후보키 중 기본키로 선택되지 않은 키.

 

- 복합키(Composite key)

: 두 개 이상의 컬럼을 합쳐 후보키 역할을 하는 키

 

- 외래키(Foreign key) = FK

: 테이블 사이의 관계를 알려주는 키

두 테이블 사이에 존재하며 관계를 맺는 걸 뜻한다. 각각의 테이블을 부모 테이블, 자식 테이블이라 부른다.

식별관계, 비식별관계로 나뉘며 각각의 뜻은 아래와 같다.

 

식별관계 : PK를 PK로 참조함

비식별관계 : 외래키를 이용할 때 PK를 참조함

 

비식별관계

 

외래키에 의한 참조관계에 있을 때 데이터 불일치가 발생했을 때

1. 제한(restrict) : 삭제할 수 없다는 안내를 해줌

2. 연쇄(cascade) : 연계된 튜플도 함께 삭제하거나 바뀐 내용을 Update 함

3. 널 값으로 대체(nullify) : 삭제 후 튜플과 연계된 값을 null 값으로 대체

=> 데이터 불일치가 발생하지 않게 하기 위해선, 자식 테이블 먼저 수정 후 부모 테이블을 수정해야함.

 

 

 

데이터 무결성 (= 참조 무결성 제약조건)

 

참조 무결성 제약조건이란 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것을 말한다.

+ 데이터 무결성이란 정확성(중복, 누락x), 일관성(원인과 결과 연속적으로 보장), 유효성이 유지되는 것을 말한다.

 

-참조 무결성

: 자식테이블에 데이터를 입력하거나 수정할 때 부모테이블을 검증
  부모테이블의 데이터를 수정하거나 삭제할 때 자식테이블을 검증

 

-개체 무결성

: 기본키는 오직 하나의 값, null을 가져선 안 됨

 

- 도메인 무결성

: 속성들의 값은 정의된 도메인에 속한 값이어야 함

ex) 성별을 입력할 때는 '남', '여'를 제외한 데이터는 제한되어야 한다.

 

 

 

뷰의 필요성

 

뷰란 데이터를 바라볼 수 있도록 해주는 수단을 말한다.

필요한 컬럼만 뽑아 테이블을 통해 볼 수 있다.

=> 가상 테이블

관리하기 좋고, 보안에 강하다.

 

 

 

뷰(view) 생성 전 필수 작업

 

1. 테이블 생성 및 데이터 삽입한다.

 

테이블 이름: emp

 

insert into emp
    values ('1006', '김민수', '개발부', sysdate, '2015.01.12', '대전시 서구 갈마로29', 'ERP프로그램', 350);
    
insert into emp
    values ('1002', '곽희준', '영업부', sysdate, '2018.11.09', '서울시 동작구 노량진로100', '특수영업', 400);
    
insert into emp
    values ('1003', '김동준', '생산부', sysdate, '2012.12.03', '부산시 남구 해운대로15', '품질관리', 300);
    
insert into emp
    values ('1004', '성재규', '인사부', sysdate, '2000.02.23', '대구시 중구 달성로300', '급여관리', 450);
    
insert into emp
    values ('1005', '박성범', '구매부', sysdate, '1994.06.12', '대전시 중구 계룡로800', '수입자재', 320);

 

 

2. 데이터를 수정한다.

 

update 테이블 set 변경할 속성 = '변경할 값' where 속성 = '데이터' ;

update 테이블 set 변경할 값 where 조건 ;

 

update emp set birthday = '1994.06.12' where name='박성범';

 

 

3. 권한 부여한다.

 

https://forest-of-coding.tistory.com/6

 

[Database] 1.5장 Oracle user 접속 및 사용권한 부여

Oracle SQL Developer 사용 전 설정할 것 1. Win키 + R 를 누를 시 아래와 같은 실행창을 띄운다. 2. 실행창에 cmd를 입력한다. sqlplus sys/java@localhost:1521 as sysdba 3. 위의 코드를 입력하여 Oracle DB에 접속한다. 4

forest-of-coding.tistory.com

 

위의 뷰 권한 부여 참조하여 cmd에서 권한을 부여해야 한다.

 

 

 

뷰(View) 생성

 

create view 뷰 이름
as
select 속성명1, 속성명2, 속성명3, 속성명4, 속성명5
from 테이블명;

 

총 3개의 View를 생성한다.

 

create view view_emp1
as
select empid, name, dept, hire_date, salary
from emp;

 

create view view_emp2
as
select empid, name, dept, job
from emp;

 

create view view_emp3
as
select empid, name, birthday, address
from emp;

 

 

 

뷰 조회

 

기존의 테이블 조회와 같은 방식이다.

 

select * from view_emp1;

select * from view_emp2;

select * from view_emp3;

 

반응형
반응형

 

문제

 

1. 사원번호가 102인 사원을 조회하시오.

 

2. 급여가 250만원인 사원을 조회하시오.

 

3. 현재 사원수를 조회하시오.

 

4. 급여가 300만원 이상인 사원을 조회하시오.

 

 

 

전체 조회

 

select * from employer; -- 전체 조회

 

결과 화면

 

 

 

사원번호가 102인 사원 조회

 

select * from employer where EMPNO='102';
-- 사원번호가 102인 사원 조회 / 숫자 입력 시 작은 따옴표 쓰지 않아도 됨, 문자일 시 다름

 

결과 화면

 

 

 

급여가 250만원인 사원 조회

 

select * from employer where SALARY='250'; -- 급여가 250만원인 사원 조회

 

결과 화면

 

 

 

현재 사원수 조회

 

select count(*) from employer; -- 현재 사원 수 조회

 

결과 화면

 

 

 

급여가 300만원 이상인 사원 조회

 

select * from employer where SALARY >= '300'; -- 급여가 300만원 이상인 사원 조회

 

결과 화면

 

 

 

번외 : 급여가 500만원 이하, 300만원 이상인 사원 조회

 

select * from employer where SALARY between 300 and 500; -- 급여가 300만원 이상, 500만원 이하인 사원 조회

 

결과 화면

 

반응형
반응형

 

Oracle SQL Developer을 사용하여 테이블을 생성, 수정, 삽입, 삭제한다.

Oracle SQL Developer는 소문자와 대문자를 가려 쓰지 않으며, 항상 끝에는 세미콜론(;)이 필수다.

 

 

 

릴레이션 구조

 

릴레이션(Relation)이란 데이터들의 표(Table)의 형태로 표현한 것을 이야기 한다.

릴레이션 = 테이블 = 파일

튜플들의 집합으로 하나의 릴레이션에는 동일한 튜플이 저장될 수 없다.

튜플(Tuple)속성(Attribute), 도메인(Domain)으로 구성되어 있다.

 

 

- 튜플(Tuple) = Row = 레코드

: 릴레이션을 구성하는 각각의 행, 속성의 모임.

튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수

 

- 속성(Attribute) = Column = 필드

: 데이터베이스를 구성하는 가장 작은 논리적 단위(고유하다). 개체의 특성을 기술.

순서들은 관계 없다.

속성의 수 = 디그리(Degree) = 차수

 

- 도메인(Domain)

: 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합.

각 컬럼에 들어가야 할 제약 조건

 

 

용어 정리

E.FCodd의 용어 File 시스템의 용어 자주 사용되는 용어
릴레이션(relation) 파일(file) 테이블(table)
속성(attribute) 필드(field) 열(column), 컬럼
튜플(tuple) 레코드(record) 행(row)

 

 

 

테이블 생성

 

 

create table 테이블명 ( 
        속성명 타입(크기) NOT NULL 여부
        , constraint 임의의 이름 primary key(속성명)
        -- 프라이머리키 생성시 가변길이는 최대한 피해야 함. 에러 발생 가능성이 있음.
	);

 

create table employer ( -- 테이블 생성
        empno char(6) not null, --부서번호
        ename varchar2(20) not null, --이름
        dept varchar2(16) not null, --부서명
        tel varchar2(13), --전화번호
        salary number(10), --급여
        constraint pk_employee_salaries PRIMARY KEY (empno) -- 프라이머리 키 생성
    );

 

 

기본키(Primay Key) = 주 키 = 메인 키

: 중복될 수 없는 단일의 값.

대표되는 값.

null 값을 가질 수 없으며 단 하나의 속성만 가질 수 있다.

ex) 학번, 주민번호

 

- 자주 쓰이는 타입

문자 : char(고정길이), varchar2

숫자 : number

날짜 : date

 

+ 한글의 경우 한 글자당 3byte

 

 

- 프라이머리키 생성 여부 확인 방법

더보기

키와 관련된 것은 전부 인덱스에서 확인 가능.

 

사용자명 > 인덱스

 

 

- 속성들의 타입 등등 확인 방법

더보기
사용자명 > 테이블 > 생성한 테이블 더블 클릭

 

열, 데이터 등등 확인 가능

 

 

 

테이블 조회

 

 

select * from 테이블명;

 

select * from employer; -- 테이블 조회

 

 

 

테이블 수정

 

 

alter table 테이블명 add (속성명 타입(크기) NOT NULL 여부); -- 필드 추가
alter table 테이블명 modify (속성명 타입(크기)); -- 속성 수정

 

alter table employer add (address varchar2(50) not null); -- address 필드 추가
alter table employer modify (dept varchar2(20)); -- 부서명의 크기 16이었던 것을 20으로 변경

 

 

 

데이터 삽입

 

 

insert into 테이블명 (속성명1, 속성명2, 속성명3, 속성명4, 속성명5, 속성명6)
    values( 데이터1, 데이터2, 데이터3, 데이터4, 데이터5, 데이터6);

 

insert into employer (empno, ename, dept, tel, salary, address)
    values('100', '김기훈', '영업부', '010-8422-8117', 300, '대전광역시 서구 둔산로31번길 31');
insert into employer (empno, ename, dept, tel, salary, address)
    values('101', '홍성범', '기획부', '010-7562-3217', 350, '대전광역시 서구 계룡로29번길 50');
insert into employer (empno, ename, dept, tel, salary, address)
    values('102', '이만수', '기획부', '010-5562-6677', 500, '대전광역시 중구 대사로30번길 10');
insert into employer (empno, ename, dept, tel, salary, address)
    values('103', '강나미', '영업부', '010-4442-5614', 350, '대전광역시 중구 선화로10번길 30');
insert into employer (empno, ename, dept, tel, salary, address)
    values('109', '민병철', '총무부', '010-2542-8211', 250, '대전광역시 동구 산내로1205번길 24');

 

속성 순서에 맞는 데이터를 기입해야 한다.

순서를 바꿀 시 데이터의 순서도 바꿔야 하며 속성 순서가 기존과 같다면 속성명 기입을 생략해도 된다.

 

숫자가 아닌 경우 작은 따옴표(' ')로 감싸야 한다.

 

 

 

테이블 확인

 

 

테이블을 클릭하여 생성된 테이블들을 확인한다.

테이블이 확인되지 않을 시 테이블에 오른쪽 마우스 클릭 > 새로고침 하여 확인한다.

 

 

 

데이터, 테이블 삭제

 

데이터 삭제 후 조회

 

테이블 삭제 후 조회

 

delete from 테이블명;
drop table 테이블명;

 

delete from employer; -- 데이터 삭제
drop table employer; -- 테이블 삭제

 

테이블을 삭제 후 데이터 조회시 오류가 발생한다.

 

반응형
1 ··· 87 88 89 90 91 92 93