•
SQL(Structured Query Language)
◦
DDL (데이터 정의어): ALTER, CREATE, DROP
◦
DML (데이터 조작어): SELECT, INSERT, UPDATE, DELETE
◦
DCL (데이터 제어어[TCL]): GRANT, REVOKE, COMMIT, ROLLBACK
•
RDBMS(관계형 데이터베이스)
: MySQL, OracleDB, MSSQL, MariaDB, PostgreSQL, DB2
•
RDBMS 특징
◦
고정된 행과 열로 구성되어 정형적인 데이터 처리가 편함
◦
데이터의 무결성과 일관성을 보장
◦
복잡한 관계 표현에 적합 (외래키를 통한 조인)
◦
SQL문 사용
•
SQL에서 테이블의 모든 데이터를 조회하기
◦
SELECT * FROM 테이블명;
•
SQL에서 특정 열(job)의 중복된 값을 제거하기 위해서는
◦
SELECT DISTINCT job FROM 테이블명;
•
특정 조건을 만족하는 데이터만 조회하기 위해서는
◦
WHERE 절 사용
•
WHERE 절에서 조건을 만족하는 첫번째 행만 조회하기 위해서는
◦
LIMIT
•
LIKE 연산자 사용할 때, 와일드카드로 단일 문자를 대체하는 것
◦
_
•
서브쿼리
◦
동일한 테이블에 대한 SELECT문과 DELETE 명령어는 동시에 수행될 수 없다.
▪
데이터의 일관성을 지킬 수 없으니, 제약 조건에 위배됨
•
두 개 이상의 조건을 모두 만족하는 데이터 조회 시 사용되는 논리 연산자
◦
AND
→ SELECT user.userId, SUM(age) 나이합계
WHERE 나이합계 > 10
GROUP BY u.userId
•
문자열을 결합하는 함수는…?
◦
CONCAT
•
서브쿼리란..?
◦
서브쿼리는 메인쿼리와 서브쿼리로 구성된다.
◦
서브쿼리는 괄호로 묶어서 사용한다.
◦
서브쿼리의 안에서는 ORDER BY 사용 불가능하다.
◦
SELECT 절에서 사용되는 서브쿼리는 서브쿼리가 먼저 수행된 후에, 그 결과가 메인쿼리에서 이용된다.
◦
서브쿼리 결과가 다중 행인 경우에는 ANY, ALL, IN, 비교 연산자 사용이 가능하다.
▪
다중 행인 경우 다중행 연산자(ANY, ALL, IN) 사용이 가능하다.
•
JOIN 연산
◦
INNER JOIN
▪
두 테이블의 모든 행 교차? ⇒ x
▪
한 테이블의 데이터가 있어도 결과가 안 나온다.
▪
조인 조건에 만족하는 행만 반환한다.
◦
FULL JOIN
◦
CROSS JOIN
◦
OUTER JOIN
•
제약조건
◦
Primary Key (기본키) 열에 대해서는 자동으로 인덱스가 생성된다.
•
NULL이 아닌 정보를 조회하려면…?
◦
IS NOT NULL
•
실행 순서
◦
FROM → WHERE → SELECT → ORDER BY
•
HAVING 절 언제 사용?
◦
GROUP BY 결과의 “조건”을 적용하기 위해서!
•
테이블의 구조와 속성을 조회하는 명령어
◦
desc
•
TABLE
◦
SELECT AVG(IFNULL(score, 0)) AS 평균 FROM score;
•
CASE 문
◦
CASE 문은 여러 개의 WHEN 절을 가질 수 있다.
•
데이터베이스의 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 4가지 성질
◦
ACID
▪
A(Atomicity) - 원자성
•
트랜잭션은 모두 실행되거나 실행되지 않음(두 가지 상태)
▪
C (Consistency) - 일관성
•
트랜잭션 전후에 데이터는 일관되어야 한다.
▪
I (Isolation) - 격리성
•
트랜잭션은 독립적이라 하나의 트랜잭션 실행 중 다른 트랜잭션에서
수행 결과를 참조할 수 없다.
▪
D (Durability) - 영속성
•
결과가 시스템이 정상인 경우에만 저장되고, 비정상일 경우 롤백하는 것을 말한다.
•
데이터베이스 모델링 설계 3단계
◦
개념적 설계
◦
논리적 설계
◦
물리적 설계
•
정규화
◦
“이상현상" 이 있는 릴레이션(테이블) 분리하여 이상현상을 제거하는 작업
◦
제1정규화 : 테이블 컬럼의 값들이 “원자값” (하나의 값만 갖도록)
◦
제2정규화 : 제1정규화 만족 + 완전 함수 종속을 만족하도록 테이블을 분리
◦
제3정규화 : 제2정규화 + 모든 결정자가 후보키 집합에 속해 있도록 테이블을 분리