제로베이스 데이터 취업 스쿨 10주차 - 1 (SQL 5일차 - 심화1)

김휘담·2024년 4월 1일

Python with MYSQL

  • Python으로 MYSQL 접속 후 사용하는 방법
  • MYSQL에 접속하기 위한 코드
mydb = mysql.connector.connect(
	host = '<hostname>',
    user = '<username>',
    password = '<password>'
)
  • Close database
mydb = mysql.connector.connect(
	host = '<hostname>',
    user = '<username>',
    password = '<password>',
    database = '<databasename>'
)
mydb.close()
  • 특정 database에 접속하기 위한 코드
mydb = mysql.connector.connect(
	host = '<hostname>',
    port = <port>,
    user = '<username>',
    password = '<password>',
    database = '<databasename>'
)
  • 쿼리를 실행하기 위한 코드(읽어올 데이터 양이 많은 경우 cursor 생성시 buffered=True 설정-> cursor(buffered=True))
mydb = mysql.connector.connect(
	host = '<hostname>',
    user = '<username>',
    password = '<password>',
    database = '<databasename>'
)
mycursor = mydb.cursor()
mycursor.execute(<query>)
  • SQL File을 실행하기 위한 코드
mydb = mysql.connector.connect(
	host = '<hostname>',
    user = '<username>',
    password = '<password>',
    database = '<databasename>'
)
mycursor = mydb.cursor()
sql = open('<filename>.sql').read()
mycursor.execute(sql)
  • SQL File 내에 쿼리가 여러 개 존재하는 경우의 코드
mydb = mysql.connector.connect(
	host = '<hostname>',
    user = '<username>',
    password = '<password>',
    database = '<databasename>'
)
mycursor = mydb.cursor()
sql = open('<filename>.sql').read()
mycursor.execute(sql, multi=True)
  • fetchall(): select 명령 등의 결과값을 가져오기
mycursor.execute(<query>)
result = mycursor.fetchall()
for data in result:
	print(data)

Primary Key

  • 테이블의 각 레코드를 식별
  • 중복되지 않은 고유값을 포함
  • Null 값을 포함할 수 없음
  • 테이블 당 하나의 기본키를 가짐
  • Primary Key 생성 문법 1 (CONSTRAINT는 생략 가능)
CREATE TABLE tablename
(
	column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    ....
    CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...)
);

예제

  • Primary Key 삭제 문법
ALTER TABLE tablename DROP PRIMARY KEY;

예제

  • Primary Key 생성 문법 2
ALTER TABLE tablename ADD PRIMARY KEY (column1, column2, ...);

예제

Foreign Key

  • 한 테이블을 다른 테이블과 연결해주는 역할이며, 참조되는 테이블의 항목은 그 테이블의 기본키
  • Foreign Key 생성 문법 1 (CONSTRAINT는 생략 가능)
CREATE TABLE tablename
(
	column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype,
    column4 datatype
    ....
    CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...),
    CONSTRAINT constraint_name FOREIGN KEY (column3, column4, ...) REFERENCES REF_tablename(REF_column)
);

예제

  • 자동 생성된 CONSTRAINT를 확인하는 방법
SHOW CREATE TABLE tablename;
  • Foreign Key 삭제 문법
ALTER TABLE tablename DROP FOREIGN KEY FK_constraint;
  • Foreign Key 생성 문법 2
ALTER TABLE tablename ADD FOREIGN KEY (column) REFERENCES REF_tablename(REF_column);

Aggregate Functions(집계함수)

  • COUNT: 총 갯수를 계산해주는 함수
SELECT COUNT(column) FROM tablename WHERE condition;

예제

  • SUM: 합계를 계산해주는 함수
SELECT SUM(column) FROM tablename WHERE condition;

예제

  • AVG: 평균을 계산해주는 함수
SELECT AVG(column) FROM tablename WHERE condition;

예제

  • MIN: 가장 작은 값을 찾아주는 함수
SELECT MIN(column) FROM tablename WHERE condition;
  • MAX: 가장 큰 값을 찾아주는 함수
SELECT MAX(column) FROM tablename WHERE condition;

예제

  • FIRST: 첫번째 결과값을 리턴해주는 함수
  • LAST: 마지막 결과값을 리턴하는 함수
  • GROUP BY: 그룹화하여 데이터를 조회
SELECT column1, column2 FROM tablename 
WHERE condition 
GROUP BY column1, column2, ... 
ORDER BY column1, column2;
  • HAVING: 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용
SELECT column1, column2 FROM tablename 
WHERE condition 
GROUP BY column1, column2, ... 
HAVING condition (Aggregate Functions)
ORDER BY column1, column2;
profile
김휘담

0개의 댓글