3 시험정리
[ CS / javascript ] 2021-03-02
표 만들기
PREV
CREATE DATABASE DatabaseName [CHARACTER SET utf8mb4 [COLLATE utf8mb4_general_ci]] ;
CREATE TABLE TableName (
ColName1 ColType1,
ColName2 ColType2,
ColName3 ColType3 ...
); // create table
USE DatabaseName ; // change database to DatabaseName
DROP DATABASE DatabaseName ; // remove database DatabaseName
DROP TABLE TableName ; // remove table TableName [[from current database.]]
ALTER TABLE TableName Add ColName ColType; // add column to TableName
ALTER TABLE TableName Add ColName ColType; // add column to TableName
Dependency
mysql
mysql-connector-java
SELECT (col1, col2, col3, ... or *) FROM (table1, table2, ... or *);
Database
CREATE DATABASE database_name; // database_name database 생성
USE database_name; // database 를 database_name 으로 바꾸기
Table
SHOW TABLES // database 안의 모든 table 출력
CREATE TABLE
CREATE ((TEMPORARY)) TABLE ((IF NOT EXISTS)) table_name (col definitions) ((table options)) ((partition options))
CREATE TABLE table_name (
var1 var1type option1 option2,
var2 var2type,
varD varDtype DEFAULT defaultVal ... // table_name table 생성. 열로는 괄호속의 열들 생성
((
// 여기서 부턴 또 옵션
PRIMAKRY KEY(var3, ...), // var3 은 PK 이다
UNIQUE(var4), // var4 는 유니크한 값이다
FOREIGN KEY(var5) REFERENCES table_name2(table_name2_PK), // var 5 는 table_name2 에서온 FK 이다
ON DELETE CASCADE, // data 삭제지 data 를 참조하던 data 도 삭제
ON UPDATE CASCADE, // data update 시 data 를 참조하던 data 도 update
ON UPDATE SET NULL, // data update 시 data 를 참조하던 data 를 NULL 로
ON UPDATE SET DEFAULT, // data update 시 data 를 참조하던 data 를 DEFAULT 값으로
))
);
PRIMARY KEY (var3)
varTypes
1. Numeric
1. INTEGER, INT, SMALLINT
2. FLOAT, REAM, DOUBLE PRECISION
4. DECIMAL(int, int)
2. Character string
1. CHAR(lengthInt), CHARACTER(lengthInt) // 그냥 정해진 길이의 데이터 사용
2. VARCHAR(lengthInt), CHAR VARYING(n), CHARACTER VARYING(n) // 데이터 길이에 따라 길이만큼 데이터 사용
3. Bit-string
1. BIT(lengthInt) // 정해진 길이
2. BIT VARYING(lengthInt) // 변하는 길이
4. Boolean
1. TRUE, FALSE, NULL
5. DATE
1. Ten positions
2. YYYY-MM-DD
3. Multiple mapping functions available in RDBMSs to change date formats
options
1. NOT NULL
2. DEFAULT val
3. CHECK (var >= someVal)
4. PRIMARY KEY
5. UNIQUE // also known as secondary key, candidate key
6. FOREIGN KEY(varKeyName) REFERENCES foreignTableName(foreignTableKey) EXTRAOPTIONs
1. Foreign 키가 변경됨에따른 추가 옵션 EXTRAOPTIONs
ON (DELETE 또는 UPDATE) (SET NULL 또는 SET DEFAULT 또는 CASCADE)
7. AUTO_INCREMENT
UPDATE TABLE // 테이블의 형식 변화! 데이터 말고!
ALTER TABLE table_name ADD COLUMN col_name col_name_type options; // table_name 에 col_name 열 추가
DROP TABLE DELETE
DROP TABLE table_name
INSERT DATA TO TABLE add data
INSERT INTO table_name VALUES (col1val, col2val, ...) // all col vals are given
INSERT INTO table_name (col1, col2, col3, ... ) VALUES (col1val, col2val, col3val,...) // only cols in (col1, ...) data are given in order.
INSERT INTO table_name SELECT ... // Add data from the table created by SELECT.
UPDATE DATA
UPDATE table_name SET col1 = newVal1 WHERE pk = targetPK
DELETE DATA
DELETE FROM table_name WHERE col1 = targetCol1 // 조건에 맞는 데이터만 삭제
DELETE FROM table_name // 다 삭제
TABLE JOIN
table1 NATURAL JOIN table2
SELECT
SELECT (()) FROM (()) WHERE (()) GROUP BY (()) HAVING (()) ORDER BY (()) // 이순서에 맞게 반드시 사용!
SELECT 선택될 열 표시
FROM 찾아볼 Table 표시
WHERE 데이터 조건 표시
GROUP BY 조건에 해당하는 데이터를 그룹화
HAVING 그룹 조건 표시
ORDER BY 최종 결과를 정렬
select ((distinct)) col1, table2.col2, col3 ((as newColName3)), function1 ((as newFunctionName1)), function2 ...
from table1, table2 ((as newTableName2)), ...
where condition1 ANDOR condition2 ANDOR condition3 ...
order by col1 ((asc(default),desc)), col2 ((desc)), col3 ((desc)) ... // You have to use name that is shown in the table! use newColName if required
select * from tableName; // print all data with all columns in tableName
select col1, col2, col3, ... from table1 where col4 = val4; // from table1 print all data with col1, col2, col3 and col4 == val4
select distinct * from table // print add data with all columns from table but remove duplicated. 중복 없음
SELECT
SELECT [[DISTINCT]] col1, col2, col3 as newCol3, *
col + 1 같이 연산도 가능! 함수도 가능!
if (condition, "trueVal", "falseVal")
FROM
FROM table1, table2, table3 ((CROSS JOIN, INNER JOIN, NATURAL JOIN, OUTER JOIN)) table4 ((ON, USING -- when INNER JOIN)), subquery1 as table5
JOIN
1. CROSS JOIN: cross product. table1 CROSS JOIN table2 === table1, table2
for ele1 in table1{result.add(ele1*table2)}
2. NATURAL JOIN: no duplicate. 두 테이블에서 같은 col 이름에 대하여 값이 같을때만 데이터 생성.
3. INNER JOIN: 조건 만족하는 데이터 생성. ON 또는 USING 으로 조건을 주어야함
ON col1 < col2 // 다음과 같은 조건문이 와야함
USING (col1, col2, ...) // 열 이름이 col1, col2 이면 같은 값을 가져야함
WHERE
조건문 group 에 미적용
GROUP BY
GROUP BY col1, col2, ... (col1, col2, ... 값이 같은 데이터 끼리 소규모 Table 이 되고 Aggregate function 을 적용한다.)
HAVING
HAVING col1 > 40 // group 에서만 적용
ORDER BY
ORDER BY col1 ((ASC, DESC)), col2 ((ASC, DESC)), ...
LIMIT Int print Int number of data
condition
col1 = val1 // ==
col1 >= val1 // >=
col1 = val1 AND col2 = val2 // col1 == val1 && col2 == val2
col1 = val1 OR col2 = val2 // col1 == val1 || col2 == val2
(col1 = val1 AND col2 = val2) OR (col3 = val4)
col1 IS NOT NULL //
col1 != null, col1 <> null
col1 ((NOT)) IN subquerySetOrSet // SET == (val1, val2, ...)
((NOT)) EXISTS subquery // check if subquery is empty
col1 (=, >, <>, ...) ALL/ANY set - checks to see if a relationship holds for every/one member of the set
col1 LIKE '%word2%' // word searches. % 는 * 과같다. *word2* 인 스트링 찾기.
subquery1 union subquery2 // both need same col names. Then it returns union.
function
TIMESTAMPDIFF(YEAR, birth, CURDATE())
CURDATE() // return current YEAR-MONTH-DAY
YEAR(DATE_VAR) // return YEAR
MONTH(DATE_VAR) // return MONTH
DAYOFMONTH(DATE_VAR) // return DAYOFMONTH
DATE_ADD(DATE_VAR, INTERVAL 1 MONTH) // return DATE that increased 1 month // 31 일에서 INTERVAL 1 DAY 하면 32일이 된다!
CAST(var as newType) // change var type to newType
DATE_FORMAT(varDateTime, formatString) // https://mariadb.com/kb/en/date_format/
SUBSTRING(var, startInt, endInt) // print substring of given string
1. Aggregate functions // 표를 하나의 값으로 요약
MAX(VAR) // return max. MIN(VAR)
COUNT(VAR) // return number of VAR where var is not null
SUM(VAR) // return 총합
AVG(var) // return average
Variable
SET @varName = Val, @varName2 = Val2;
SET @ROW_NUM = -1;
SELECT `HOUR`, MAX(`COUNT`) as COUNT
FROM
(
(SELECT HOUR(DATETIME) as `HOUR`, COUNT(*) as `COUNT`
FROM ANIMAL_OUTS
GROUP BY `HOUR`)
UNION
(SELECT @ROW_NUM := @ROW_NUM + 1 as `HOUR`, 0 as `COUNT` FROM ANIMAL_OUTS LIMIT 24) -- 0 ~ 23시, 모든 count 0
) as result_set
GROUP BY `HOUR`
ORDER BY `HOUR`;
WITH RECURSIVE
WITH RECURSIVE tableName AS (
SELECT 1 as n, CAST('charval' as char(50)) as str // initial set
UNION (ALL or DISTINCT)
SELECT n + 1, concat(str, str) from tableName where n < 5 // run until condition is false
)