RDBMS
•
관계형(Relational) 데이터베이스 시스템
•
테이블 기반(Table based)의 DBMS
◦
데이터를 하나의 단위로 관리
>> 하나의 테이블은 여러 개의 컬럼(Column)으로 구성
◦
중복 데이터를 최소화 시킴
>> 같은 데이터가 여러 컬럼 또는 테이블에 존재 했을 경우,
데이터를 수정 시 문제가 발생할 가능성이 높아짐 - 정규화
◦
여러 테이블에 분산되어 있는 데이터를 검색 시 테이블 간의 관계(join)를 이용하여 필요한
데이터를 검색
SQL(Structured Query Language)
•
Database에 있는 정보를 사용할 수 있도록 지원하는 언어
•
모든 DBMS에서 사용 가능
•
대소문자는 구별하지 않음(단, 데이터의 대소문자는 구분)
SQL의 종류 - DDL(Data Definition Language)
•
데이터 정의어
◦
데이터베이스 객체(table, view, index,,,)의 구조를 정의
◦
테이블 생성, 컬럼 추가, 타입 변경, 제약조건 지정, 수정 등
SQL의 종류 - DML(Data Manipulation Language)
•
데이터 조작어
◦
데이터 조작기능
◦
테이블의 레코드를 CRUD(Create, Retrieve, Update, Delete)
SQL의 종류 - DCL(Data Control Language)
•
데이터 제어어
◦
DB, Table의 접근권한이나 CRUD 권한을 정의
◦
특정 사용자에게 테이블의 검색권한 부여/금지 등
SQL의 종류 - TCL(Transaction Control Language)
•
트랜잭션 제어어
◦
transaction이란 데이터베이스의 논리적 연산 단위
DDL
•
데이터베이스 생성, 변경, 삭제, 사용
// 생성
create database dbtest
default character set utf8mb collate utf8mb4_general_ci;
// 변경
alter database dbtest
default character set utf8mb collate utf8mb4_general_ci;
//삭제
drop database dbtest
//사용
use dbtest;
SQL
복사
Data Type
•
CHAR[(M)]
◦
고정 길이를 갖는 문자열을 저장
◦
M은 1 ~ 255
◦
CHAR(20)인 컬럼에 10자만 저장을 하더라도, 20의 기억장소를 차지함
•
VARCHAR[(M)]
◦
가변 길이를 갖는 문자열을 저장
◦
M은 1 ~ 65535
◦
VARCHAR(20)인 컬럼에 10자만 저장을 하면, 실제로도 10자 만큼의 기억장소를 차지
•
INT[(M)]
◦
4 byte 크기
◦
signed, unsigned
•
DATETIME
◦
locale을 적용하지 않음
◦
ex) 한국에서 10시로 저장하면, 미국에서도 10시로 나옴
•
TIMESTAMP[(M)}]
◦
locale 기준으로 시각을 맞춰서 저장함
◦
ex) 한국에서 10시 설정하면 미국에선 시차 적용해서 8시로 보이는
Table의 생성
create table table_name(
column_name1 Type [optional attributes],
column_name2 Type,
);
SQL
복사
•
Optional attributes
◦
데이터의 추가적인 속성을 부여
◦
AUTO INCREMENT와 같이 기능을 가지거나, PRIMARY KEY처럼 제약 조건을 가질 수 있다
•
제약 조건
◦
컬럼에 저장될 데이터의 조건을 설정하는 것
◦
제약조건을 설정하면 조건에 위배되는 데이터는 저장 불가
◦
테이블 생성 시 컬럼에 직접 지정하거나 contstraint로 지정, 또는 ALTER를 이용하여 설정 가능
Data Manipulation Language (DML) : SELECT
•
기본 SELECT
// 모든 사원의 모든 정보 검색
select * from employees;
// 사원이 근무하는 부서의 부서번호 검색
select all department_id from employees
// 회사에 존재하는 모든 부서
select department_id from departments
// 모든 사원의 사번, 이름, 급여 검색
select employee_id, first_name, salary from employees;
SQL
복사
•
alias, 사칙연산 (+, -, *, /), NULL Value
SQL
복사
•
Case when
SQL
복사
•
규칙
◦
MySQL은 Data와 Alias에서 '' 와 ""를 구분하지 않지만, Oracle 등 다른 DB는 구분을 한다. 그래서 Data는 '', Alias는 ""를 사용하는 습관을 들이는게 좋다.
SELECT - Where
•
WHERE clause : 조건에 만족하는 행을 검색
•
실행순서 : from → where → select
•
AND, OR, NOT
•
논리 연산 시 주의점 : NULL
Transaction
•
트랜잭션 : 데이터베이스의 상태를 변화시키는 일종의 작업 단위를 의미
•
트랜잭션 도구