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 |