Overview
Data language
- DB를 정의, 조작, 제어 하기 위해 사용
- DDL(스키마 정의)
- create table, alter table, drop table
- create view, drop view
- virtual table -> 실제로 있는 것은 아니다. 허용가능한 가상 테이블, 보안성과 접근성
- create index, drop index
- storage 공간 고려해서 신중하게 결정, index tuning
- DML(검색, 삽입, 삭제 갱신)
- select from where
- insert into
- delete from
- update set
- DCL(회복, 병행제어, 무결성, 보안관리)
- DBA, 응용프로그래머가 사용
- 보안, 권한 부여 grant to, revoke from
- 동시성 제어, lock, unlock(explicit lock, implicit lock -> DEAD LOCK)
- 회복 commit, rollback
SQL
- Structured Query Language
- XML, object-oriented concepts
- data sublanguage
- GROUP_BY 로 묶은다음 GROUP_CONCAT 사용한다. HAVING
- UNION ALL
- LEFT JOIN
- DISTINCT
- 중복제거, Sorting -> 오히려 시간이 더 걸린다
- WHERE 조건에서 문자일 때는 ' ' 써주는 것 잊지 말기!
- AND, OR
- WHERE BUYER IN (' ', ' ', ' ');
- WHERE BUYER NOT IN (' ', ' ', ' ');
- WHERE ExtendedPrice BETWEEN 100 AND 200;
- WHERE ExtendedPrice >= 100 AND ExtendedPrice <= 200;
- LIKE and Wildcards
- _ = Exactly one character
- % = Any set of zero or more characters
- ? = Exactly one character
- = Any set of zero or more characters
- select * from SKU_DATA where Buyer LIKE 'Pete%';
- select * from SKU_DATA where SKU_Description LIKE '%Tent%';
- WHERE SKU LIKE '%2__';
- 끝에서 3번째가 '2'로 나와야한다.
- SKU : 100200, 101200
- TRIM("문자열")
- RTRIM("문자열", '옵션')
- 문자열의 오른쪽(우측) 공백 제거, 문자 왼쪽 반복적인 문자를 제거를 한다.
- LTRIM("문자열", '옵션')
- 문자열의 왼쪽(좌측) 공백 제거, 문자 왼쪽 반복적인 문자를 제거를 한다.
-> 제거할 문자가 동일하다면 옵션의 문자 개수는 무관하다!
- ORDER BY OrderNumber, Price;
- 순서대로 1차, 2차
- ORDER BY Price DESC, OrderNumber ASC ;
- COUNT(), SUM(), AVG(), MIN(), MAX()
Examples
- SELECT COUNT(DISTINCT Department) AS DeptCount
FROM SKU_DATA;
- SELECT Quantity * Price AS EP, ExtendedPrice
FROM OREDER_ITEM;
- SELECT DISTINCT RTRIM (Buyer) + ' in ' + RTRIM(Department) AS Sponsor
From SKU_DATA;
- 읽는 순서
4.SELECT
1.FROM
2.[WHERE]
3.[GROUP BY [HAVING]
5.[ORDER BY]
Querying Multiple Tables : Subqueries, Joins
- Subquries -> 최종 SELECT 조건이 하나의 테이블에서 나와야한다.
- Joins
- FROM절에 두개 이상의 테이블이 나올 때, 반드시 join 조건이 들어가야함.
- 알고 싶은 column이, 테이블이 2개 이상이다.
- 최종 select 조건이 여러 테이블에서 나와도 된다.
Subqueries vs Joins
- 둘다 process multiple tables
- A subquery can only be used to retrieve data from the top table
- correlated subquery (join으로 표현 하기 어려운 내용 kroenke7장)
Cape Codd Retail Sales Structure
INDEX