관계형 데이터 베이스 (Relational Database)
- 정규화 이론에 근거한 합리적인 데이터 모델링을 통해 데이터 이상현상 및 불필요한 데이터 중복 현상을 피할 수 있다
동시성 관리 및 병행 제어 -> 많은 사용자들이 동시에 데이터를 공유 및 조작할 수 있는 기능 제공
메타 데이터 총괄 관리 -> 데이터의 성격, 속성, 표현방법 체계화 / 데이터 표준화를 통한 데이터 품질을 확보
데이터 무결성을 보장 -> 중요 데이터 삭제 방지
데이터 회복 / 복구 기능 제공
SQL (Structured Query Language)
- 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어
데이터 조작어 DML
- SELECT : 데이터베이스 내 데이터를 조회하거나 검색
- INSERT : 데이터 삽입
- UPDATE : 데이터 수정
- DELETE : 데이터 삭제
데이터 정의어 DDL
- CREATE : 테이블이나 인덱스, 뷰등을 생성
- ALTER : 테이블이나 인덱스, 뷰등의 구조 변경
- DROP : 테이블이나 인덱스, 뷰 등의 구조 삭제
- RENAME : 테이블이나 인덱스, 뷰등의 이름 변경
- TRUNCATE : 테이블이나 인덱스,뷰 내 값들을 모두 지움 -> 자체가 사라지지는 않음
데이터 제어어 DCL
- GRANT : 권한 부여
- REVOKE : 권한 회수
트랜잭션 제어어 TCL
- COMMIT : 트랜잭션 완료
- ROLLBACK : 트랜잭션 취소
테이블 : 칼럼과 행의 2차원 구조를 가진 데이터 저장소
칼럼 : 테이블에서 세로방향의 하나하나 속성
행 : 테이블에서 가로방향으로 이루어진 데이터
정규화 : 테이블을 분할하여 데이터의 정합성을 확보하고, 불필요한 중복을 최소화
기본키 : 테이블에 존재하는 각 행을 한가지 의미로 특정할 수 있는 1개 이상의 칼럼
외래키 : 다른 테이블의 기본키를 참조하는 칼럼
ERD : ENTITY RELATIONSHIP DIAGRAM
ENTITY : 개체(엔터티)
RELATIONSHIP : 관계
ATTRIBUTE : 속성
(개념적 데이터 모델링)
주요 데이터 형
1) CHAR(L) : 고정길이 문자열 , 저장된 값이 L보다 작을 경우 그만큼 공백으로 채워짐
2) VARCHAR2(L) : 가변길이 문자열, L만큼 최대길이, L보다 작을 경우 입력 값만큼만 차지 , 공백도 문자로 취급
3) NUMBER(L,D) : 정수 및 실수를 저장 L : 전체 자릿수, D: 소수점 자릿수
4) DATE : 날짜 시각정보 저장 , 년월일시분초
제약 사항
1) 기본키 : 테이블에 저장된 행들 중 특정 행을 고유하게 식별 하는 키 / 한 테이블에는 하나의 기본키만 / 유일 인덱스 자동 생성 / NULL 입력 불가 / UNIQUE + NOT NULL
2) 고유키 : 테이블에 저장된 행들 중 특정 행을 고유하게 식별 하는 키 / NULL 입력 가능 / UNIQUE + NULL
3) NOT NULL : NULL 값 허용 안함 / 필수 값 칼럼
4) CHECK : 입력할 수 있는 값의 종류 혹은 범위 제한
5) 외래키 : 다른 테이블의 기본키를 참조하는 칼럼 / 참조 무결성 제약조건
6) 기본값, 디폴트 값 : 해당 칼럼에 아무 값도 안넣었을때 나오는 값
CREATE TABLE
- 테이블을 생성
주의) 테이블명은 단수형 / 테이블명은 특정 사용자가 사용하는 다른 테이블명과 겹치면 안됨 / 한 테이블 내 동일한 칼럼명 존재 불가 / 생성문 끝은 ;으로 끝남 / 칼럼의 데이터 형은 반드시 지정 / 테이블명과 칼럼명은 반드시 문자로 시작 / A-Z a-z 0-9 _ $ #만 사용 가능
CREATE TABLE TT
(
TEST VARCHAR2(10) NOT NULL // NOT NULL -> NULL값 허용 안함
TESTCASE VARCHAR2(20) NOT NULL
);
ALTER TABLE
- 테이블 구조 변경
1) 칼럼 추가
ALTER TABLE TT ADD (TESTTEST CHAR(2)); // TT 테이블에 TESTTEST라는 칼럼 추가
2) 칼럼 제거
ALTER TABLE TT DROP COLUMN TESTTEST; // TT테이블에서 TESTTEST 칼럼 제거
3) 데이터형 및 제약조건 변경
ALTER TABLE TT ADD(TESTTEST CHAR(2) NULL); // TT테이블에 TESTTEST라는 CHAR형 칼럼 생성, NULL값 허용
ALTER TABLE TT MODIFY( TESTTEST NUMBER(1) DEFAULT 0 NOT NULL NOVALIDATE);
// TESTTEST 칼럼을 NUMBER 자료형으로 변경, 디폴트 값 0 , NULL값 허용 안함, NOVALIDATE => MODIFY하려는 칼럼의 값 중에 만약 NULL값이 있어도 NOT NULL을 줄 수 있다.
4) 칼럼명 변경
ALTER TABLE TT RENAME COLUMN TESTTEST TO TEST; // TT테이블 안에 TESTTEST라는 칼럼을 TEST로 이름 변경
5) 외래키 생성
ALTER TABLE TT ADD CONSTRAINT FK_TEST // TT 테이블에 참조 무결성 제약 조건 생성
FOREIGN KEY (TESTTEST) REFRENCES NN (NESTNEST); // TT테이블의 TESTTEST는 NN테이블의 NESTNEST 칼럼을 참조
6) 외래키 제거
ALTER TABLE TT DROP CONSTRAINT FK_TEST; //TT 테이블에 외래키 제거
DROP TABLE
- 테이블 삭제
DROP TT; //TT테이블 삭제
RENAME TABLE
- 테이블 이름 변경
RENAME TT TO NN; //TT테이블을 NN으로 이름 변경
TRUNCATE TABLE
- 테이블 내 데이터 삭제
TRUNCATE TT; // TT테이블 내 데이터 삭제
INSERT 문
- 테이블에 데이터를 신규로 입력
INSERT INTO TT A(A.a,A.b,A.c) VALUES ('1','2','3')
COMMIT; // DB에 최종적으로 적용
UPDATE문
- 테이블 내 행의 칼럼 값 수정
UPDATE TT A SET A.a = '100', A.b = '20' WHERE A.c = '3' ;
COMMIT;
DELETE문
- 테이블 내 행의 칼럼 값 제거
DELETE FROM TT A WHERE A.a = '100' ;
COMMIT;
SELECT문
- 테이블에서 데이터를 조회
SELECT A.a , A.b , A.c FROM TT A WHERE A.a = '100';
DISTINCT : 중복된 행이 제거되어 유일한 값을 가진 행만 출력
SELECT DISTINCT A.a FROM TT A;
ALIAS (앨리어스) : 별칭을 지정
SELECT A.create AS C
FROM TT A
WHERE A.a = '100';
합성 연산자 ( | | )
- 여러개의 칼럼을 합쳐서 하나의 칼럼 값으로 출력
SELECT A.a || A.B || A.C AS TOTAL
FROM TT A;
DUAL 테이블
- 오라클 DB 기본 테이블
- 단 1건의 데이터만 저장이 되어있음
- 칼럼은 DUMMY 단 1개
- 저장되어있는 칼럼값은 X
SELECT ( (1+1) * 3) / 6 AS "연산결과 값"
FROM DUAL;
연산결과 1이 DUAL의 DUMMY 칼럼을 통해서 나온다.
트랜잭션 특징 ACID
1) 원자성(Atomicity) : 트랜잭션의 연산들은 모두 성공하거나 모두 실패해야한다. (All or Nothing)
2) 일관성(Consistency) : 트랜잭션이 실행되기 전 DB의 내용이 잘못되지 않았으면, 실행 후에도 잘못되지 않아야 한다.
3) 고립성(Isloation) : 트랜잭션이 실행되는 도중 다른 트랜잭션의 영향을 받아선 안된다.
4) 지속성(Durability) : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.
COMMIT : 커밋 -> DB에 최종적으로 저장하며 트랜잭션을 완료
ROLLBACK : 롤백 -> 트랜잭션을 취소
커밋/ 롤백 전
- 최종 적용 상태가 아니고, 메모리에만 적용된 상태이므로 변경 이전으로 복구 가능
- 사용자 외에 다른 사용자는 입력 수정 삭제 결과확인 x
- 락이 형성되어 다른 사용자가 변경 못함
커밋/롤백 후
- DB에 완전 반영 -> 이전 데이터는 유실
- 모든 사용자가 행들을 조작
- 모든 사용자가 입력 수정 삭제 결과를 확인 가능
SAVEPOINT
= 롤백 시 되돌아가는 지점을 정해주는 것
ROLLBACK TO SVPT3;
트랜잭션의 요점
- 커밋 : 변경된 데이터를 테이블에 영구 반영하라
- 롤백 : 변경 전으로 복구하라
- SAVEPOINT : 데이터 변경 사항의 취소를 지정한 지점까지만 취소하라
커밋/롤백과는 상관없이 트랜잭션이 적용 처리되는 상황
1) DDL 실행 시, 실행전과 실행 후 시점에 자동 COMMIT
2) DML 실행 후, COMMIT을 하지 않고 DDL을 실행 시 -> DDL 실행 전에 DML 변경사항이 COMMIT
3) DB에 접속 종료 시, 이전 DML 변경 내용을 COMMIT
4) 애플리케이션 동작 오류 -> 접속 단절 시 데이터의 변경 사항이 자동으로 ROLLBACK
CF) DML문은 COMMIT을 써줘야 반영이 된다.
SELECT-WHERE절
: SELECT문의 조건을 거는 부분
연산자의 종류
1) 비교 연산자
= 같다
> ~보다 크다
>= ~보다 크거나 같다
< ~보다 작다
<= ~보다 작거나 같다
2) SQL 연산자
BETWEEN A AND B : A와 B 사이에 있으면 된다
IN (리스트) : 리스트에 있는 값 중 하나라도 있으면 된다
LIKE '비교문자열' : 비교문자열의 형태와 일치하면 된다 (와일드 카드)
IS NULL : NULL이면 된다
IS NOT NULL : NULL이 아니면 된다
와일드 카드
% : 0개 이상의 어떤 문자
_ : 1개의 단일 문자
3) 논리 연산자
AND : 앞 조건, 뒤 조건 모두 참
OR : 앞 조건, 뒤조건 중 하나라도 참
NOT : 조건이 거짓이어야 참
4) 부정 비교 연산자
!= 같지 않다
<> 같지 않다
^= 같지 않다
NOT 칼럼명 = ~칼럼 값이 ~와 같지 않다
NOT 칼럼명 > ~칼럼 값이 ~보다 크지 않다
NOT 칼럼명 < ~칼럼 값이 ~보다 작지 않다
5) 부정 SQL 연산자
NOT BETWEEN A AND B : A와 B 값 사이에 있지 않다
NOT IN(LIST) : 같지 않다
IS NOT NULL : NULL이 아니다
'자격증 > SQLD' 카테고리의 다른 글
4장 SQL 기본2 (0) | 2023.03.19 |
---|---|
2장 데이터 모델과 성능 (2) | 2023.03.19 |
1장 데이터 모델링의 이해 (0) | 2023.03.18 |