[알고리즘]
수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것 -> 문제를 해결하기 위한 절차
[알고리즘 표현- 자연어]
자연어: 일상에서 쓰는 말로 서술하는 방식
ex)나무꾼이 쇠도끼를 물에 빠트림 ->산실령이 물 속에 나와 나무꾼에게 금도끼, 은도끼, 쇠도끼 중에 무엇을 빠뜨렸는지 묻는다 ->나무꾼이 쇠도끼를 빠뜨렸다고 말함 -> 나무꾼은 금,은,쇠도끼 모두 받는다
-> 순서도: 어떠한 일을 처리하는 과정을 순서대로 간단한 기호와 도형으로 도식화한것
->프로그래밍 언어: 코딩 시작
[알고리즘 조건]
입력: 외부에서 제공되는 자료가 0개 이상 존재해야함
출력: 적어도 2개 이상의 서로 다른 결과를 내어야 함
명확성: 수행과정은 명확하고 모호하지 않은 명령어로 구성되어야 함
유한성: 유한 번의 명령어를 수행 후(유한 시간 내)에 종료되어야 함
효율성: 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 함
[좋은 알고리즘]
공간복잡도(space complexity)
시간복잡도(time complexity)
[알고리즘 작성해보기]
Q. 아침 식사로 시리얼을 먹는 알고리즘을 작성하시오.
[알고리즘 표현하기]
2.우유를 연다
3.시리얼 봉투를 연다
4.우유를 그릇에 붓는다
5.시리얼을 그릇에 붓는다
6.숟가락으로 먹는다
7.시리얼과 우유를 넘치지 않게 붓는다
8.시리얼과 우유를 끝까지 먹는다

[프로그래밍]
package 다중for문;
import java.util.Scanner;
public class 시리얼 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int G = 500;
System.out.print("우유를 열까요?");
char Mbong = scan.next().charAt(0);
if (Mbong == 'Y') {
System.out.print("시리얼을 열까요?");
char Sbong = scan.next().charAt(0);
if (Sbong == 'Y') {
System.out.print("우유를 얼마나 담을까요?");
int M = scan.nextInt();
System.out.print("시리얼을 얼마나 담을까요?");
int S = scan.nextInt();
int sum = M + S;
System.out.print("한 숟갈에 얼마나 먹으실래요?");
int SP = scan.nextInt();
if (sum <= G) {
for (int i = 1; sum > 0; i++) {
sum -= SP;
System.out.printf("%d숟갈 찹\n", i);
}
System.out.println("다 먹었다");
} else {
System.out.println("넘쳤습니다");
}
} else {
System.out.println("먹을 수 없습니다");
}
} else {
System.out.println("먹을 수 없습니다");
}
}
}
Flowchart Maker & Online Diagram Software
Flowchart Maker and Online Diagram Software diagrams.net (formerly draw.io) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPM
app.diagrams.net
[자료구조]
한정된 크기의 책장이 있을 때 가장 많은 책을 넣는 방법은?
-> 규칙 없이 있는 책 모두 꽂기!
공간을 가장 효율적으로 사용한 것 같지만 이후 책을 찾을 때 큰 문제가 발생(규칙 없이 모든 범위 찾아야 함)
-> 오름차순으로 규칙세워 꽃기!
책의 제목 이용해 찾기 수월 but,처음에 책을 꽂거나 이후에 책 추가하기 힘듦
-> 분야 별로 분류해 꽂기!
it 서적이 더 많아지면 더이상 자리가 없고 소설은 너무 여유로워 공간의 비효율 발생
->가림막을 이용해 공간 활용!
한 분류가 한 라인을 넘어가면 책을 꽂거나 찾을 때 헷갈릴 수 있음
컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직,관리,저장하는 것 -> 데이터 값의 모임
자료구조? 후입선출, 선입선출(Q)
[자료구조의 분류]
[배열]
동일한 자료형의 데이터를 연속된 공간에 저장하기 위한 자료구조
: 동일한 자료형의 데이터들이 순차적으로 저장
>반복문을 이용하여 처리하기에 적합한 자료 구조
: 인덱스에 대응하는 데이터들로 이루어진 자료 구조
> 한 번에 많은 메모리 공간 선언 가능
: 인덱스는 0부터 시작
> 인덱스는 배열 시작 위치로부터의 상대적인 위치
Q. 학생 7명의 자바 점수를 저장하는 변수를 선언하시오.
arr 배열의 참조값을 저장한다
[배열 선언 및 생성]
1. 배열 생성 | 2.배열 레퍼런스 변수 선언 |
new int [5]; | int[ ] arr = new int[5]; 정수형 배열에 참조값을 가지고 있는 변수 ->arr:참조값만 사용 가능 |
new 자료형 [배열의크기] | 자료형[]변수이름 |
생성된 배열에 어떻게 접근? | 레퍼런스 변수? 참조값을 가지는 변수 |
[레퍼런스 변수(reference variable)]
메모리 상에 생성된 인스턴스와 메서드를 가리키는데 사용되는 변수
SCANNER= 객체 or 인스턴스-> 참조값을 알고 있어야 사용 가능 -> 레퍼런스변수 선언
102동 1301호에 찾아가는법?
>아파트의 주소를 알아야 함
레퍼런스 변수 가리키는 인스턴스의 참조값을 가짐
[레퍼런스 변수]
Static asrea : static 이 붙은 데이터, 전역변수를 저장하는 영역 프로그램의 시작부터 종료가 될 때까지 메모리에 남아있음(->어디서든 바로 사용 가능)
heap area: 참조형(Reference Type)의 데이터 타입을 갖는 객체(인스턴스), 배열 등을 저장하는 영역, 참조값은 stack 영역에 저장
stack area: 기본자료형(Primnitive type)의 데이터에 해당하는 지역변수를 저장하는 영역, 메소드가 호출될 때 메모리에 할당되며 종료되면 해제
[배열 선언 및 생성]
배열 선언 및 생성 시 주의사항
- 레퍼런스 변수 선언 시 배열의 크기를 지정할 수 없다
- 반드시 배열이 생성된 후 접근 할 수 있다
- 각 원소에 접근 시 []사이에 인덱스를 적어 접근한다
- 배열의 인덱스는 0부터 시작한다
int[]arr = new int[3]; ->3개의 공간을 할당해주고 0으로 맞춘다
arr[0]=3; >0번 인덱스에 값 할당
arr[1]=10; >1번 인덱스에 값 할당
arr[2]=15; >2번 인덱스에 값 할당
배열 생성 시 값을 알고 있는 경우
int[]arr={4,2,5,7,10}; -> 4:0번/2:1번/5:3번
float[]arr2={0.4f, 0.22f, 0.35f, 7f, 10.23f};
int[]intArray=new int[5]; int[]myArray=intArray; |
intArray[1]=2;
System.out.println(intArray[1]); >2
myArray[1]=6;
System.out.println(intArray[1]); >6
레퍼런스의 메모리 상의 주소값을 가지고 있다
[배려의 크기]
- 레퍼런스 변수 선언 시 결정되지 않음
- 배열 생성 시 결정되며 바꿀 수 없음
- 배열의 length라는 필드(속성)에 저장
int[]intArray=new int[8];
System.out.println("intArray의 크기는 + intArray.length+"입니다.");
//.length ->변수
* ( ) 기능=메서드
[다음 중 올바른 배열 선언 문장들]
1. int[]float= new float[3]
2.int[]avg=new int[2];
3.int[ ]avg={10,5,4};
4.int avg[]=new int[1];
5.int[]avg=new int[4];
6.int[ ] avg=new int[3];
7.int[] avg= {10,5 ,4,6};
8.int avg[ ]={8,9,5};
<data base>
[11. 뷰 생성]
[데이터베이스 객체]
객체 | 설명 |
테이블 | 기본 저장 단위며 행과 열로 구성 됩니다. |
뷰 | 논리적으로 하나 이상의 테이블에 있는 데이터의 부분 집합을 나타냅니다. |
시퀀스 | 기본 키 값을 생성합니다. |
인덱스 | 질의의 성능을 향상시킵니다. |
동의어 | 개체의 다른 이름입니다. |
* data 액세스 제한
보안과 관련이 있다
[뷰란?]
table view를 통해 제한된 data를 보게 해준다
테이블 뷰를 생성하면 데이터의 논리적인 부분 집합 또는 조합을 나타낼 수 있습니다. 뷰는 테이블 또는 다른 뷰를 기반으로 하는 논리 테이블로서 자체적으로 데이터를 포함하지는 않지만 창과 마찬가지로 뷰를 통해 테이블의 데이터를 보거나 변경할 수 있습니다.
[뷰 사용 목적]
- 데이터 액세스를 제한하기 위해
- 복잡한 질의를 쉽게 작성하기 위해
- 데이터 독립성을 제공하기 위해
- 동일한 데이터로부터 다양한 결과를 얻기 위해
[단순 뷰 및 복합 뷰]
특징 | 단순 뷰 | 복합 뷰 |
테이블 수 | 하나 | 하나 이상 |
함수 포함 | 아니오 | 예 |
데이터 그룹 포함 | 아니오 | 예 |
뷰를 통한 DML 작업 | 예 | 불가능한 경우도 있음 |
table 원본 data= 단순뷰
가공된 결과= 복합뷰 ex) avg(sal) / 12*sal
뷰는 단순 뷰와 복합 뷰로 구분되는데 기본적인 차이는 insert,update 및 delete 등의 dml 작업과 관련되어 있습니다
- 단순 뷰의 특징은 다음과 같습니다
- 한 테이블에서만 데이터를 얻습니다.
- 함수 또는 데이터 그룹을 포함하지 않습니다.
- 뷰를 통해 dml 작업을 수행할 수 있습니다.
- 복합 뷰의 특징은 다음과 같습니다.
- 여러 테이블에서 데이터를 얻습니다.
- 함수 또는 데이터 그룹을 포함합니다
- 뷰를 통해 DML 작업을 수행할 수 없는 경우도 있습니다.->거의 불가능함
[뷰 생성]
- create view 문에 서브 쿼리를 포함시킵니다.
create [or replace] [force|moforce]view view
[(alias[, alias]...)]
as subquery
[wite check option [constraint constraint]]
[with read only [constraint constraint]];
구문 설명:
or replace :뷰가 이미 있어도 다시 생성합니다.
force : 기본 테이블의 존재 여부에 관계 없이 뷰를 생성합니다.
noforce: 기본 테이블이 있는 경우만 뷰를 생성합니다(기본값)
view: 뷰 이름입니다.
alias: 뷰 질의에 의해 선택되는 표현식의 이름을 짖어합니다.(별칭 수는 뷰에 의해 선택되는 표현식 수와 일치해야 합니다.)
subquery: 완전한 select 문입니다.(select 목록에서 열에 대해 별칭을 사용할 수 있습니다.)
with check option 뷰를 통해 액세스할 수 있는 행만 삽입 또는 갱신할 수 있도록 지정합니다.
constraint : check option 제약 조건에 지정된 이름입니다.
with read only: 이뷰를 통해서는 dml 작업을 수행할 수 없도록 합니다.
table | view |
물리적인 구조 (저장공간) ->data 딕션어리(정보, 구조, 제약조건) data(테이블에 저장된 정보를 저장하는것) |
논리 table=가짜 table, 물리적인 구조x(저장공간변환x) |
데이터 딕션어리만 사용(select sal*12 from emp where did =50) -> 문장 저장 |
|
재실행 |
- create view 문에 서브 쿼리를 포함시킵니다.
create [or replace] [force|noforce] view view[(alias[, alias]...)]
as subquery
[뷰 생성]
- 부서 80의 사원에 대해 자세한 정보를 포함하는 뷰 empvu80을 생성합니다.
create view empvu80
as select employee_id, last_name, salary
from employees
where department_id =80;
view created
- isql*plus 의 describe 명령을 사용하여 뷰의 구조를 표시합니다.
describe empvu80
- 서브 쿼리에 열 별칭을 사용하여 뷰를 생성합니다.
create view salvu 50
as select employee_id id_number, last_name name, salary*12 ann_salary
from employees
where department_id =50;
view created.
- 주어진 별칭 이름을 사용하여 이 뷰에서 열을 선택합니다.
- 위의 코드는 부서 50의 모든 사원에 대해 별칭이 id_number인 사원 번호(employee_id), 별칭이 name 인 이름(last_name), 별칭이 ann_salary인 연봉(salary)을 포함하는 뷰를 생성합니다.
[뷰에서 데이터 검색]
select *
from salvu50;
- 테이블에서 데이터를 검색하는 것처럼 뷰에서도 데이터를 검색할 수 있습니다. 전체 뷰의 내용을 표시할 수도 있고 특정 행 및 열만 표시할 수도 있습니다.
[뷰 수정]
- create or replace view 절을 사용하여 empvu80뷰를 수정하고 각 열 이름에 대해 별칭을 추가합니다.
create or replace view empvu80
(id_number, name, sal, department_id)
as select employee_id, first_name || ' ' || last_name, salary, department_id
from employees
where department_id =80;
view created.
- create view 절의 열 별칭은 서브 쿼리의 열과 동일한 순서로 나열해야 합니다.
- or replace 옵션을 사용하면 해당 이름의 뷰가 이미 있더라도 뷰를 생성하여 해당 소유자의 이전 버전의 뷰를 대처할 수 있습니다. 즉 이전 객체 권한을 삭제하고 다시 생성하여 권한을 다시 부여하지 않고도 뷰를 변경할 수 있습니다.
create view 절에서 열 별칭을 지정하는 경우 서브 쿼리의 열과 동일한 순서로 나열 해야 합니다.
[복합 뷰 생성]
그룹 함수를 포함하는 복합 뷰를 생성하여 두 테이블의 값을 표시합니다.
[뷰를 통한 DML 작업 수행에 관한 규칙]
- 단순 뷰를 통해 DML 작업을 수행할 수 있습니다.
- 뷰를 다음이 포함된 경우 행을 제거할 수 없습니다-> 그룹 함수, group by절, distinct 키워드, 의사 열 rownum 키워드
- 뷰를 다음이 포함된 경우 행을 수정할 수 없습니다-> 그룹 함수, group by절, distinct 키워드, 의사 열 rownum 키워드, 표현식에 의해 정의된 열
- 뷰를 다음이 포함된 경우 행을 데이터를 추가할 수 없습니다-> 그룹 함수, group by절, distinct 키워드, 의사 열 rownum 키워드, 표현식에 의해 정의된 열
[뷰 특징]
뷰는 변형된 값을 그대로 볼수 있다
테이블과 뷰 조인 가능
[부서별 최대급여를 받는 사원의 이름과 부서번호와 급여와 최대급여를 조회]
SQL> ed
Wrote file afiedt.buf
1 select e.department_id, e.last_name, e.salary, d.max
2 from employees e, dept_sum_vu d
3 where e.department_id=d.department_id
4* and e.salary=d.max
SQL> /
DEPARTMENT_ID LAST_NAME SALARY MAX
------------- -------------------- ---------- ----------
100 Greenberg 12008 12008
30 Raphaely 11000 11000
90 King 24000 24000
20 Hartstein 13000 13000
70 Baer 10000 10000
110 Higgins 12008 12008
50 Rajs 30000 30000
80 Russell 14000 14000
40 Mavris 6500 6500
60 Hunold 9000 9000
10 Whalen 4400 4400
11 rows selected.
SQL>
[DML 작업 거부]
- 뷰 정의에 with read only 옵션을 추가하면 dml작업을 거부할 수 있습니다.
- 뷰를 통해 행에 dml 작업을 수행하면 oracle server 오류가 발생합니다.
[뷰 제거]
뷰는 데이터베이스의 기본 테이블을 기반으로 하므로 데이터 손실 없이 뷰를 제거할 수 있습니다.
drop view view;
drop view empvu80;
view dropped.
[인라인 뷰]
- 셀럭트 문장안에 포함된 문장
- 인라인 뷰는 SQL 문에서 사용 가능한 별칭(또는 상관 이름)을 사용하는 서브 쿼리입니다.
- 기본 질의의 from 절에 있는 명명된 서브 쿼리는 인라인 뷰의 한 예입니다.
- 인라인 뷰는 스키마 객체가 아닙니다.
*rownum -> 행이 출력된 이후에 출력된 행으 ㅣ번호 retury
-> 행이 출력이 되고 나면 번호를 지정해 주는게 rownum이다, 그 값 이하만 찾을 수 있다
Q. 급여를 조금 받는 하위 3명의 사원의 이름과 급여를 출력하시오.
SQL> select last_name, salary
2 from employees
3 order by salary asc;
[Top-N 분석]
- Top-n 질의는 열에서 가장 큰 n개의 값 또는 가장 작은 n개의 값을 요청합니다. 예를 들어 "가장 많이 팔린 제품 10가지는?" " 가장 적게 팔린 제품10가지는?" "가장 적게 팔린 제품10가지는?"
- 최대값 집합 및 최소값 집합은 모두 top-n질의에 해당 합니다.
- top-n 질의는 테이블에서 조건에 맞는 최상위 레코드 n개 또는 최하위 레코드 n개를 표시하는 시나리오에 유용합니다. 이 결과 집합은 다른 분석에도 사용할 수 있습니다. 예를 들어, top-n 분석을 사용하여 다음 유형의 질의를 수행할 수 있습니다.
-회사의 최상위 소득자 세명, 회사에 가장 최근에 입사한 신입 사원 네 명, 제품을 가장 많이 판매한 영업 사원 두 명, 최근 6개월 동안 가장 많이 팔린 제품 세 가지
[Top-n 분석 수행]
top-n 분석 질의의 상위 레벨 구조는 다음과 같습니다.
select [column_list], rownum
from (select [column_list]
from table
order by top_n_column)
where rownum<=n;
Q. 가장 마지막에 입사한 5명의 사원의 이름과 입사일을 출력하시오
1 select last_name, hire_date
2 from (select last_name, hire_date
3 from employees
4 order by hire_date desc)
5* where rownum<6
SQL> /
LAST_NAME HIRE_DAT
-------------------- --------
Banda 08/04/21
Kumar 08/04/21
Ande 08/03/24
Markle 08/03/08
Lee 08/02/23
Q. 부서별 평균급여가 많은 상위 3개의 부서번호와 평균급여를 출력
1 select department_id, avgsal
2 from (select department_id, avg(salary) avgsal
3 from employees
4 group by department_id
5 order by avg (salary) desc)
6* where rownum<4
<SQLD 자격증 준비>
15,17,18장 공부
windows 함수 공부해야 함
data진흥협회 -> 기출문제집공부하기
[12. 기타 데이터베이스 객체]
객체 | 설명 |
테이블 | 기본 저장 단위며 행과 열로 구성됩니다. |
뷰 | 논리적으로 하나 이상의 테이블에 있는 데이터의 부분 집합을 나타냅니다. |
시퀀스 | 기본 킨 값을 생성합니다 |
인덱스 | 질의의 성능을 향상시킵니다. |
동의어 | 객체의 다른 이름입니다. |
[시퀀스란?]
시퀀스는
- 고유 번호를 자동으로 생성합니다.
- 공유 가능한 객체입니다.
- 일반적으로 기본 키 값을 생성하는 데 사용됩니다.
- 응용 프로그램 코드를 대체합니다.
- 시퀀스 값을 메모리에 캐시하면 액세스 효율이 높아집니다.
- pk 대체할때 시퀀스를 거의 대부분 사용한다
[시퀀스 생성]
- departments 테이블의 기본 키로 사용할 dept_deptid_seq 시퀀스를 생성합니다.
- cycle 옵션은 사용하지 마십시오.
create sequence dept_deptid_seq
increment by 10 -> 증가값 ex) 120->130->140....->9990
start with 120 -> 첫번째 생성이 되는 sequence 넘버
maxvalue 9999 -> 최대로 생성이 되는 sequence 넘버
nocache
nocycle; ->번호
sequence created.
nocache, nocycle -> 디폴트 값 -> 생략 가능
- 위 코드는 departments 테이블의 department_id 열에 사용할 dept_deptid_seq 시퀀스를 생성합니다. 시퀀스 값은 120에서 시작하며 캐시를 허용하지 않고 순환하지 않습니다.
[시퀀스 확인]
- user_sequences 데이터 딕셔너리 테이블에서 시퀀스 값을 확인합니다.
select sequence_name, min_value, max_value, increment_by, last_number
from user_sequences;
- nocache가 지정된 경우 last_number 열에서 사용 가능한 다음 시퀀스 번호가 표시됩니다.
[nextval 및 currval 의사 열]
nextval -> 값을 추출, currval -> 누적값 저장x
- nextval 은 사용 가능한 다음 시퀀스 값을 반환하며, 참조될 때마다(서로 다른 사용자일지라도) 고유한 값을 반환합니다.
- currval은 현재 시퀀스 값을 반환합니다.
- currval 이 값을 포함하려면 먼저 해당 시퀀스에 대해 nextval이 실행되어야 합니다.
시퀀스 = 300 , 310 ,320 데이터 추출 -> rollback 취소
[시퀀스 사용]
- 위치 id 2500에 "support"라는 이름의 새 부서를 추가 합니다.
insert into departments(department_id, department_name, location_id)
values (dept_deptid_seq.nextval,'support',2500);
1 row created.
- dept_deptid_seq 시퀀스의 현재 값을 봅니다.
select dept_deptid_seq.currval
from dual;
- 시퀀스 값을 메모리에 캐시하면 해당 값을 더 빠르게 액세스할 수 있습니다.
- 다음과 같은 경우 시퀀스 값 사이에 공백(gap)이 생깁니다.(롤백이 발생하는 경우, 시스템이 고장난 경우, 시퀀스가 다른 테이블에서 사용되는 경우)
- nocache로 시퀀스를 생성한 경우 user_sequences 테이블을 질의하여 사용 가능한 다음 값을 볼 수 있습니다.
- 시퀀스는 공유 가능한 객체이다
[시퀀스 수정]
증분 값, 최대값, 최소값, cycle 옵션 또는 cache 옵션을 변경합니다.
alter sequence dept_deptid_seq
increment by 20
maxvalue 999999 -> 줄일때, 일부검증
nocache
nocycle;
sequence altered.
[시퀀스 수정에 대한 지침]
- 시퀀스 소유자이거나 시퀀스에 대한 alter 권한이 있어야 합니다.
- 이후 시퀀스 번호에만 영향을 줍니다.
- 시퀀스를 다른 번호로 다시 시작하려면 시퀀스를 삭제한 후 다시 생성해야 합니다.
- 일부 검증이 수행됩니다.
[시퀀스 제거]
- drop sequence 문을 사용하여 데이터 딕셔너리에서 시퀀스를 제거합니다.
- 제거된 시퀀스는 더 이상 참조할 수 없습니다.
drop sequence dept_deptid_seq;
sequence dropped.
[인덱스란?]
- 스키마 객체입니다.
- oracle server에서 포인터를 사용하여 행 검색 속도를 높이기 위해 사용합니다.
- 데이터 위치를 빠르게 찾는 신속한 경로 액세스 방법을 사용하여 디스크 I/O를 줄여 줍니다.
- 인덱스화된 테이블과 독립되어 존재합니다.
- Oracle server에 의해 사용되며 자동으로 유지 관리됩니다.
parse 1.검증 2.실행계획수립->table_full_scan->순서 검색
index는 정렬데이터 이다 between a and b를 사용하면 최상의 데이터를 가질수 있다
[인덱스 생성 방법]
-자동: 테이블 정의에 primary key 또는 unique 제약 조건을 정의하면 고유 인덱스가 자동으로 생성 됩니다.
- 수동: 사용자가 열에 고유하지 않은 인덱스를 생성하여 행에 대한 액세스 시간을 줄일 수 있습니다.
[동의어 이부분을 몰라도 된다]
[13.사용자 액세스 제어]
DCL -> 권한이 없는 애들이 DB 접근 방지, 권한이 있는 애들이 DB 내에서 불법적인 행위 방지
db -> end user->select사용
개발자->dml사용
dba->dcl사용
select, dml, ddl -> 사용자, dba
dcl ->dba
데이터베이스 관리자 -> 1.user 생서 (id,pw를 가지고) -> dba 2. 권한 부여/회수 관리 ->dcl
1. 사용자 이름 및 암호 2. 권한
[권한]
- 데이터베이스 보안: 시스템 권한-> DBA, 객체 권한 ->DBA
- 데이터베이스 보안: 시스템 보안, 데이터 보안
- 시스템 권한: 데이터베이스를 액세스할 수 있습니다.
- 객체 권한 : 데이터베이스 객체의 내용을 조작할 수 있습니다.
- 스키마:테이블, 뷰, 시퀀스 등과 같은 객체의 collection 입니다.
[시스템 권한]
- 100가지 이상의 권한을 사용할 수 있습니다.
- 데이터베이스 관리자는 다음과 같은 작업에 대해 상위레벨의 시스템 권한을 가집니다.
새 사용자 생성, 사용자 제거, 테이블 제거, 테이블 백업
시스템 권한 | 승인된 작업 |
create user | 다른 오라클 사용자를 생성할 수 있습니다.(DBA 롤에 필요한 권한) |
drop user | 다른 사용자를 삭제할 수 있습니다. |
drop any table | 스키마에 있는 테이블을 삭제할 수 있습니다 |
backup any table | export 유틸리티로 스키마에 있는 테이블을 백업할 수 있습니다 |
select any table | 스키마에 있는 테이블,뷰 또는 스냅샷을 질의할 수 있습니다. |
create any table | 스키마에 테이블을 생성할 수 있습니다. |
SQL> conn /as sysdba Connected. -> 슈퍼권한!! |
SQL> conn hr/hr
Connected.
SQL> conn system/12345
Connected.
SQL> conn /as sysdba
Connected.
SQL> conn system/12345
Connected.
SQL> create user test
2 identified by test;
User created.
SQL> grant create session to test;
grant-> 권한 부여 create session-> 권한 이름 test -> 사용자 이름 부여받을
Grant succeeded.
SQL> grant create table to test;
Grant succeeded.
SQL> grant connect, resource to test;
->grand로 권한을 부여한다
Grant succeeded.
SQL>revoke connect, resource from test
SQL> /
revoke->권한 회수
[사용자 생성]
great 명령으로
[롤 생성 및 권한 부여]
- 롤을 생성합니다
create role manager
[암호 변경]
-dba는 사용자 계정을 생성하고 암호를 초기화합니다.
- alter user문을 사용하여 암호를 변경할 수 있습니다.
SQL> alter user test
2 account unlock;
-> 계정 잠금 푸는것
User altered.
[사용자 생성]
DEA는 create user 문을 사용하여 사용자를 생성합니다.
create user user
identified by password;
create user scott
identified by tiger;
user created
[ 사용자 시스템 권한]
- dba는 생성된 사용자에게 특정 시스템 권한을 부여할 수 있습니다.
- 응용 프로그램 개발자는 예를 들어 다음과 같은 시스템 권한을 갖습니다.
시스템 권한 | 승인된 작업 |
create session | 데이터 베이스에 연결합니다. |
ㅂcreate table | 사용자의 스키마에 테이블을 생성합니다. |
create sequence | 사용자의 스키마에 시퀀스를 생성합니다. |
create view | 사용자의 스키마에 뷰를 생성합니다. |
create proceduce | 사용자의 스키마에 내장 프로시저, 함수 또는 패키지를 작성합니다. |
[ 사용자 시스템 권한]
dba는 사용자에게 특정 시스템 권한을 부여할 수 있습니다.
grant create session, create table, create sequence, create view
to scott;
grant succeeded.
[롤이란?]
롤은 사용자에게 부여할 수 있는 관련 권한을 하나로 묶어 명명한 그룹으로서 롤을 사용하면 권한 취소 및 유지 관리를 쉽게 수행할 수 있습니다.
[롤 생성 및 권한 부여]
-롤을 생성합니다.
create role manager;
role created.
- 롤에 권한을 부여합니다.
grant create table, create view
to manager;
grant succeeded
- 사용자에게 롤을 부여합니다.
grant manager to dehaan, kochhar;
grant succeeded.
[암호 변경]
- dba 는 사용자 계정을 생성하고 암호를 초기화 합니다.
- alter user 문을 사용하여 암호를 변경할 수 있습니다.
alter user scott
identified by lion;
user altered
[객체 권한 부여]
- employees 테이블에 대한 질의 권한을 부여합니다.
grant select
on employees
to sue, rich;
grant succeeded.
사용자 및 롤에 특정 열을 갱신할 수 있는 권한을 부여합니다.
grant update(department_name, location_id)
on departments
to scott, manager;
grant succeeded
[객체 권한 취소]
사용자 alice의 입장이 되어 departments 테이블에 대해 사용자 scott에게 부여된 select 및 insert 권한을 취소합니다.
revoke select, insert
on departments
from scott;
revoke succeeded
* scott->권한 회수
'Full Stack 교육 회고록' 카테고리의 다른 글
8/18 java - 배열, 이차원 배열 (0) | 2022.08.18 |
---|---|
8/17 [자료구조]-배열 [java] -매소드 (0) | 2022.08.17 |
8/10 [JAVA]-While/do~while문 예제, for문 (0) | 2022.08.15 |
8/12 [java]-쪽지시험 [database]-제약조건 포함 (0) | 2022.08.12 |
8/11 [JAVA]- 예제 모음 [DataBase]-데이터 조작(DML) (0) | 2022.08.11 |