SSAFY
[DB] RDBMS, Query 실행 순서
hellosonic
2024. 9. 18. 12:02
✅ RDBMS
- 데이터를 테이블 단위로 관리 : 하나의 테이블은 여러 개의 컬럼으로 구성
- 중복 데이터를 최소화 시킴
- 정규화 : 같은 데이터가 여러 컬럼 또는 테이블에 존재했을 경우, 데이터를 수정 시 문제가 발생할 가능성이 높아짐
- 여러 테이블에 분산되어 있는 데이터를 검색 시 테이블 간의 관계(join)을 이용하여 필요한 데이터를 검색
✅ SQL
📌 DDL (데이터 정의어)
- 테이블 생성, 컬럼 추가, 타입변경, 제약조건 지정, 수정 등
- create, alter, drop, rename, truncate(테이블 초기화)
📌 DML (데이터 조작어)
- CRUD
- insert, select, update, delete
📌 DCL (데이터 제어어)
- DB, Table의 접근 권한이나 CRUD 권한을 정의
- 특정 사용자에게 테이블의 검색 권한 부여/금지 등
- grant(DB에 권한을 부여), revoke(DB 권한 취소)
📌 TCL (트랜잭션 제어어)
- 트랜잭션이란 데이터베이스의 논리적 연산 단위
- commit(실행한 Query를 최종적으로 적용), rollback(실행한 Query를 마지막 commit 전으로 취소시켜 데이터 복구)
✅ DDL
📌 데이터베이스 생성
- Character_set : 각 문자가 컴퓨터에 저장될 때 어떠한 코드로 저장될지에 대한 규칙의 집합
- Collation : 특정 문자 셋에 의해 데이터베이스에 저장된 값들을 비교 검색하거나 정렬 등 작업을 위해 문자들을 서로 비교할때 사용하는 규칙들의 집합
-- 다국어 처리(utf8mb3)
create database dbtest
default character set utf8mb3 collate utf8mb3_general_ci;
-- 이모지 문자까지 처리
create database dbtest
default character set utf8mb4 collate utf8mb4_general_ci;
📌 데이터베이스 변경
alter database database_name
default charater utf8mb4
collate utf8mb4_general_ci;
-- character_set 확인
show character set;
📌 데이터베이스 삭제
drop database database_name;
📌 데이터베이스 사용
use database_name;
✅ DML
📌 SELECT
select distinct department_id from employees;
📌 CASE ~ WHEN ~ THEN
select salary
case
when salary > 15000 then '고액연봉'
when salary > 8000 then '평균연봉'
else '저액연봉'
end "연봉등급"
from employees;
📌 NULL 비교
-- 검색 x
select employee_id, first_name, salary
from employees
where department_id = null;
where department_id is null;
where department_id is not null;
📌 LIKE
-- 이름에 x 포함
select employee_id, first_name
from employees
where first_name like "%x%";
-- 이름의 끝에서 3번째 자리
select employee_id, first_name
from employees
where first_name like "%x__";
📌 LIMIT
- limit 개수 [offset 시작인덱스]
- limit 시작인덱스, 개수
✅ DML
📌 INSERT
insert into ssafy_members (userid, username, userpwd)
values ('kimssafy', '김싸피', '1234');
📌 UPDATE
update ssafy_members
set userpwd = 9876, emaildomain = 'ssafy.co.kr'
where userid = 'kimssafy';
-- where 절을 작성 안하면 모든 데이터가 바뀐다.
📌 DELETE
delete from ssafy_members
where userid = 'kimssafy';
-- where 절이 없으면 모든 데이터 삭제
✅ Transaction
- insert, update, delete 등 DML의 경우 변경 데이터가 물리적 하드디스크에 바로 반영되지 않음
- commit 전까지는 메모리에서만 작업
-- MySQL
-- AUTOCOMMIT 확인
select @@AUTOCOMMIT;
set AUTOCOMMIT = 1; -- 설정
set AUTOCOMMIT = 0; -- 해제