본문 바로가기

Database/Oracle

(11)
데이터 제어어 (DCL) 『 DB보안의 기본 』 1. user 생성 2. 권한 부여/회수 시스템 권한: 데이터베이스 액세스 권한 객체 권한: 객체의 내용을 조작할 수 있는 권한 유저의 생성, 다만 다음과 같이 생성을 하게 되면 유저는 데이터 베이스의 모든 영역을 사용할 수 있게 되어버린다. 유저가 생성되었지만, 세션에 접근할 권한이 없어 관리자가 grant 명령어를 통해 세션 접근 권한을 주어야 한다. 테이블 생성 권한을 줘도 저장공간을 할당해주지 않으면, 유저는 테이블 생성들의 행위를 할 수 없다. 따라서 유저에게 connect, resource 를 통해 할당해주어야 한다. connect 롤 : 접속,접근에 관련된 권한들 resource 롤 : 저장공간에 관련된 권한들 create role [manager]; grant a,b..
시퀀스 nocache, nocycle 옵션은 생략 가능하다. nocache : nocycle : 최대 번호가 넘어가면 다시 첫번째 값으로 가는데, 이 옵션을 취소함. nextval은 값을 추출, currval은 추출된 값을 저장 300 / 300, 310 / 300 이런식 values에 시퀀스명.nextval 을 통해 삽입할 수 있다, 그러면 위에 해 준 시퀀스 설정대로 아래 사진과 같이 시퀀스 번호가 300/ 310/ 320 과 같이 10씩 늘어나는 것을 볼 수 있다. 시퀀스는 한 번 추출이 된 값을 다시 추출하지 않는다. rollback 을 시킨다 하더라도 시퀀스는 독립된 개체이기 때문에 rollback의 영향을 받지 않는다. 그리고 다른 테이블에서 삽입으로 sequence 를 생성한다 해도, 그것은 공유되..
뷰(view) 단순 뷰 : 테이블 그대로를 보여주는 뷰 복합 뷰 : 원본 데이터가 아닌 변경된 값을 보여주는 뷰 『 뷰 생성 』 create view [뷰명] 뷰는 논리테이블, 가상테이블이며 테이블은 물리적으로 테이블 데이터가 저장공간을 할당받으며 저장되지만 뷰는 물리적 구조가 없으며, 사용자가 입력한 문장에 대한 텍스트를 저장한다. 그러니까 저장된 데이터 자체는 없지만, 사용자는 뷰를 테이블인것 처럼 사용하게 되는 것이다. CREATE문과 REPLACE 문이 있다. 이것은 뷰가 저장하고 있던 SQL 문장, 텍스트를 대체시키는 것이다. 조인의 경우, 테이블만이 아닌 뷰 또한 조인이 가능하다. 『 뷰 제거 』 DROP VIEW [뷰명]; // 뷰가 가진 텍스트를 제거하므로, 테이블에는 지장이 없다. 『인라인 뷰』 fro..
제약 조건 설정 제약 조건 : 무결성을 보장하기 위해 테이블을 구성하고 있는 컬럼들에 부가하는 것 ○ NOT NULL - 값이 있어야 함 // 컬럼 레벨만 추천 ○ UNIQUE - 중복허용, null 허용 ○ PRIMARY KEY ○ FOREIGN KEY - 외래키는 PK와 UK만을 참조한다 ○ CHEKC - 사용자가 조건을 설정 제약조건 지침 ○ 제약조건 이름을 지정하지 않으면 Sys_cn 형식 이름으로 자동 지정 ○ 제약조건 생성시기는 테이블이 생성될 때 혹은 테이블이 생성된 후 이다. [주로 생성될 때] ○ 데이터 딕셔너리에서 제약조건 확인 가능. create table xxx { x number(1) constraint [제약조건이름] [제약조건], // 컬럼 레벨 y number(1) not null, // c..
데이터 정의어 [DDL] 의 활용 DDL => 구조를 가지고 있는 언어. (객체 ) 를 생성, 삭제 하는 언어 『 데이터 베이스 객체 』 테이블 : 데이터를 저장하는 기본단위, 행 열로 구성 뷰 : 데이터의 액세스를 제한하기 위해 사용 시퀀스 : 숫자 값 생성기 [중복이 되지 않는 고유 번호를 생성하여 줌] 인덱스 : 질의의 성능을 향상시키기 위한 객체 동의어 : 객체에 다른 이름을 제공함. [ Employees -> emp 동의어 ] 『 데이터 유형 』 VARCHAR(길이) : Variable Character, 가변 길이 문자 데이터 [길이 만큼 할당해놓고 저장공간 자연스럽게 할당] ->저장공간 CHAR(길이): Character, 고정 길이 문자 데이터 [길이 만큼의 공간을 만들어놓고,사용 공간 이후의 공간 할당불가]->성능 NUM..
데이터 조작어 [DML] 와 트랜잭션 DML은 다음과 같은 경우 사용된다. - 새 행을 추가 할 경우 - 기존 행을 수정 할 경우 - 기존 행을 삭제 할 경우 트랜잭션은 논리 작업단위를 형성하는 DML 문의 모음으로 구성 됨. 트랜잭션과 관련있는 언어는 [Insert, Delete, Upeate] 이며 Select문은 데이터 베이스 구조에 변경을 일으키는 작업이 아니기 때문에 트랜잭션과 관련이 없음. ○ DML은 문장 전체가 하나의 트랜잭션이다. ex : insert -> insert -> insert [이것을 하나의 트랜잭션으로 보고 한꺼번에 저장] = Commit ○ DCL, DDL 은 문장 하나가 하나의 트랜잭션이다. ex: revoke -> commit, create schma -> commit, 【 Insert 】 한 번에 행 전체..
Select 문 -3 (join) 커미션을 받는 모든 사원들의 이름, 연봉, 커미션을 출력하되 연봉은 ANNSAL로 출력하고 연봉을 기준으로 역순 정렬하라. 이름의 4번째 글자가 a인 사원의 이름을 조회한다. _하나당 한자리씩, a% a로 시작하는 이다. 【 JOIN 조건 】 조인기능, 여러 테이블에서 데이터를 얻는 select문의 조인 방법 [셀렉트, 프로젝션, 조인 중] ex : dept(dept_id, dept_name) , emp(e_id, dept_id) 일 때 e_id, dept_name 을 조회하고 싶을 때. 조인 기능은 두 테이블의 컬럼 dept, emp 를 하나로 합한다. from dept, emp 이렇게 합할 때는 무결성 원칙을 지키면서 행을 일치를 시켜야 함 예를들어 저기서는 두 행이 일치시키려고 할 때 dept_id..
Select문 -2 【 WHERE 】 - 조건절 where 절 다음에는 조건식이 온다. where 절을 통해 검색할 조건을 넣어주었다 여기서는 employees 테이블에서 부서번호가 90인, 사원의 이름과 월급을 색인한 것이다. 여기서 90은 절대적인 숫자데이터이므로 리터럴 속성을 가진다. 모든 옵션들을 제외하면, 각 절의 머리에는 컬럼 명이 붙는다 『 where 절 유의사항 』 ○ 값이 문자나 날짜인 경우 반드시 '' (작은 따옴표)로 명시, 숫자는 하지 않음 ○ 문자의 비교는 아스키를 기반으로 하기 때문에, 대소문자를 구분한다. (table에 저장된 데이터 포맷을 그대로 사용) 『 where 절 비교연산자 』 =, >, >=, not where salary where -> select 순서이므로 as를 통해 컬럼이름을 ..