0 SQL
- 관계형 데이터 베이스 조작하는 표준 언어.
- 일반적 코딩과 달리 비절차적 언어. 순서대로 처리가 아니라, 집합 개념으로 접근해야.
- SQL은 일반적으로 대소문자를 구분하지 않는다. 특수하게 지정하는 경우가 아니면.
1 SQL 명령문의 종류
- 질의어(DQL, Data Query Language)
- 조작어(DML, Data Manipulation Language):
- INSERT 데이터 입력
- UPDATE 데이터 수정
- DELETE 데이터 삭제
- 정의어(DDL, Data Definition Language):
- CREATE 데이터베이스 객체 생성
- ALTER 데이터베이스 객체 변경
- DROP 데이터베이스 객체 삭제
- RENAME 데이터베이스 객체 이름변경
- TRUNCATE 데이터 및 저장공간 삭제
- 트랜잭션 처리어(TCL Transaction Control Language)
- COMMIT 정상 종료, 영구 저장
- ROLLBACK 취소하고 원복
- SAVEPOINT 임시 저장점 설정
- 제어어(DCL, Data Control Language)
- GRANT 데이터베이스 객체 접근 권한 부여
- REVOKE 데이터베이스 객체 접근 권한 취소
2 SQL 질의문(query) 표준 형식
SELECT [DISTINCT]칼럼이름, 함수, 값 등
FROM 출처테이블
WHERE 조건
GROUP BY 그룹핑 조건
HAVING 그룹 조건
ORDER BY 순서 기준 칼럼
SELECT: 검색 명령문. FROM에서 SELECT에서 지시한 것을 검색해라. => 결과에 포함하는 속성(Attribute)들의 리스트 열거
DISTINCT는 중복값을 다 제거하고 낸다는 뜻
ex) distinct deptno, grade로 하면 101 1, 101 2, 101 3 이렇게만 출력
FROM: 필요로 하는 릴레이션(Relation)들 리스트 열거
WHERE: 연산 조건
GROUP BY: 동일한 값을 갖는 튜플들을 한 그룹으로 묶는다. group by job이면 job 칼럼에서 같은 값을 기준으로.
HAVING: 그룹 조건. 튜플의 그룹이 만족해야 하는 조건.
ORDER BY: 결과 튜플 정렬 순서. 저 칼럼을 기준으로 정렬.
- 여기서 실행 순서: FROM => WHERE => GROUP BY => HAVING => SELECT => ORDER BY => limit
3 잡다구리한 기초 기능
- 별명 부여
student AS s 이런 식으로. 여기서 AS 지우고 그냥 띄우기만 해도. student s
만약 별명에 공백을 포함하거나, 대소문자를 구분, 특수문자를 포함하려면 " " 큰 따옴표 사용
ex) deptno "Department Number 부서 번호#"
SELECT *: 모든 걸 뜻함
FROM tab: table의 약자. 모든 테이블.
DESC 테이블이름: 테이블 구조를 확인
||: 합성 연산자. 하나의 칼럼을 다른 칼럼, 산술 표현식, 상수와 연결해서 하나의 칼럼처럼 출력할 때
SELECT studno || ' ' || name "Student"
FROM student;
=> 10101 전인하 (칼럼 이름은 Student)
- 같은 기능으로
concat(a, b). 문자열 연결.
- 산술 연산자: +, -, *, / 숫자 또는 날짜 에만 사용 가능
limit 10 첫 몇 개의 행만 보여줌. 전체 구조 파악하거나 특정 구간 자를 때. => 항상 제일 마지막에 실행.
SELECT *
FROM table_name
LIMIT 10;
4 팁
- 1 가능하다면, 동일한 결과는 DML보다 DDL로 작업하도록 연습
- 2 Driving Table(조인 연산에서 기준이 되는 테이블)은 FROM절의 가장 왼쪽에 위치
- 3 WHERE 절의 처음엔 테이블 간 JOIN 관계부터 기술
- 4 Driving Table부터 필터링 조건을 적는다(모수를 줄인다)
- 5 WHERE절의 왼쪽은 절대 가공하지 않고, 오른쪽을 가공해서 왼쪽에 맞춘다
- 6 ORDER BY는 맨 마지막에 한 번만 기술
- 실행 계획을 확인해서, 내가 생각하는 실행 계획과 비교 => 더 빠른 방법에 익숙해져라
WHERE에 AND로 조건 여러 개 추가