강의 들으며 리뷰하기~

DCL : Data Control Language
데이터베이스 사용자에게 권한을 부여, 회수하는 언어
GRANT : 권한 부여
주관식) Grant 권한 on 테이블 to 유저;
With grant option 특정 사용자에게 권한 부여 가능한 권한을 부여함
REVOKE : 권한 회수
주관식) Revoke 권한 on 테이블 from 유저;
With admin option 테이블에 대한 모든 권한 부여
l 권한의 종류 : Select~~~
문제 1.
유저 h가 아래의 코드와 같은 작업을 수행할 수 있도록 권한을 부여하는 DCL을 작성하기
Update h_qualification.data Set col2 =’합격’ Where col1 ='SQLD'; |
정답 Grant select, Update On h_ qualification.data To h; |
문제 2.
데이터베이스상에서 많은 사용자들에게 개별적으로 권한을 부여하고 관리하는 어려움을 해소하고자
다양한 권한을 하나의 그룹으로 묶어서 관리할 수 있도록 하는 논리적인 권한의 그룹(명령어) 을 칭하는 말?
= 다양한 권한을 다양한 유저를 대상으로 관리하기 위한 명령어이다.
= 여러 사용자에게 동일한 ROLL 부여 가능하다.
= ROLE의 생성은 [Create Role] 권한을 가진 유저가 할 수 있다.
= 관리자 권한의 명령어는 무엇인가요?
ROLE : 관리자 권한 집합
DDL : Data Definition Language
데이터를 보관하고 관리하기 위한 객체의 구조를 정의하기 위한 언어
1. Create : 데이터베이스 상 테이블 구조 생성
컬럼명 :영문, 한글,숫자 모두 가능 (시작만 문자로 한다.)
데이터타입 : number : 숫자형
: date : 날짜형
: varchar2 : 가변길이 문자열 '호호’ != ‘호호 ‘ (공백도 센다)
: char : 고정된 크기 문자열 할당된 길이만큼 문자 채움 '호'='호 ’
컬럼 뒤 데이터 유형 지정하는 것은 필수이다.
제약조건 : Constraint
: Default : 기본값 지정
: Not null : null 입력 불가
: Primary key : 기본키 지정 > Not null, Unique한 값(중복 없음)
: Foreign key : 외래키 지정, 테이블당 여러 개 가능
문제 3. 김호호씨가 아래와 같이 테이블 menu를 생성한 후, 유효한 튜플 값 4개를 삽입했다.
이 경우 SQL-a와 SQL-b의 실행 결과를 각각 구하시오
<테이블 생성> Create table menu( 메뉴명 varchar(!0) primary key, 가격 number(!0) ); |
<SQL-a> A, B Select count(*) from menu; Select count(메뉴명) from menu; <SQL-b> A, B Select count(*) from menu; Select count(가격) from menu; |
결과 : A,B 4개 출력된다. count(*) 전체 행의 수 카운트, null포함 count(컬럼명) null 제외한 행 수 카운드 메뉴명 컬럼은 PK이므로 null값을 가질 수 없다. 따라서 *을 통해 전체 행을 추출한 sql-a와 메뉴명이란 컬럼명을 명시한 b결과가 동일하다. sql-b : 가격컬럼에 포함된 null값의 개수에 따라 서로 실행 결과가 다를 수 있다. |
Null 말 문제 대비
l Null은 모르는 값을 상징하고 값이 없음(부재)를 의미한다.
l Null Is Null =true
l Null 과의 모든 비교(ex Null =0)은 알 수 없음(NULL)을 반환함
l Null은 숫자 0이나 공백 문자(‘ ‘)와 동일하지 않음(값이 있다.)
2. Alter : 테이블과 컬럼에 대해 이름, 속성 변경, 추가, 삭제 등 구조 수정(변경)
ALTER | 테이블명 | 수정사항 | |
테이블명 변경 테이블명 다수 동시변경 |
ALTER table Menu RENAME table Menu |
Rename | To ho_Menu ; To ho_Menu ; |
컬럼명 변경 | ALTER table Menu | Rename | Column phone To 전번 ; |
컬럼 속성 변경 | ALTER table Menu | Modify | (이름 varchar(20) not null) ; |
컬럼 추가 | ALTER table Menu | Add | (거주지역 varchar(10)) ; |
컬럼 삭제 | ALTER table Menu | Drop | Column 이름 ; |
제약조건 추가/삭제 | ALTER table Menu | Add Drop |
Constraint ~~ ; Constraint ~~ ; |
문제 6 null값이 발생하지 않게 추가하고자 한다. 올바른 SQL문장을 기술하시오
l Alter table RIDING Modify (Phone varchar(15) Not Null);
3. Drop : 테이블 및 컬럼 삭제 / 구조 삭제
컬럼 삭제 | ALTER table Menu | Drop | Column 이름 ; |
테이블 삭제 | Drop table Menu; | 테이블 관련해서 구조, 데이터 모두 삭제 | |
Truncate table Menu | 테이블 데이터만 삭제되고 구조는 살아있다. | ||
Drop table Menu Cascade constraint; - 해당 테이블의 데이터를 외래키(FK)로 참조한 제약사항도 모두삭제 - [말] 오라클에만 있는 옵션, SQL Server에는 존재하지 않음 - [말] FK제약조건과 참조테이블 먼저 삭제하고 해당 테이블을 삭제 |
|||
Drop | 테이블 정의를 완전 삭제함, 테이블이 사용했던 모든 저장공간을 Release함 |
||
Truncate | 테이블을 초기상태로 만듦, 테이블 최초 형성시 사용했던 저장공간만 남기고 Release함 |
4. Rename : 이름 변경
5. Truncate : 테이블 초기화
DML : Data Manipulation Language
정의된 데이터베이스에 레코드를 입력, 수정, 삭제, 조회하기 위한 명령 언어
데이터 변형
Insert | Insert Into menu (menu_name) Values (‘연어'); |
Update | Update menu SET discount_rate =10 (where name =’연어'); |
Delete | Delete From menu (where name =’연어’); |
DML은 자동 commit 반영되지 않는다.
RollBack, Drop은 되돌릴 수 없다는 말은 ?? [SQL서버]기준 DDL =자동 commit
문제) DELETE에 관한 설명 중 틀린 것은?
1. 삭제된 데이터에 대해 로그를 남길 수 있는 방법이다.
ð Truncate(컬럼 남김)와 Drop(모두 삭제)은 로그(데이터)를 남기지 않는다.
2. 특정 행은 지울 수 없다.
ð Where문을 사용하여 특정 행을 지울 수 있다.
3. 삭제된 데이터를 다시 되돌릴 수 있다.
ð DB에 반영되기 전까지는 되돌릴 수 있다.
ð DDL인 Truncate 와 Drop은 불가능하다
4. 데이터는 삭제되지만 용량이 줄어들지 않는다.
데이터 조회
다음글에~
TCL
트랜잭션을 제어하기 위한 언어
트랜잭션 : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
COMMIT | 데이터에 대한 변화를 DB에 반영하기 위한 명령어 |
SAVEPOINT | 코드를 분할하기 위한 저장 포인트 지정 |
ROLLBACK | 트랜잭션이 시작되기 이전의 상태로 되돌리기 위한 언어, 최신 Commit이나 특수한 SavePoint로 되돌릴 수 있는 명령어 |
Commit과 RollBack 효과
1. 데이터 무결성을 보장할 수 있다.
2. 영구적인 변경 전 데이터에 대한 변동사항을 확인할 수 있다.
3. 논리적 연관성 있는 작업을 그룹화하여 처리할 수 있다.
l SAVEPOINT가 없을 경우 가장 최신의 COMMIT 상태로 복원된다.
'Oracle' 카테고리의 다른 글
Oracle 문제 풀이 리뷰) (0) | 2022.08.15 |
---|---|
Oracle Review : Join / 등가 조인 / 외부 조인 / 자가 조인 (0) | 2022.08.07 |
Oracle Review : 서브 쿼리 (0) | 2022.07.23 |
Oracle Review : Group By절 (0) | 2022.07.23 |
댓글