[SQLD] SQL 기본 및 활용
1. 관계형 DB
1-1. Database란?
- 데이터를 일정한 형태로 저장해 놓은 것으로, DBMS를 이용해여 효율적인 데이터 관리 및 데이터 손상 복구가 가능하다.
- 종류
- 계층형 DB: 트리 형태의 자료구조에 데이터 저장 / 1:N 관계 표현
- 네트워크형 DB: 오너와 멤버 형태로 데이터 저장 / M:N 관계 표현
- 관계형 DB: 릴레이션에 데이터 저장, 집합 연산 및 관계 연산 가능
2. 관계형 DB
- RDB(Relational Databse)
- 정규화를 통해 이상현상 및 중복 데이터 제거
- 동시성 관리와 병행 제어를 통해 데이터 동시 조작 가능
- 집합 연산
- 합집합(Union)
- 차집합(Difference)
- 교집합(Intersection)
- 곱집합(Cartesian Product) (각 릴레이션에 존재하는 모든 데이터를 조합)
- 관계 연산
- 선택 연산(Selection): 조건에 맞는 행 조회
- 투영 연산(Projection): 조건에 맞는 컬럼(속성) 조회
- 결합 연산(Join): 공통 속성을 사용하여 새로운 릴레이션 생성
- 나누기 연산(Division): 공통 요소를 추출하고 분모 릴레이션의 속성 삭제 후 중복된 행 제거
- 테이블은 RDB의 기본 단위로 데이터를 저장하는 객체이다. 칼럼과 행의 2차원 구조이다.
3. SQL 기본
3-1. SQL이란?
- Structured Query Language의 준말로, 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용하는 언어이다.
- 종류
- DML(Data Manipulation Language, 데이터 조작어)
- SELECT: 데이터 조회 명령어
- INSERT, UPDATE, DELETE: 데이터 변형 명령어
- DDL(Data definition Language, 데이터 정의어)
- 데이터 구조를 정의하는 데 사용되는 명령어
- CREATE, ALTER, DROP, RENAME
- DCL(Data Control Language, 데이터 제어어)
- DB 접근 권한 부여 및 회수
- GRANT, REVOKE
- TCL(Transaction Control Language, 트랜잭션 제어어)
- 논리적인 작업 단위별로 제어하는 명령어
- COMMIT, ROLLBACK
- DML(Data Manipulation Language, 데이터 조작어)
4. DDL
- 데이터 타입
- CHAR(L): 고정 길이 문자열, 할당된 변수 값의 길이가 L 이하일 때 차이는 공백으로 채워짐
- VARCHAR2(L), VARCHAR: 가변길이 문자열, 할당되는 변수 값의 길이의 최대값이 L
- NUMBER(L, D): 숫자형(L은 전체 자리 수, D는 소수점 자리 수)
- DATE, DATETIME: 날짜형, 데이터 크기 지정이 필요하지 않음
- CREATE TABLE
- 테이블 및 컬럼 명명 규칙
- 알파벳, 숫자, _(언더바), $(달러), # 사용
- 대소문자 구분 X
- 테이블명은 단수형 경고
- 제약 조건: 데이터 무결성 유지 / 복제 테이블에는 기존 테이블 제약조건 중 NOT NULL만 적용
- PRIMARY KEY: 테이블 당 하나의 기본키만 정의 가능 / 기본키 생성 시 DBMS가 자동으로 인덱스 생성 / NULL 불가
- FOREIGN KEY: 다른 테이블의 기본키를 외래키로 지정, 참조 무결성 제약 조건
- UNIQUE KEY: 행 데이터를 식별하기 위해 생성, NULL 가능
- DEFAULT KEY: DEFAULT 값으로 기본값 설정
- NOT NULL
- CHECK: 입력값의 종류 및 범위 제한
- 테이블 및 컬럼 명명 규칙
- ※ NULL이란?
- 아직 정의되지 않은 값, 혹은 현재 데이터를 입력하지 못하는 값
- NULL과의 수치연산은 NULL
- 비교 연산은 FALSE
>>> FOREIGN KEY 지정 시 SQL
ALTER TABLE 테이블명 ADD CONSTRAINT 컬럼명 FOREIGN KEY (컬럼명) REFERENCES 테이블명(컬럼명);
- ALTER TABLE
- 컬럼 추가(컬럼 위치 지정 불가, 마지막으로 추가됨)
ALTER TABLE 테이블명 ADD (컬럼명 데이터타입);
- 컬럼 삭제(삭제 후 복구 불가)
ALTER TABLE 테이블명 DROP COLUMN 컬럼명
- 컬럼 설정 변경
ALTER TABLE 테이블명 MODIFY (컬럼명 데이터타입 제약조건);
- 컬럼 설명 변경
- NULL만 있거나 행이 없는 경우에만 컬럼 크기 축소 가능
- NULL만 있을 때는 데이터 유형 변경 가능
- NULL이 없으면 NOT NULL 제약조건 추가 가능
- 기본값 변경 작업 이후 발생하는 데이터에 대해서만 기본값이 변경됨
- 컬럼명 변경
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명;
- 제약조건 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건;
- 제약조건 제거
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;
- 컬럼 추가(컬럼 위치 지정 불가, 마지막으로 추가됨)
- RENAME TABLE
- 테이블 이름 변경
RENAME 테이블명 TO 테이블명; or ALTER TABLE 테이블명 RENAME TO 테이블명
- 테이블 이름 변경
- DROP TABLE
- 테이블 자체 제거
DROP TABLE 테이블명;
- 테이블 자체 제거
- TRUNCATE TABLE
- 테이블 전체 데이터 삭제
TRUNCATE TABLE 테이블명;
- 테이블 전체 데이터 삭제