1. 다음과 같이 [학생성적 테이블]을 설계한다.
(테이블 개수는 1개 또는 여러개 상관없다)
학번,이름, 주소, 연락처, 학과, 입락년도, 과목명, 수강학기, 점수, 과목석차
데이터형 설정시 고민될때 |
숫자형 : 사칙연산(+,-,*,/)을 해서 의미가있는 값이 나오는 경우는 숫자형이 좋다
문자형 : 아니라면 문자열 ex) "010-0000-0000"
PRIMARY KEY 조건 및 유의사항 |
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")
Q1 MySQL 연동 예제(2) : 수정 (0) | 2020.10.07 |
---|---|
MySQL(2) : 예제 (0) | 2020.10.05 |
MySQL(1) : 기본 sql (0) | 2020.10.05 |
댓글 영역