스터디노트 5월 7일-9일

Jenny·2024년 5월 7일

제로베이스 스터디노트 Chapter 9 - 12

테이블 조인

INNER JOIN, FULL OUTER JOIN, LEFT JOIN, RIGHT JOIN

SELECT * FROM tableNameL
INNER JOIN tableNameR
ON tableNameL.col1 = tableNameR.col2

셀프조인인 경우 ON에 해당하는 내용도 WHERE 로 간다.
괄호 주의 논리 연산자 주의

중복 데이터 없이 출력하기

SELECT concat ( 'Column : ', col1 ) AS 'Title' 
FROM tableNameL l, tableNameR r
WHERE l.col1 = r.col2
AND conditions;

SELECT DISTINCT col1, col2
FROM tableName;

SELECt *
FROM tableName
WHERE conditions (ORDER BY col)
LIMIT #

AS 생략가능, DISTINCT는 앞에, LIMIT는 뒤에 주로 사용?

AWS RDB 사용하기, SQL File 사용하기

  • 클라우드 서비스를 사용해 볼 수 있게 되는 게 왠지 마음이 웅장해졌다.

  • VSCode 설치하기

### *.sql 입력하기 ###
> source fileName.sql
% mysql -u user -p dbName < fileName.sql


### *.sql 출력하기 ###
% mysqldump -u user -p dbName tableName > fileName.sql
### Table Schema 출력하는 옵션 ###
% mysqldump -d -u user -p dbName tableName > fileName.sql
  • mysql아니고 mysqldump인 명령어 잘 구분하자.

제로베이스 스터디노트 Chapter 13 - 14

Python으로 Mysql 사용하기

  • 개발환경 만들기 (feat. 타임머신)

python 사용을 위해 vscode를 설치했다. 내부 extension 프로그램들이 많이 있는지 이것저것 안내문과 함께 자동으로 같이 설치가 되었다. mysql 연결하려고 ipynb에서 첫 코드를 썼는데 에러가 났다.

[1] import mysql.connector

계속 안되길래 터미널에서 그냥 python으로 똑같이 써봤다.

>>> import mysql.connector

그랬더니 이번에는 잘 되는 것이다...! 오잉

왜 터미널에서는 되고 파일 실행으로는 안되는거지...?
이걸로 1시간정도? 날린 것 같다.. 흑흑.. 그러다가 vscode에서 터미널 설정하는 게 있다는 걸 찾았다. 파일이름 바로 아래 오른쪽 끝부분에 base(Python 3.12.2) 이라 쓰여있었다. 내가 사용하려던 건 base가 아니라규 !

클릭하고 바꾸고나니 잘 실행이 되었다. 실행시키고 나서 아래쪽에 아무 메시지가 안뜨는 게 이렇게 반가울수가ㅠ_ㅠ 그리고 이제 다음 줄로 넘어갈수 있다..!고 기뻐했건만,
이번에는 더 긴 에러줄이 나를 반겼다.

local = mysql.connector.connect (
	host = 'localhost',
    user = 'user',
    password = '******'
)
-----------------------------------------------------
MySQLInterfaceError: Authentication plugin 'caching_sha2_password' cannot be loaded

...이게 뭘까..?
한 2시간 동안 이리저리 검색해봐도 해결이 안되고 시간만 속절없이 갔다. 거의 포기하는 심정으로 다음으로 넘어갔다. 같은 방식으로 AWS RDB에 연결했는데 이게 웬걸, 그냥 잘 되었다..(?) 뭔지 모르겠지만 일단 실습은 해볼 수 있는 것 같아서 마음 한켠에 덮어두고 넘어갔다.
헝ㅜ 도와줘요 제로베이스 데이터 분석 스쿨~~~

cursor = conn.cursor()
sql = 'string'
sql = open ('fileName.sql').read()
cursor.execute (sql, parameters)
cursor.execute (sql, multi=True)
result = cursor.fetchAll()
conn.commit()
conn.close()

명령어와 순서 복습하기

Primary key와 Foreign key 사용하기

  • Primary key는 table 내에서 구분할 때, Foreign key는 table 사이에서 데이터가 reference table에도 있는지 확인할 때 사용하는 것 같다.
CONSTRAINT FK_Name
PRIMARY KEY (col1, col2)
FOREIGN KEY (col3, col4)
REFERENCES tableName (colA, colB)

네이밍 생략 가능

  • 수정할 때는 ALTER TABLE로 하기
ALTER TABLE tableName
ADD PRIMARY KEY (col1, col2)
DROP PRIMARY KEY
ADD FOREIGN KEY (col3, col4)
REFERENCES tableName (colA, colB)
DROP FOREIGN KEY keyName
SHOW CREATE TABLE tableName

FOREIGN KEY 삭제 후 한번 더 확인하기


제로베이스 데이터 분석 스쿨 mysql Chapter 15 - 17

이번 강의에는 실습해보고 싶은데 배포되었다는 CSV파일을 찾아볼 수가 없어서 그냥 강의만 쭉 봤다. 이해하는데는 무리가 없을 것 같깉한데 왠지 외워야할 함수들이 많은 것 같다. 복습만이 살 길인가.!

Aggregate function

  • 집계함수
    count, sum, avg, min, max, first, last
SELECT SUM (col1)
FROM tableName
WHERE conditions
GROUP BY col2
HAVING conditions (AVG(col3) >= 100)
ORDER BY col3
LIMIT #

HAVING 명령어 순서 확인하기

Scalar function

  • 스칼라 함수
    UCASE, LCASE, MID, LENGTH, ROUND, NOW, FORMAT
SELECT UCASE (string)
SELECT LCASE (string)
SELECT MID (string, start, length) ##### start:1부터

example1)

example2)

SELECT LENGTH (string)
SELECT ROUND (#, place) #### 소수점첫째자리:0부터

example1) default=소수첫째자리 반올림

example2)

example3)

SELECT NOW ()
SELECT FORMAT (#, place) #### 소수점첫째자리:1부터
FROM tableName
WHERE conditions

example)

SQL subquery

  • Scalar subquery
SELECT col, (subquery)
FROM tableName
WHERE conditions

서브쿼리 결과의 개수가 1개인지 확인하기

  • Inline view
SELECT col, s.columnName
FROM tableName,
	(SELECT columnName FROM tableName WHERE conditions) s
WHERE conditions

서브쿼리 결과의 column이 동일한지 확인하기

  • Nested subquery
SELECT col
FROM tableName
WHERE col = (SELECT col FROM tableName WHERE conditions)
#### subquery 결과의 개수가 1개인지 확인하기
WHERE col = ANY (SELECT col FROM tableName WHERE conditions)

WHERE col = ALL (SELECT col FROM tableName WHERE conditions)

WHERE col IN (SELECT col FROM tableName WHERE conditions)
WHERE EXISTS (SELECT col FROM tableName WHERE conditions)
ORDER BY ...

비교해서 기억하기

profile
I like to movie movie

0개의 댓글