상세 컨텐츠

본문 제목

Q1 MySQL 연동 예제(1)

DATABASE/MySQL -MySQL Workbench

by yeongs 2020. 10. 7. 10:25

본문

1. 다음과 같이 [학생성적 테이블]을 설계한다.

(테이블 개수는 1개 또는 여러개 상관없다)

학번,이름, 주소, 연락처, 학과, 입락년도, 과목명, 수강학기, 점수, 과목석차

데이터형 설정시 고민될때

숫자형 : 사칙연산(+,-,*,/)을 해서 의미가있는 값이 나오는 경우는 숫자형이 좋다

문자형  : 아니라면 문자열 ex) "010-0000-0000"

PRIMARY KEY 조건 및 유의사항
  1. 유일한 값
  2. NOT NULL 
  3. 업무상 가까운것을 체택 

2. 위 테이블을 MySQL Server에 만들고, 학생 2명을 각3과목씩 입력한다.

CREATE DATABASE studentGradeDB;
USE studentGradeDB;
CREATE TABLE studentTbl(
	studentNum 			INT NOT NULL PRIMARY KEY,   /* 학번 */
    studentName 		NCHAR(5) NOT NULL,          /* 이름 */
    studentAdress		NCHAR(20),					/* 주소 */	
    studentPhone 		CHAR(11) NOT NULL,			/* 연락처 */
    studentDepartment	NCHAR(20)NOT NULL,			/* 학과 */
    studentYear  		INT NOT NULL				/* 입학년도 */
);

CREATE TABLE studentGradeTbl(
	num	 				INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
	studentNum 			INT NOT NULL ,  			 /* 학번 */
    term				CHAR(6),					 /* 학기 */	
    subjectName			NCHAR(20) NOT NULL,			 /* 과목명 */
    subjectGrade		INT,						 /* 점수 */
    subjectRank			INT, 						 /* 과목석차 */	
    FOREIGN KEY (studentNum) REFERENCES studentTbl(studentNum)
);

USE studentGradeDB;
SHOW tables;

INSERT INTO studentTbl VALUES( 20200001,"이순신", "서울","01011112222","컴공" ,2020);
INSERT INTO studentTbl VALUES( 20200002,"장보고", "경기","01033334444","컴공" ,2020);
INSERT INTO studentGradeTbl VALUES( NULL,"20200001", "2020-1","구조",90 ,1);
INSERT INTO studentGradeTbl VALUES( NULL,"20200001", "2020-1","개론",90 ,1);
INSERT INTO studentGradeTbl VALUES( NULL,"20200001", "2020-1","실험",90 ,1);
INSERT INTO studentGradeTbl VALUES( NULL,"20200002", "2020-1","구조",60 ,2);
INSERT INTO studentGradeTbl VALUES( NULL,"20200002", "2020-1","개론",70 ,2);
INSERT INTO studentGradeTbl VALUES( NULL,"20200002", "2020-1","실험",80 ,2);

SELECT * FROM studentTbl;
SELECT * FROM studentGradeTbl;

3. Python에서 조회하는 코드를 작성

import pymysql

## 전역 변수 선언부
conn, cur = None, None
# conn : 교량 / cur : 트럭(데이터이동)

## 메인 코드부

#1. 서버와 교량을 연결 내부 윈도우 서버
conn = pymysql.connect(host = "192.168.56.101" , user = "winUser",password ="4321",
                       db="studentGradeDB")
# 내부 호스트
# conn = pymysql.connect(host = "127.0.0.1" , user = "root",password ="1234",
#                       db="hanbitDB", charset="utf8")

cur = conn.cursor() # 빈 트럭 준비

#2 물건(SQL) 준비 + 트럭에 실어서 부어 넣기
sql = "SElECT * FROM studentTbl"
cur.execute(sql);

#3. 돌아온 트럭(cur)에서 하나씩 꺼내기
while True:
    row = cur.fetchone() #한칸 꺼내
    if row == None: # 없으면 종료!
        break
    studentNum = row[0]
    studentName = row[1]
    studentAdress = row[2]
    studentPhone = row[3]
    studentDepartment = row[4]
    studentYear = row[5]

    print(studentNum, studentName, studentAdress, studentPhone,studentDepartment,studentYear)

#2 물건(SQL) 준비 + 트럭에 실어서 부어 넣기
sql = "SElECT * FROM studentGradeTbl"
cur.execute(sql);

#3. 돌아온 트럭(cur)에서 하나씩 꺼내기
while True:
    row = cur.fetchone() #한칸 꺼내
    if row == None: # 없으면 종료!
        break
    num = row[0]
    studentNum = row[1]
    term = row[2]
    subjectName = row[3]
    subjectGrade = row[4]
    subjectRank = row[5]

    print(num, studentNum, term, subjectName,subjectGrade,subjectRank)

# 끝. 정리하기
cur.close()
conn.close()
print("ok")

'DATABASE > MySQL -MySQL Workbench' 카테고리의 다른 글

Q1 MySQL 연동 예제(2) : 수정  (0) 2020.10.07
MySQL(2) : 예제  (0) 2020.10.05
MySQL(1) : 기본 sql  (0) 2020.10.05

관련글 더보기

댓글 영역