- 관계형 데이터베이스
*데이터베이스의 종류 - 계층형(tree형태 1:N, 부모자식관계표현 쉬움), 네트워크형(Owner-Member형태로 저장 1:N, N:M), 관계형(relation에 저장관리)
- 관계형 데이터베이스 연산 - 집합연산, 관계연산
집합연산 - 합집합, 차집합, 교집합, 곱집합
관계연산 - 선택연산(행(tuple) 조회), 투영연산(조건에 맞는 열(attribute) 조회), 결합연산(join), 나누기연산(중복된 행제거)
테이블 구조 - PK, Row(Tuple), Column(Attribute), FK(타 테이블 PK참조 - join연산 사용)
- SQL종류
DDL - 데이터베이스 구조 정의( CREATE, ALTER, DROP, RENAME )
DML - 데이터 관리( INSERT, UPDATE, DELETE, SELECT )
DCL - 권한 부여, 회수( GRANT, REVOKE, TRUMCAT )
TCL - 트랜잭션 제어( COMMIT, ROLLBACK, SAVEPOINT)
* 순서 - DCL로 권한주고 DDL로 구조 정의하고 DML로 데이터 관리
- 트랜잭션 - 데이터베이스의 작업을 처리하는 단위 ACID(Atomicity, Consistency, Isolation, Durability)
원자성 - 완전히 실행 혹은 전혀 실행X => 실행 끝나지 않으면 처음과 같아야 함
일관성 - 실행전과 후에도 일관성이 유지되어야 함
고립성 - 실행중에 접근 할 수 없음
영속성 - 트랜잭션 성공시 결과 영구적
- SQL 실행순서 - Parsing, Execution, Fetch
Parsing - 문법확인 구문분석( 구문분석한 문장은 Library Cache에 저장)
Execution - Optimizer가 SQL실행
Fetch - 데이터 전송
- DDL
- 테이블
생성 - CREATE TABLE [TABLE_NAME]
constraint를 사용해서 기본키의 이름 설정( contraint pk_name primary key (column_name) )
외래키 지정하기 전에 해당 테이블 먼저 생성( foreign key(column_name) reference [table_name] (column_name) )
* CASECADE - 참조관계가 있을 경우 참조되는 데이터 자동 반영
ON DELETE CASECADE(삭제되면 같이 삭제)
변경 - ALTER TABLE [TABLE_NAME] RENAME TO [NEW_NAME] - 테이블 이름변경
ALTER TABLE [TABLE_NAME] ADD ( ... ) - 칼럼추가
ALTER TABLE [TABLE_NAME] MODIFY ( ... ) - 칼럼변경( 데이터 타입, 데이터 길이, 제약조건, 기존 데이터타입이 변경타입과 일치하지 않으면 에러발생 )
ALTER TABLE [TABLE_NAME] DROP COLUMN [COLUMN_NAME] - 칼럼 삭제
ALTER TABLE [TABLE_NAME] RENAME COLUMN [COLUMN_NAME] TO [NEW_NAME] - 칼럼 이름 변경
삭제 - DROP TABLE [TABLE_NAME] - CASECADE CONSTRAINT 사용시 외래키로 참조한 테이블 관련된 제약사항 제거
- 뷰 - 테이블로부터 유도된 가상의 테이블
*참조한 테이블 변경시 같이 변경, 원하는 칼럼만 조회-> 보안성향상, 변경불가, 삽입 수정 삭제 제약, 데이터구조 변경X
생성 - CREATE VIEW
삭제 - DROP VIEW
- DML
- INSERT INTO [TABLE_NAME] (column...) VALUES (expression....)
모든 칼럼에 입력시 칼럼명 생략가능
마지막으로 Commit을 실행해서 최종적으로 데이터 저장 ( Auto Commit사용시 자동으로 설정)
SELECT 문으로도 입력가능
INSERT INTO [TABLE1] SELECT * FROM [TABLE2];
- UPDATE [TABLE_NAME] SET COLUMN="VALUE" (WHERE절 사용해서 조건 걸 수 있음)
- DELETE FROM [TABLE_NAME] (WHERE절 사용해서 조건 걸 수 있음)
삭제를 한다해도 테이블의 용량이 초기화 되지 않음
전체 삭제해도 테이블은 남아 있음
*테이블 데이터 전체 삭제
DELETE FROM TABLE vs TRUNCATE TABLE TABLE
데이터 삭제 용량 남음 데이터 삭제 용량도 초기화
- SELECT ~FROM ~WHERE
검색시 ORDER BY를 사용해서 정렬 할수 있음( ASC - Default 값, DESC ) - 출력 직전에 정렬
DISTINCT - 중복된 데이터를 한번만 조회
ALIAS - 테이블명이나 칼럼명을 간략히 할때 사용 ( TABLE_NAME AS TN )
'자격증 > SQLD' 카테고리의 다른 글
SQLD(4)-SQL활용1 (0) | 2021.08.13 |
---|---|
SQLD(3)-SQL기본3 (0) | 2021.08.12 |
SQLD(2)-SQL기본2 (0) | 2021.08.12 |
SQLD(2)-데이터 모델과 성능 (0) | 2021.08.10 |
SQLD(1)-데이터 모델링 (0) | 2021.08.09 |