📌 Study
🔸 2022-10-06
[SQL 활용]
1. 데이터베이스 기본
- DDL 명령어
CREATE
: 데이터베이스 오브젝트 생성하는 명령어
ALTER
: 데이터베이스 오브젝트 변경하는 명령어
DROP
: 데이터베이스 오브젝트 삭제하는 명령어
TRUNCATE
: 데이터베이스 오브젝트 내용 삭제하는 명령어
CREATE TABLE 테이블명
(
컬럼명 데이터타입 PRIMARY KEY, -- 기본키 설정
컬럼명 데이터타입 FOREIGN KEY REFERENCES 참조테이블(기본키),
컬럼명 데이터타입 UNIQUE,
컬럼명 데이터타입 NOT NULL,
컬럼명 데이터타입 CHECK(조건식), -- 제약조건 설정
컬럼명 데이터타입 DEFAULT 값
);
ALTER TABLE 테이블명
ADD 컬럼명 데이터 타입;
MODIFY 컬럼명 데이터타입 [DEFAULT][NOT NULL];
DROP 컬럼명;
RENAME COLUMN 변경전 컬럼명 TO 변경후 컬럼명;
DROP TABLE 테이블명 [CASCADE / RESTRICT]; // 참조까지 모두 삭제 / 참조 중이면 삭제 불가
TRUNCATE TABLE 테이블명; // 테이블 내 데이터들 삭제
- VIEW 관련 DDL
- CREATE VIEW : 뷰 생성하는 명령
CREATE VIEW 뷰이름 AS
조회쿼리;
CREATE VIEW 뷰이름 AS
SELECT 사번, 이름
FROM 사원
WHEW 성별 = 'M';
- CREATE OR REPLACE VIEW : 뷰 교체하는 명령
CREATE OR REPLACE 뷰이름 AS
조회쿼리;
DROP VIEW 뷰이름;
- INDEX 관련 DLL
- CREATE INDEX : 인덱스 생성하는 명령
CREATE INDEX 인덱스명 ON 테이블명(컬럼명);
CREATE INDEX 사번인덱스 ON 사원(사번);
- ALTER INDEX : 인덱스 수정하는 명령
ALTER INDEX 사번인덱스 ON 사원(사번);
DROP INDEX 사번인덱스;
DML(데이터 조작어)
: 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
- DML 명령어
SELECT
: 테이블 내 칼럼에 저장된 데이터 조회
INSERT
: 테이블 내 칼럼에 데이터 추가
DELETE
: 테이블 내 칼럼에 저장된 데이터 삭제
UPDATE
: 테이블 내 칼럼에 저장된 데이터 수정
- SELECT 명령문
SELECT 절
- ALL : 모든 튜플 검색, SELECT 뒤에 명시하지 않은 경우 ALL로 인식
- DISTINCT : 중복된 속성일 경우 그 중 한개만 검색
FROM 절
: 테이블 명 기술
WHERE 절
: 검색할 조건 기술
GROUP BY 절
: 속성값을 그룹으로 분류
HAVING 절
: 그룹에 대한 조건 지정
ORDER BY 절
: 속성값 정렬
- ASC : 오름차순 정렬
- DESC : 내림차순 정렬
SELECT DINSTINCT 과목
FROM 성적;
- WHERE 조건
- [상수] :
WHERE 부서번호 = 90;
- [문자열] :
WHERE 이름 = 'Daehun'
- [날짜] :
WHERE 입사일 = '06-OCT-22';
- 비교
=
( 값이 같은 경우)
<>
, !=
(값이 다른 경우)
<
, <=
, >
, >=
(비교 연산)
- 범위
- 컬럼
BETWEEN
값1 AND
값2
- PRICE BETWEEN 5000 AND 8000
- 집합
- 컬럼
IN
(값1, 값2, ...), 컬럼 NOT IN
(값1, 값2, ...)
- PRICE IN (5000, 6000, 7000)
- 패턴
- 컬럼
LIKE
패턴
%
: 0개 이상의 문자열과 일치
[]
: 1개의 문자와 일치
[^]
: 1개의 문자와 불일치
_
: 특정 위치의 1개의 문자와 일치
NAME LIKE '정보%'
= NAME이 '정보'로 시작되는 문자열
- NULL
IS NULL
: 컬럼이 NULL이 데이터 조회
IS NOT NULL
: 컬럼이 NULL이 아닌 데이터 조회
- 복합조건
- (PRICE
<
5000) AND
(NAME LIKE
'정보%') : 가격이 5000 미만이고, 이름이 '정보'로 시작하는 문자열
- 첫 번째 문자가 'A' 또는 'B' 또는 'C' 또는 'D'인 문자열 일치 검색
SELECT *
FROM PRODUCT
WHERE NAME LIKE '[ABCD]%';
SELECT 부서, SUM(급여) AS 급여합계
FROM 급여
GROUP BY 부서;
SELECT 직책, 부서, SUM(급여) AS 급여합계
FROM 급여
GROUP BY 직책, 부서
HAVING 급여합계 >= 5000;
SELECT *
FROM 성적
ORDER BY 학점 DESC, 이름 ASC;
- 논리적 조인
내부조인(Inner)
: 공통 걸럼 값이 같은 경우
외부조인(Outer)
: 왼쪽, 오른쪽, 완전 외부 조인
교차조인(Cross)
: 조인 조건이 없는 모든 데이터 조합
셀프조인(Self)
: 자기 자신에게 별칭 지정 후 다시 조인
- 물리적 조인
Nested-Loop(중첩 반복 조인)
: 2개 이상 테이블에서 순차적으로 상대박 ROW 결합
Sort-Merge(정렬 합병 조인)
: 조인 대상 범위가 넓어 임의 접근 줄이기 위함 도는 연결 고리에 마땅한 인덱스가 존재하지 않을 때
Hash(해시 조인)
: 해싱 함수 활용