본문 바로가기

DB

SQLD 자격증 문제 풀이 정리 1-2

 

1. DCL(Data Control Language)

- 데이터 제어 언어(권한 주기)

- ROLE: 데이터베이스상에서 많은 사용자들에게 개별적으로 권한을 부여하고 관리하는 어려움을 해소하고자 다양한 권한을 하나의 그룹으로 묶어서 관리할 수 있도록 하는 논리적 권한 그룹

- ROLE의 생성은 CREATE ROLE 권한을 가진 유저가 할 수 있음

 

GRANT 권한 ON 테이블 TO 유저; // 권한 부여
REVOKE 권한 ON 테이블 FROM 유저; // 권한 회수

GRANT 옵션
WITH GRANT OPTION; // 권한 부여
WITH ADMIN OPTION; // 테이블에 대한 모든 권한 부여, 조상의 권한 회수는 자손과 관계 없음

 

 

2. DDL(Data Definition Language)

- 데이터 정의 언어(데이터 구조 정의)

 

1) create

create table 테이블명 (
    고객번호 varchar(10) primary key, // 기본키 지정(not null이 기본, unique한 값)
    이름 varchar(10), // 가변길이 문자열(실제 길이에 따라 크기가 변함)
    생년 number(4) default 9999, // 숫자형, 기본값 9999로 지정
    전화번호 char(16) not null, // 고정크기 문자열(할당 길이만큼 문자를 채움),  Null입력 불가
    첫방문일 date // 날짜형
);

 

⭐️ 테이블 생성 주의사항
1. 테이블명과 컬럼명은 반드시 문자로 시작
2. A-Z, a-z, 0-9, #, $,_ 만 사용 가능
3. 다른 테이블명과 중복 불가
4. 컬럼 뒤에 데이터 유형 지정 필수

⭐️ 컬럼명 생성
영문, 한글, 숫자, 모두 가능(시작은 문자로! 숫자로 시작하는 것은 불가)

 

 

2) alter(변경, 수정)

// 테이블명 변경
alter table 'menu' rename to 'spectial_menu';
rename table 'menu' to '이름'; // 다수 테이블명 동시에 변경 가능

// 컬럼명 변경
alter table 'menu' rename column 'price' to 'won'; 

// 컬럼 속성 변경
alter table 'menu' modify (이름 varchar(20) not null);

// 컬럼 추가
alter table 'menu' add (거주지역 varchar(10));

// 컬럼 삭제
alter table 'menu' drop column 이름;

// 제약조건 추가, 삭제
alter table 'menu' add constraint;
alter table 'menu' drop constraint;

 

3) drop(삭제)

// 컬럼 삭제
alter table menu drop colunn 이름;

// 테이블 삭제
drop table menu // 테이블의 데이터와 구조 모두 삭제
truncate table menu // 테이블의 데이터만 삭제, 구조는 존재 -> 데이터를 비우는 초기화 상태라고 생각하면 됨


// 테이블 삭제, 오라클에만 해당하는 옵션, 해당 테이블의 데이터를 외래키로 참조한 제약사항도 삭제(제약조건과 참조테이블 삭제 후 해당 테이블 삭제)
drop table menu cascade constraint;

 

4) truncate(테이블 초기화)

 

 

3. DML(Data Manipulation Language)

- 데이터 조작 언어(데이터 조회, 입력, 수정, 삭제)

 

1) select

// 조회 문장 구조
select 컬럼명 등
from 테이블명
where 조건문
group by 집계 기준 컬럼명
having 그룹핑 후 상태 기반의 조건문
order by 컬럼명

distinct: 중복 제거하고 조회 (Null도 단일 행으로 보고 카운트 센다.)

count: 개수 구하기 

 

Q. 아래 테이블의 행의 수 구하기 (테이블명: member)

 

// count(*)경우, null을 포함하여 5 반환
select count(*) from member

// count(컬럼명)의 경우, 성별 컬럼 null 제외하고 4 반환
select count(성별) From member

// count(distinct 컬럼명)의 경우, 중복제거, null 포함 3 반환
selecct count(distinct 성별) from member

 

 

문법 설명 예시
DECODE(값1, 값2, 참, 거짓) If문과 비슷
(3항 연산자랑 비슷)
DECODE(값1, KATE, ' 본인', '다른사람')
CASE WHEN 조건 THEN 참 ELSE 거짓 END 길어진 if문(?)

CASE WHEN col1 , 10 THEN '한자리수'
WHEN col1 BETWEEN 10 AND 99 THEN '두자리 수'
 ELSE '세자리수' 

 

 

2) insert

insert into 'menu' (name) values('연어스시');

3) update

update 'menu' set discount_rate = 10 (where name = '연어스시');

4)delete

delete from 'menu' (where name = '연어스시');
delete menu // 조건없어도 가능

ch) delete vs drop vs truncate

  delete drop truncate
로그를 남긴다 O X X
특정 행 지우기 O    
삭제 데이터 되돌리기(commit전) O X X
데이터 삭제 시 용량 감소 X    

4. TCL(Transaction Control Language): 트랜잭션 제어 언어

1) commit: 데이터에 대한 변화를 DB에 반영

2) rollback: 트랜잭션이 시작되기 이전 상태로 돌림, 최신 commit이나 특수한 savepoint로 되돌림

3) savepoint: 코드를 분할하기 위한 저장 포인트 지정(위치 지정)

⭐️ commit, rollback 효과
1. 데이터 무결성 보장
2. 영구적인 변경 전 데이터에 대한 변동사항을 확인할 수 있음
3. 논리적 연관성 있는 작업을 그룹화하여 처리

5.  트랜잭션의 특징

1) 원자성(A): All or Nothing, 트랜잭션에서 정의된 연산은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 있어야 한다.

2) 일관성(C): 트랜잭션 발생 전 데이터베이스 내용에 잘못된 점이 없다면 트랜잭션 수행 후에도 데이터베이스의 내용에 잘못이 있으면 안된다.

3) 고립성(I): 트랜잭션이 실행되는 동안 다른 트랜잭션에 영향을 받아 잘못된 결과를 만들어선 안된다.

4) 지속성(D): 트랜잭션이 성공적으로 완료되면 해당 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

 

 

 

https://www.youtube.com/watch?v=8uP_E6SyiuM&t=1917s 

 

'DB' 카테고리의 다른 글

SQLD 자격증 문제 풀이 정리 5-6  (0) 2022.11.01
SQLD 자격증 문제 풀이 정리 3-4  (2) 2022.11.01
데이터 모델과 성능  (0) 2022.10.27
데이터 모델링의 이해  (0) 2022.10.26
엑셀보다 쉬운 SQL 4주차 강의  (0) 2022.10.26