학습 날짜: 2025.07.31
오늘부터는 SQL을 공부한다. 우선 MySQL을 설치하고, 문법 종류 및 작성법 부터 가장 기초적인 table 만들기와 select 문을 사용해보았다.
MySQL
🔧 SQL 문법 종류
| 분류 | 설명 |
| DDL | Data Definition Language (데이터 정의어) 테이블, 인덱스, 뷰 등의 구조를 정의할 때 사용 예시: CREATE, DROP, ALTER |
| DML | Data Manipulation Language (데이터 조작어) 테이블에 데이터를 삽입, 수정, 삭제, 조회할 때 사용 예시: INSERT, UPDATE, DELETE, SELECT |
| DCL | Data Control Language (데이터 제어어) 사용자 권한을 부여하거나 회수할 때 사용 예시: GRANT, REVOKE |
| TCL | Transaction Control Language (트랜잭션 제어어) 데이터 변경을 하나의 작업 단위로 관리할 때 사용 예시: COMMIT, ROLLBACK, SAVEPOINT |
🔨 SQL 작성 순서 및 처리순서

Schemas 만들기
- 이름 설정
- Charset을 utf8mb4로 설정
- Collation을 utf8mb4_bin으로 설정
- utf8mb4: 영어, 한글, 숫자, 임티도 가능
테이블 생성
- Schema 생성 후 → Table 우클릭 → create table 선택
- 아래와 같이 열 이름과 속성 정해주고, Apply 누르면 끝!

| 열 속성 특징 |
||
| 속성 | 이름 | 설명 |
| PK | Primary Key | 테이블에서 각 행을 고유하게 식별하는 컬럼중복 불가, NULL 불가 (→ 항상 NN과 함께 사용됨)자동으로 인덱스 생성 |
| UQ | Unique | 중복 불가자주 조회하는 컬럼에 사용자동으로 Unique 인덱스 생성 |
| AI | Auto Increment | 자동 증가INT형 컬럼에 사용일반적으로 PK 컬럼에 적용 |
| NN | Not Null | NULL 값을 허용하지 않음 |
- 코드로 테이블 생성하기
-- table 생성
Create table staff(
employee_id varchar(10),
employee_name varchar(10),
gender varchar(5),
birth_date date,
department_id varchar(20),
position varchar(20)
)
-- insert value
Insert into staff value("A001", "권지수", "F", "1988-02-03", "HR팀", "과장");
Insert into staff value("A002", "이철희", "M", "1995-10-23", "HR팀", "사원");
Insert into staff value("A003", "김미나", "F", "1997-11-08", "마케팅팀", "대리");
Insert into staff value("A004", "신승민", "M", "2000-03-03", "마케팅팀", "사원");
Select문
- 기능적인 명령어로는 *(all), Alias(as), Distinct가 있다.
- as는 별칭 설정, distinct는 중복제거 기능이다.
--select문 형식
Select * from staff;
select employee_id, employee_name, birth_date
From staff;
-- AlIAS(as)
-- select column name as nickname from table name
select employee_id as id
from staff;
select employee_id, birth_date as dob from staff;
-- select Distinct column name form table name -> 중복값 제거
select distinct gender
from staff;
SQL 함수
- 여기에서는 built-in으로 갖고 있는 함수를 의미한다.
문자열함수
문자 데이터와 관련한 함수이며, 주로 사용하는 함수는 substring, length(len), replace, ifnull(isnull)이 있다.
-- SUBSTRING: 문자열 중간 N번째 자리부터 지정한 개수만큼 문자를 가져옴
select product_id, substring(product_id, 6, 2) as 함수적용결과
from apparel_product_info;
-- Len -> Length: 문자열 길이를 구함
select category1, category2, concat(category1, '>', category2) as 함수적용결과
from apparel_product_info;
-- REPLACE: 특정 문자를 찾아 다른 문자로 변경
select product_id, Replace(product_id, 'F', 'A') as 함수적용결과
from apparel_product_info;
-- ISNULL -> IFNULL: 문자열 값이 Null값인 경우 특정 문자로 보여줌
SELECT category2, IFNULL(category2, '정보없음') as 함수적용결과
FROM apparel_product_info;
숫자함수
숫자 데이터와 관련한 함수이며, 주로 사용하는 함수는 abs(절댓값), ceiling(올림), floor(버림), round(반올림)이다.
-- ABS
select sales_amount, abs(sales_amount) as 함수적용결과 from sales;
-- CEILING
select sales_amount_usd, ceiling(sales_amount_usd) as 함수적용결과
from sales;
-- FlOOR
select sales_amount_usd, floor(sales_amount_usd) as 함수적용결과
from sales;
-- ROUND
select sales_amount_usd
, Round(sales_amount_usd, 1) as 함수적용결과1
, Round(sales_amount_usd, 0) as 함수적용결과2
, Round(sales_amount_usd, -1) as 함수적용결과3
from sales;
기타 문법
- - - : 코드 앞에 넣으면 주석 처리를 의미
- /* */: 범위 주석
- * : all 을 의미
- date type 형식: YYYY-MM-DD
Python과 MySQL 연동 실습 (with PyCharm)
PyCharm에서 MySQL과 연동하여 테이블을 생성하고 데이터를 수정하는 실습을 진행했다.
1. Terminal에 Python에서 MySQL 서버와 연결하기 위한 라이브러리를 설치
pip install mysql-connector-python
2. 패키지 import
import mysql.connector
3.MySQL 서버에 연결
- mysql.connector 의 connect함수를 이용해 연결할 MySQL을 정보를 가져온다.
- 이때, MySQL의 기본 포트 번호는 3306 이다.
conn = mysql.connector.connect(
host = "127.0.0.1", # or "localhost",
port = 3306,
user = "root",
password = "0000",
database = "igrowth"
)
4. Cursor 객체 생성 (파일 핸들러 역할)
cursor = conn.cursor()
5. SQL 실행 및 결과 조회
- execute()로 SQL 명령을 실행하고, fetchall()로 결과 전체를 가져온다.
# read
strSQL = "select * from staff"
cursor.execute(strSQL) # 바로 날라가 실행되는 것은 아님. 실행 준비 정도로 생각하면 됨
# 결과 가져오기(select된 결과를 list로 가져옴)
rows = cursor.fetchall() # list로 가져옴
6. 데이터 수정 및 반영
- execute()와 commit() 실행하여 수정사항을 반영한다.
- commit()을 생략하면 변경 사항이 DB에 저장되지 않는다.
# write (recent)
strSQL = "insert into apparel_product_info (product_id, category1, category2, product_name, price) "
strSQL += "Values (%s, %s, %s, %s, %s)"
values = ('JK_23FW_08', '아우터','재킷','레드 시퀀스 재킷', 20000)
cursor.execute(strSQL, values) # 실행 준비
conn.commit() # 반영하기
'LG U+ Why Not SW Camp 8기 > 학습 로그' 카테고리의 다른 글
| 공부일지 #16 | MySQL: ORDER BY, 서브쿼리, JOIN 개념 및 사용 이유 (4) | 2025.08.05 |
|---|---|
| 공부일지 #15 | MySQL 폭풍 정리: 함수·연산자·CASE부터 GROUP BY까지 (5) | 2025.08.03 |
| 공부 일지 #13 | 미니 토이 프로젝트-Timer & Stopwatch (2) | 2025.07.31 |
| 공부 일지 #12 | tkinter로 계산기 만들기 (2) | 2025.07.30 |
| 공부 일지 #11 | Python Files (3) | 2025.07.30 |