[20250213] 데브옵스 - DBMS 2
수업 목표
- SQL 문장의 문법을 이해하고 코드를 작성할 수 있다.
- 조인 문법을 이해하고 코드를 작성할 수 있다.
- MySQL을 사용하여 데이터베이스에 연결하고 테이블을 생성할 수 있다.
- MySQL을 사용하여 데이터를 삽입, 조회, 수정, 삭제할 수 있다.
1. SQL 문장
DML
- SELECT : 테이블이나 뷰에 있는 데이터를 조회
- INSERT : 데이터를 신규로 생성
- UPDATE : 기 생성된 데이터를 수정
- DELETE : 데이터 삭제
TCL
- COMMIT : 변경된 데이터를 최종 적용
- ROLLBACK : 변경된 데이터를 적용하지 않고 이정 상태로 되돌림
INSERT
- 새 데이터를 입력할 때 사용하는 구문
- INSERT INTO : 새로운 데이터를 추가하기 위한 테이블의 컬럼 지정
* 컬럼 목록을 명시적으로 지정하는 것을 권장 (DEFAULT 값 활용 가능)
- VALUES : 테이블 각 컬럼에 추가할 데이터 값
* 괄호 안의 값 순서와 타입이 테이블명 괄호 안 컬럼의 순서, 타입과 일치해야 함
- SELECT 문 : VALUES 절에 값을 명시하는 대신 조회된 내용을 사용
* 테이블명 괄호 안의 커럼 순서와 타입과 동일해야 함
-- 기본 구문
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...)
-- 컬럼 생략 (모든 컬럼 대상)
INSERT INTO 테이블명
VALUES (값1, 값2, ...)
-- INSERT~SELECT 형태
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
SELECT 문;
SELECT
- 테이블 또는 뷰에 있는 데이터 선택(조회)에 사용
SELECT 컬럼명 -- 선택하고자 하는 컬럼명, 모든 컬럼은 *
FROM 테이블명 -- 선택할 테이블이나 뷰 명
WHERE 조건 -- 선택 조건, 여러 조건 기술 시 AND OR로 연결
ORDER BY 컬럼명; -- 컬럼에 따라 정렬
UPDATE
- 테이블에 있는 기존 데이터를 수정하는 문장
UPDATE 테이블명 -- 업데이트 대상 테이블명
SET 컬럼1 = 변경값1, -- 변강하고자 하는 컬럼과 그 값. 콤마로 분리
컬럼2 = 변경값2,
...
WHERE 조건; -- 특정 조건에 맞는 데이터만 변경
DELETE
- 테이블에 있는 데이터를 삭제하는 문장
DELETE FROM 테이블명 -- 삭제하고 싶은 데이터가 포함된 대상 테이블명 명시
WHERE 조건 -- 삭제 조건
COMMIT
- 변경한 데이터를 데이터베이스에 최종적으로 반영
- 기본적으로 자동 커밋 (AUTOCOMMIT) 설정
COMMIT; -- 명령어
SELECT @@AUTOCOMMIT; -- AUTOCOMMIT 여부 확인
SET AUTOCOMMIT = 1 -- 또는 0. 1: 설정, 0: 일시적 해제
ROLLBACK
- 변경한 데이터를 변경 전 상태로 되돌림
- ROLLBACK; 으로 실행
SAVEPOINT
- 특정 시점으로 롤백할 수 있도록 저장점을 설정
- SAVEPOINT 저장점_이름; 으로 실행
2. 조인
- 테이블 간의 관계를 잇는 방법으로 두 개 이상의 테이블에서 데이터를 결합하여 조회할 때 사용함
조인의 종류
- INNER JOIN : 두 테이블에서 일치하는 데이터만 반환
- LEFT JOIN (LEFT OUTER JOIN)
- 왼쪽 테이블의 모든 행과 일치하는 오른쪽 테이블의 데이터를 반환
*왼쪽에 있는 걸 기준으로 합침
- RIGHT JOIN (RIGHT OUTER JOIN)
- 오른쪽 테이블의 모든 행과 일치하는 왼쪽 테이블의 데이터를 반환
*오른쪽에 있는 걸 기준으로 합침
- FULL JOIN (FULL OUTER JOIN)
- 두 테이블의 모든 행을 반환 (MySQL에서는 지원하지 않아 UNION을 사용함)
* 있든 없든 합침
- CROSS JOIN : 두 테이블의 모든 행을 조합한 결과를 반환
- SELF JOIN : 같은 테이블을 자기 자신과 조인
-- INNER JOIN
SELECT A.컬럼명, B.컬럼명
FROM 테이블A AS A
INNER JOIN 테이블B AS B
ON A.공통컬럼 = B.공통컬럼
-- LEFT JOIN
SELECT A.컬럼명, B.컬럼명
FROM 테이블A AS A -- 왼쪽 테이블
LEFT JOIN 테이블B AS B -- 오른쪽 테이블
ON A.공통컬럼 = B.공통컬럼
-- RIGHT JOIN
SELECT A.컬럼명, B.컬럼명
FROM 테이블A AS A -- 왼쪽 테이블
RIGHT JOIN 테이블B AS B -- 오른쪽 테이블
ON A.공통컬럼 = B.공통컬럼
-- SELF JOIN
SELECT A.컬럼명, B.컬럼명
FROM 테이블A AS A
JOIN 테이블B AS B
ON A.공통컬럼 = B.공통컬럼
3. 파이썬 DB 연동
- MySQL Connector 모듈 설치
- pip install pymysql
- import pymysql
import pymysql
# MySQL 서버에 연결
conn = pymysql.connect( # Connection class 객체 생성
host="localhost", # MySQL 서버 주소 (로컬인 경우 'localhost')
user="root", # MySQL 사용자명
password="password", # MySQL 비밀번호
database="exampledb", # 사용할 데이터베이스 명
charset='utf8mb4', # UTF-8의 확장 버전
# DictCursor 클래스: sql 구문 실행 후, 조회된 결과를 딕셔너리 형태로 반환
cursorclass=pymysql.cursors.DictCursor
)
cursor = conn.cursor() # cursor 함수 객체 생성
# 현재 선택된 데이터베이스 확인
cursor.execute("SELECT DATABASE()")
print("현재 데이터베이스:", cursor.fetchone())
conn.commit() # 변경사항 저장
conn.close()