📝

2. MySQL (강병주, 송유림)

2.1 MySQL이란?

2.1.1 MySQL이란

  • MySQL은 가장 많이사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)입니다.
  • MySQL은 오픈형 소스이며, 다중 사용자 및 다중 스레드를 지원합니다.
    • 또한, C++,C언어, PHP, JAVA 등 많은 프로그래밍 언어를 위한 여러 API를 제공하고 있습니다.
  • MySQL은 윈도우, 리눅스 등 다양한 운영체제에서 사용할 수 있으며, 특히 PHP와 함께 웹 개발에 자주 사용됩니다.
  • MySQL은 오픈 소스 라이센스를 따르기는 하지만, 상업적으로 사용할 때는 상업용 라이센스를 구입해야만 합니다.

2.2.2 MySQL의 장점

  • 오픈 소스 라이센스이기 때문에 무료로 사용할 수 있습니다.
  • 다양한 운영체제에서 사용할 수 있으며, 여러 프로그래밍 언어를 지원합니다.
  • 큰 크기의 데이터 집합도 빠르고 효과적으로 처리할 수 있습니다.
  • 표준 SQL 형식을 사용합니다.
  • MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있습니다.
 
 

2.2 MySQL 기법

2.2.1 CREATE문

  • CREATE 문을 사용하여 데이터베이스와 테이블을 만들 수 있습니다.
  • CREATE DATABASE 데이터베이스명
# SCHOOL이라는 데이터베이스를 생성합니다. CREATE DATABASE SCHOOL;
  • CREATE TABLE 테이블명 (컬럼1 타입 ,컬럼2 타입 …)
# STUDENT라는 테이블을 생성합니다. # NAME, STUDENT_NUM, ADDRESS, BIRTH라는 컬럼을 가진 테이블을 생성합니다. # VARCHAR는 문자열, ()의 값은 길이, INT는 숫자형, DATE는 날짜형을 의미합니다. CREATE TABLE STUDENT (NAME VARCHAR(20) ,STUDENT_NUM INT ,ADDRESS VARCHAR(50) ,BIRTH DATE )
NAME
STUDENT_NUM
ADDRESS
BIRTH

2.2.2 ALTER문

  • ALTER 문을 사용하여 데이터베이스와 테이블의 내용을 수정할 수 있습니다.
  • ALTER DATABASE 테이터베이스명 CHARACTER SET = 문자집합이름
# SCHOOL이라는 데이터베이스의 문자집합을 UTF8로 변경합니다. ALTER DATABASE SCHOOL CAHRACTER SET = utf8
  • ALTER TABLE 테이블명
  • ADD 컬럼명 컬럼타입
# STUDENT 테이블에 INT타입의 GRADE 컬럼을 추가합니다. ALTER TABLE STUDENT ADD GRADE INT;
NAME
STUDENT_NUM
ADDRESS
BIRTH
GRADE
  • ALTER TABLE 테이블명 DROP 컬럼명
# STUDENT 테이블의 STUDENT_NUM 컬럼을 삭제합니다. ALTER TABLE STUDENT DROP STUDENT_NUM;
NAME
ADDRESS
BIRTH
GRADE
  • ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 컬럼타입
# STUDENT 테이블의 NAME컬럼의 타입을 VARCHAR(20)에서 VARCHAR(10)으로 변경합니다. ALTER TABLE SUTDENT MODIFY COLUMN NAME VARCHAR(10);

2.2.3 DROP문

  • DROP 문을 사용하여 데이터베이스와 테이블을 삭제할 수 있습니다.
  • DROP DATABASE 데이터베스명
# SCHOOL 데이터베이스를 삭제합니다 DROP DATABASE SCHOOL;
  • DROP TABLE 테이블명
# STUDENT라는 테이블을 삭제합니다 DROP TABLE STUDENT;

2.2.4 INSERT문

  • INSERT문을 사용하여 테이블에 새로운 레코드를 추가할 수 있습니다.
  • INSERT INTO 테이블명 (컬러명1 ,컬럼명2 ,컬럼명3, …) VALUES (값1 ,값2 ,값3, …)
# STUDENT 테이블 컬럼 NAME, ADDRESS에 '성춘향','부산'을 추가합니다. INSERT INTO STUDENT (NAME, ADDRESS) VALUES ('성춘향', '부산');
NAME
ADDRESS
BIRTH
GRADE
성춘향
부산
  • INSERT INTO 테이블명 VALUES (값1 ,값2 ,값3, …);
''' STUDENT 테이블에 '성춘향','부산','1999.11.12',2를 추가합니다. 컬럼명을 작성하지 않은 경우에는 모든 컬럼 값들을 작성해줘야 합니다. 컬럼명을 작성하지 않은 경우에는 컬럼 순서를 맞춰서 작성해줘야 합니다. ''' INSERT INTO STUDENT VALUES ('홍길동', '광주', '1999.11.12', 2);
NAME
ADDRESS
BIRTH
GRADE
성춘향
부산
NAME
ADDRESS
BIRTH
GRADE
성춘향
부산
홍길동
광주
1999.11.12
2

2.2.5 UPDATE문

  • UPDATE 문을 사용하여 레코드의 내용을 수정할 수 있습니다.
  • UPDATE 테이블명 SET 컬러명1 = 값1, 컬럼명2 = 값2, … WHERE 컬럼명 = 조건값 STUDENT 테이블에서 NAME이 '성춘향'인 레코드를 찾아 ADDRESS, BIRTH, GRADE값을 '대전', '1995.10.28', 3 으로 변경합니다. UPDATE STUDENT SET ADDRESS = '대전' BIRTH = '1995.10.28' GRADE = 3 WHERE NAME = '성춘향'
''' STUDENT 테이블에서 NAME이 성춘향인 값을 찾아 ADDRESS, BIRTH, GRADE를 대전, 1999.11.12, 3으로 변경합니다. ''' UPDATE STUDENT SET ADDRESS = '대전', BIRTH = '1999.11.12' GRADE = 3 WHERE NAME = '성춘향';
NAME
ADDRESS
BIRTH
GRADE
성춘향
부산
홍길동
광주
1999.11.12
2
NAME
ADDRESS
BIRTH
GRADE
성춘향
대전
1995.10.28
3
홍길동
광주
1999.11.12
2

2.2.6 DELETE문

  • DELETE 문을 사용하여 테이블의 레코드를 삭제할 수 있습니다.
  • DELETE FROM 테이블명 WHERE 컬럼명 = 조건값
# STUDENT 테이블에서 NAME이 홍길동인 레코드를 삭제합니다. DELETE FROM STUDENT WHERE NAME = '홍길동'
NAME
ADDRESS
BIRTH
GRADE
성춘향
대전
1995.10.28
3
홍길동
광주
1999.11.12
2
NAME
ADDRESS
BIRTH
GRADE
성춘향
대전
1995.10.28
3

2.2.7 SELECT문

  • SELECT 문을 사용하여 테이블의 레코드를 선택할 수 있습니다.
    •  
  • SELECT 컬럼 FROM 테이블명
# STUDENT 테이블에서 NAME컬럼의 값들을 가져옵니다. SELECT NAME FROM STUDENT;
NAME
홍길동
김영희
김철수
  • SELECT 컬럼1, 컬럼2… FROM 테이블명
# STUDENT 테이블에서 NAME, ADDRESS, BIRTH 컬럼 값들을 가져옵니다. SELECT NAME, ADDRESS, BIRTH FROM STUDENT;
NAME
ADDRESS
BIRTH
홍길동
서울
1999.11.14
김영희
수원
2000.02.14
김철수
인천
1998.04.05
  • SELECT * FROM 테이블명
# STUDENT 테이블에 포함된 모든 컬럼의 값들을 가져옵니다. SELECT * FROM STUDENT;
NAME
STUDENT_NUM
ADDRESS
BIRTH
홍길동
1
서울
1999.11.14
김영희
2
수원
2000.02.14
김철수
3
인천
1998.04.05
  • SELECT * FROM 테이블명 WHERE 컬럼명 = 조건값
# STUDENT 테이블에서 NAME컬럼의 값이 '홍길동'인 모든 컬럼의 값을 가져옵니다. SELECT * FROM STUDENT WHERE NAME = '홍길동';
 
NAME
STUDENT_NUM
ADDRESS
BIRTH
홍길동
1
서울
1999.11.14
 

2.3MySQL과 Jupyter Notebook의 연동

  1. Anaconda Prompt 실행
  1. 코드 실행
아래의 코드를 복사하여 아나콘다 프롬프트에서 실행합니다.
pip install pymysql
  1. 주피터 노트북 실행 → 새 파일 열기
  1. pymysql 모듈 실행
import pymysql
  1. 변수에 값 넣기
host = '호스트명' port = 3307 username = '유저명' password = '비밀번호'
  1. MySQL과 연결하기
# 본인의 user name, password를 입력해준다. conn = pymysql.connect(host = host, port = port, user = username, password = password, charset='utf8')
connection은 파라미터로 받아가는 값들을 통해 파이썬과 SQL을 연결 시켜줍니다.
cur = conn.cursor()
커서(cursor)는 데이터베이스에 SQL 문을 실행하거나 실행된 결과를 돌려받는 통로입니다. 앞에서 연결한 연결자에 커서를 만들어야 합니다.
  1. 출력값 확인하기
    1. (입력값을 실행한 후, 아래와 같은 출력값이 나오면 연동 성공)
# 입력 cur # 출력 <pymysql.cursors.Cursor at 0x1cd2633d130>
# 입력 conn # 출력 <pymysql.connections.Connection at 0x1cd26323e50>
  1. 연동이 성공한 후에 DB를 생성합니다.
# DB생성하기 with conn: with conn.cursor() as cur: cur.execute('CREATE DATABASE TEST_DB') conn.commit()
  1. DB가 잘 생성되었는지 확인합니다.
# 생성된 DB확인하기 conn = pymysql.connect(host = host, port = 3307, user = username, password = password, charset='utf8') sql = 'SHOW DATABASES' with conn: with conn.cursor() as cur: cur.execute(sql) for data in cur: print(data)
notion imagenotion image
  1. 파이썬 내에서 쿼리 사용하기
conn = pymysql.connect(host = '127.0.0.1', port = 3307, user = username, password = password, charset='utf8') sql = "쿼리문" with conn: with conn.cursor() as cur: cur.execute(sql) conn.commit()
with 절을 사용하여 쿼리에 연결하면 with문 종료시점에 자동으로 연결을 종료시켜주기 때문에 close를 사용할 필요가 없습니다.