[CODEcademy]SQL시리즈 3단계 총 정리

Codecademy  SQL 시리즈
——————————————————–
Learn SQL
——————————————————–
chapter 1. Manipulation
—SELECT * FROM table_name;
-> 전체검색
—CREATE TABLE table_name (first INTEGER, second TEXT,…, parameter TYPE);
-> Table 생성
—INSERT INTO table_name (first,second,…,parameter) VALUES (1,’2′,…);
-> Table에 데이터 추가
—SELECT parameter FROM table_name;
-> Table에서 특정 parameter만 출력
—UPDATE table_name
—SET first = 1(수정내용)
—WHERE second = ‘2’(조건문);
-> Table에서 특정 조건을 만족하는 데이터만 수정
—ARTER TABLE table_name ADD COLUMN parameter TYPE;
-> Table에서 하나의 column을 추가
—DELETE FROM table_name WHERE second IS NULL(조건문);
-> Table에서 second가 NULL값이면 삭제

chapter 2. Quries
—SELECT para1, para2 FROM table_name;
-> ,를 이용 여러 parameter를 선택하여 검색
—SELECT DISTINCT para FROM table name;
-> DISTINCT는 unique valus를 return해준다.
—SELECT * FROM table_name WHERE para>0;
-> WHERE은 위에서 해왔던 것처럼 조건에 맞는 것만을 return한다.
—SELECT * FROM table_name WHERE para LIKE ‘a_z’;
—SELECT * FROM table name WHERE para LIKE ‘a%’;
-> LIKE는 주어진 para에 뒤에 나오는 조건에 맞는 것을 검색가능하게 한다.
*_는 어떤것이 와도 괜찮은 하나의 칸이고 %는 길이에 상관없이 검색한다.그리고 %는 대소문자 구분이 없다.
—SELECT * FROM table_name WHERE first BETWEEN 1 AND 10;
—SELECT * FROM table_name WHERE second BETWEEN ‘A’ AND ‘J’;
-> BETWEEN은 AND의 양쪽의 값 사이에 있는 것들만 검색가능하게 해준다.
—SELECT * FROM table_name
—WHERE first BETWEEN 1990 AND 2000
—AND second = ‘comedy’;
-> BETWEEN 바로 뒤에 오는 AND가 아닌 AND는 평소에 AND로 돌아온다.
* AND와 OR는 조건문에서 우리가 본래 아는 의미로 사용하면 된다.
—SELECT * FROM table_name ORDER BY para DESC;
-> ORDER BY를 이용하면 정렬이 가능하다.
*DESC는 내림차순을 의미하고 ASC는 오른차순을 의미한다.
—SELECT * FROM table_name ORDER BY para ASC
—LIMIT 3;
-> LIMIT은 최상위 몇개를 뽑아내는 것으로 지금은 3이라 하였기에 3개의 데이터만 나온다.

chapter 3. Aggregate Functions
—SELECT COUNT(*) FROM table_name;
-> COUNT()를 이용하면 결과에 맞는 데이터의 개수를 출력해준다.
—SELECT para,COUNT(*) FROM table_name GROUP BY price;
-> GROUP BY를 이용하여 그룹별 데이터 개수를 확인할 수 있다.
* 중간에 WHERE를 넣어 조건에 맞는 데이터만의 개수를 확인도 가능
—SELECT SUM(para) FROM table_name;
-> SUM()을 이용하면 주어진 para의 데이터를 전체 합한 값을 구해준다.
—SELECT para1, SUM(para2) FROM table_name GROUP BY para1;
-> para1에 따른 para2의 데이터 합계를 볼 수 있다. GROUP BY와 SUM()의 응용
—SELECT MAX(para) FROM table_name;
-> MAX()는 최댓값을 구해준다.
*MIN()은 최솟값을 구해준다.
*AVG()는 평균값을 구해준다.
—SELECT para1, ROUND(AVG(para),2) FROM table_name GROUP BY para1;
-> ROUND(para, INTEGER)는 반올림을 해준다. 여기서는 2로 되어서 3번째자리에서 반올림한다.
*그냥 ROUND(para)로 하면 정수자리까지 반올림하고 .0을 붙여서 return한다.

chapter 4. Multiple Tables
—CREATE TABLE artist(id INTEGER PRIMARY KEY, name TEXT)
-> PRIMARY KEY를 붙여주면 그 para를 기본키로한다.
*기본키는 NULL일 수 없고 uniqe한 값들을 가진다.
—SELECT table1.para1, table1.para2, table2.para3 FROM table1, table2;
-> .으로 다른 두 table의 para를 구분하여 불러올 수 있다.
—SELECT * FROM table1
—JOIN table1 ON
—table1.para1 = table2.para3;
-> JOIN table ON 을 이용하여 다른 두 테이블의 parameter를 연결시켜준다.
*table1의 para1은 FOREIGN KEY(외래키)가 된다.
—SELECT * FROM table1
—LEFT JOIN table1 ON
—table1.para1 = table2.para3;
-> LEFT JOIN은 table1의 NULL값도 포함한 모든 값을 출력하게 한다.
*RIGHT로 하면 반대로 table2의 모든 값을 의미.
—SELECT table1.para1 AS ‘Name’,
—table1.para2,
—table2.para3 AS ‘Nickname’
—FROM table1
—JOIN table2 ON table1.para4 = table2.para5;
—WHERE table1.para2>0;
-> AS를 이용하면 parameter의 header를 바꾸어 출력할 수 있다.

——————————————————–
SQL: Table Transformation
——————————————————–
chapter 1. Subquries
—SELECT * FROM table1 WHERE para1 in
—(SELECT para2 FROM table2 WHERE para3<2000)
-> in 뒤에 있는 곳에 소속되어야 출력된다.
—SELECT id FROM flights AS f WHERE distance<
—(SELECT AVG(distance) FROM flights WHERE carrier = f.carrier);
-> distance가 같은 carrier을 갖는 것끼리의 distance 평균보다 낮은 경우를 출력
*외부 쿼리와 내부 쿼리에서 같은 table이지만 비교대상은 다름을 구분할 줄 알아야한다.
—SELECT origin, id,
—(SELECT COUNT(*) FROM flights f
—WHERE f.id< flights.id AND f.origin=flights.origin) +1
—AS flight_sequence_number FROM flights;
-> 내부 쿼리에서 FROM flights f라고 하면 flight를 AS한 f를 하나더 불러들인다.
-> 위는 같은 origin인 것끼리 비교하면서 자신보다 낮은 id의 개수에 하나 더한 값을 flight_sequence_number에 나타낸다.

chapter 2. Set Opertations
*Merge the rows, called a join.
*Merge the columns, called a union.
—SELECT para FROM table1
—UNION
—SELECT para FROM table2;
-> table1의 para와 table2의 para를 병합
—SELECT para FROM table1
—UNION ALL
—SELECT para FROM table2;
-> UNION ALL을 하게 되면 표를 결합하게 된다.
—SELECT para FROM table1
—INTERSECT
—SELECT para FROM table2;
-> 두개의 table을 합친다. 그대신 이때 두개 이상의 같은 값은 하나로 표시된다.
—SELECT para FROM table1
—EXCEPT
—SELECT para FROM table2;
-> 첫번째 테이블에서 두번째 테이블의 값을 제외하고 DISTINCT로 표시한다.

chapter 3. Conditional Aggregates
*Aggregate functions은 여러개의 입력 데이터에서 하나의 결과를 출력한다.
ex) COUNT(), SUM(), AVG(), MAX(), MIN() 등등
—SELECT
—CASE
—WHEN elevation <250 THEN ‘Low’
—WHEN elevation BETWEEN 250 and 1749 THEN ‘Medium’
—WHEN elevation >=1750 THEN ‘High’
—ELSE ‘Unknown’
—END AS elevation_tier, COUNT(*)
—FROM airports GROUP BY 1;
-> CASE END 안에 WHEN (조건문) THEN (결과물), ELSE (결과물)를 넣어 조건에 따른 결과물을 나타낸다.
* CASE를 Aggregate functions안에 넣어 사용도 가능하다.
chapter 4. Date, Number, and String Functions
*DATE : YYYY-MM-DD
*DATETIME or TIMESTAMP : YYYY-MM-DD hh:mm:ss
*TIME : hh:mm:ss
*DATETIME(time1, ‘+3 hours’, ’40 minutes’, ‘2 days’);
-> 시간을 3시간, 40분, 2일 간격으로 나누어서 가장 가까운 시간에 출력된다.
*SELECT (number1 + number2);: Returns the sum of two numbers. Similar, SQL can be used for subtraction, multiplication, and division.
*SELECT CAST(number1 AS REAL) / number3;: Returns the result as a real number by casting one of the values as a real number, rather than an integer.
*SELECT ROUND(number, precision);: Returns the numeric value rounded off to the next value specified.
—SELECT string1 || ‘ ‘ || string2;
-> ||는 문장을 이어준다.
—SELECT REPLACE(string,’_’,’ ‘) FROM table;
-> REPLACE는 첫번째 문자를 두번째문자로 바꿔주는 치환함수다.

——————————————————–
SQL: Analyzing Business Metrics
——————————————————–
chapter 1. Advanced Aggregates
*/**/는 comment를 넣을 수 있다.
—CASE {condition}
—WHEN {value1} THEN {result1}
—WHEN {value2} THEN {result2}
—ELSE {result3}
—END
-> {condition}의 값에 따라 다른 결과를 내는 switch문처럼 사용
—SELECT para1, count(DISTINCT para2) FROM table_name GROUP BY 1;
-> para2의 값을 중복없이 개수 확인하고 para1에 따라 grouping
chapter 2. Common Metrics
—WITH {subquery_name} AS (
—{subquery_body}
—)
—SELECT …
—FROM {subquery_name}
—WHERE …
-> WITH AS (),(),…는 서브쿼리를 먼저 만들고 할 수 있도록 해준다.

댓글 남기기