SQL, SQL 고급 내용을 공부했다. MySQL, AWS 등을 익혔다.
% mysql -u root -p
SHOW DATABASES;
CREATE DATABASE dbname;
USE dbname;
DROP DATABASE dbname;
use mysql;
SELECT host, user FROM user;
CREATE USER 'username'@'localhost' identified by 'password';
CREATE USER 'username'@'%' identified by 'password';
DROP USER 'username'@'localhost'
DROP USER 'username'@'%'
SHOW GRANTS FOR 'username'@'localhost'
GRANT ALL ON dbname.* to 'username'@'localhost'; - 권한 삭제 -
REVOKE ALL ON dbname.* from 'username'@'localhost';`FLUSH PRIVILEGES;
CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4
CREATE TABLE tablename(columnname datatype, columnname datatype, ...);
SHOW TABLES;
DESC tablename;
ALTER TABLE tablename
RENAME new_tablename;
ADD COLUMN columnname databtype;
MODIFY COLUMN columnname datatype;
CHANGE COLUMN old_columnname new_columnname datatype;
DROP COLUMN columnname
DROP TABLE tablename;
INSERT INTO tablename (col1, col2, ...) VALUES (val1, val2, ...);
INSERT INTO tablename VALUES (val1, val2, ...);
SELECT col1, col2 FROM tablename;
SELECT * FROM tablename;
WHERE condition;
UPDATE tablename SET col1 = val1, col2 = val2, ... WHERE condition;
DELETE FROM tablename WHERE condition;
SELECT col1, col2 FROM tablename
ORDER BY col1, col2, ... ASC | DESC;
- 보다 큰(초과)
=
- 보다 크거나 같은(이상)
AND 우선순위가 OR 보다 높아 먼저 처리되므로 괄호 활용을 잘 해야한다.
SELECT col1, col2 FROM tablename WHERE cond1 AND cond2 AND cond3 ...;
SELECT col1, col2 FROM tablename WHERE cond1 OR cond2 OR cond3 ...;
SELECT col1, col2 FROM tablename WHERE NOT cond
SELECT col1, col2 FROM tablename WHERE col1 BETWEEN val1 AND val2;
SELECT col1, col2 FROM tablename WHERE col1 IN (val1, val2, ...)
SELECT col1, col2 FROM tablename WHERE col LIKE pattern
%
_
SELECT col1, col2, ... FROM tableA UNION | UNION ALL SELECT col1, col2, ... FROM tableB;
SELECT tableA.col1, tableB.col2, ... FROM tableA INNER JOIN tableB ON tableA.col = tableB.col WHERE condition;
SELECT tableA.col1, tableB.col2, ... FROM tableA LEFT JOIN tableB ON tableA.col = tableB.col WHERE condition;
SELECT tableA.col1, tableB.col2, ... FROM tableA RIGHT JOIN tableB ON tableA.col = tableB.col WHERE condition;
SELECT tableA.col1, tableB.col2, ... FROM tableA FULL OUTER JOIN tableB on tableA.col = tableB.col WHERE condition;
SELECT tableA.col1, tableB.col2, ... FROM tableA LEFT JOIN tableB on tableA.col = tableB.col UNION SELECT tableA.col1, tableB.col2, ... FROM tableA RIGHT JOIN tableB ON tableA.col = tableB.col WHERE condition;
SELECT tableA.col1, tableB.col2, ... FROM tableA, tableB, ... WHERE condition;
SELECT CONCAT('string1', 'string2', ...);
SELECT column AS alias FROM tablename
SELECT col1, col2, ... FROM tablename AS alias
SELECT DISTINCT co1, co2, ... FROM tablename;
SELECT col1, col2, ... FROM tablename WHERE condition LIMIT number;
% mysql -h <엔드포인트> -P <포트> -u <마스터 사용자 이름> -p
use mysql
select host user from user;
source /path/filename.sql
\. /path/filename.sql
\. filename.sql
mysql -u username -p databaseName < /path/filename.sql
mysqldump -u username -p dbname > backup.sql
mysqldump -u username -p --all-databases > backup.sql
source filename.sql
mysqldump -u username -p dbname tablename > backup.sql
mysqldump -d -u username -p dbname tablename > backup.sql
mysqldump -d -u username -p dbname > backup.sql
delete from police_station;
pip install mysql-connector-python
db변수 = mysql.connector.connect(
host = '주소',
port = 3306,
user = 'admin',
password = '*****',
database = 'zerobase'
)
db변수 = mysql.connector.connect(
host = 'localhost',
user = 'root',
password = '*****',
database = 'zerobase'
)
변수.close()
커서변수 = db변수.cursor()
커서변수.execute(<query>);
파일변수 = open("filename.sql").read()
커서변수.execute(파일변수)
커서변수.execute(파일변수, multi = Ture)
데이터변수 = 커서변수.fetchall()
buffered = True
옵션을 넣어준다show create table tablename;
ALTER TABLE tablename ADD PRIMARY KEY (col1, col2);
CREATE TABLE tablename
(
col1 datatype NOT NULL,
col2 datatype NOT NULL,
...
CONSTRAINT constaint_name # 생략가능, 자동 생성됨
PRIMARY KEY (co1, col2, ...)
);
ALTER TABLE tablename DROP PRIMARY KEY;
ALTER TABLE tablename ADD FOREIGN KEY (col) REFERENCES REF_tablename(REF_col);
CREATE TABLE tablename
(
col1 datatype NOT NULL,
col2 datatype NOT NULL,
col3 datatype,
col4 datatype,
...
CONSTRAINT constraint_name
PRIMARY KEY (col1, col2, ...),
CONSTRAINT constraint_name # 생략 가능
FOREIGN KEY (col3, col4, ...) REFERENCES REF_tablename(REF_col)
);
ALTER TABLE tablename DROP FOREIGN KEY FK_constraint;
SELECT COUNT(col) FROM tablename WHERE condition;
SELECT SUM(col) FROM tablename WHERE condition;
SELECT AVG(col) FROM tablename WHERE condition;
SELECT MIN(col) FROM tablename WHERE condition;
SELECT MAX(col) FROM tablename WHERE
SELECT col1, col2, ... FROM tablename WHERE condition GROUP BY col1, col2, ... ORDER BY col1, col2, ...
SELECT col1, col2, ... FROM tablenumber WHERE condition GROUP BY col1, col2, ... HAVING condition (Aggregate Functions) ORDER BY col1, col2, ...
입력값을 기준으로 단일 값을 반환하는 함수
SELECT UCASE(string);
SELECT LCASE(string);
SELECT MID(string, start_position, length);
SELECT LENGTH(string);
SELECT ROUND(number, deciamls_place)
SELECT NOW()
;SELECT FORMAT(number, decimal_place);
SELECT col1, (SELECT col2 FROM table2 WHERE condition) FROM table1 WHERE condition;
SELECT a.col, b.col FROM tableA a, (SELECT col1, col2 from tableB) b WHERE condition;
SELECT col1 FROM tableA WHERE col1 = (SELECT col2 FROM tableB WHERE condition) ORDER BY col1;
SELECT col1 FROM tableA WHERE col IN (SELECT col2 FROM tableB WHERE condition) ORDER BY col1;
SELECT col1 FROM tableA WHERE EXISTS (SELECT col2 FROM tableB WHERE condition) ORDER BY col1;
SELECT col1 FROM tableA WHERE col1 = ANY (SELECT col2 FROM tableB WHERE condition) ORDER BY col1
SELECT col1 FROM tableA WHERE col1 = ALL (SELECT col2 FROM tableB WHERE condition) ORDER BY col1
SELECT col1 FROM tableA a WHERE (a.col1, a.col2, ...) IN (SELECT b.col1, b.col2, ... FROM tableB b WHERE a.col1 = b.col2) ORDER BY col1;
SQL 코딩 테스트 연습은 많이 했지만, 직접 DB를 만들고 table을 만들어 내용을 정리하고, 합하고, 그것을 또 AWS에 올리는 것은 처음 해봤다. 처음에는 따라하는것이 벅차서 내용을 이해 못하다가, sql 백업 파일에서 오류가 나면서 갑자기 많은 것이 이해되었다.
잘 안되어야 머리를 굴리는 이유는 무엇일까. 그래도 지금까지 한 공부 중에 가장 재미있다. 직관적이고, 실습 과정이 안전하다고 느껴진다.
이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.