一、前言
? ? ? ? 該項目非常適合MySQL入門學習的小伙伴,博主提供了源碼、數(shù)據(jù)和一些查詢語句,供大家學習和參考,代碼和表設計有什么不恰當還請各位大佬多多指點。
所需環(huán)境
- ?MySQL可視化工具:navicat;
- ?數(shù)據(jù)庫:MySql 5.7/8.0等版本均可;
需求:?
?????學生選課系統(tǒng)主要完成某學校教務系統(tǒng)中選課功能:
- 學生信息管理
- 教師信息管理
- 課程信息管理
- 教室信息管理
- 選課管理?
備注:
- 每個學生可選多門課程,每門課程有多個學生。
- 每位教師教授一門課程。
- 每個班級有多個學生,每個學生對應一個班級。
????????其中:
????????????????學生包含以下屬性:學號、學生姓名、學生性別。
????????????????教師包含以下屬性:教工號、教師姓名、教師職稱。
????????????????課程包含以下屬性:課程號、課程名、課程學分。
????????????????教室包含以下屬性:班級編號、學生人數(shù)、班級名稱。
????????????????選課包含以下屬性:學生成績。
二、E-R圖
三、關系模式
?課程(課程號、課程名、課程學分、教工號)
教師(教工號、教師姓名、教師職稱)
選課(課程號、學號、成績)
學生(學號、學生姓名、學生性別、班級編號)
班級(班級編號、學生人數(shù)、班級名稱)
?備注:
????????下劃線為主鍵,紅色字為外鍵;
四、數(shù)據(jù)表的設計
表1:課程
字段 |
數(shù)據(jù)類型 |
長度 |
備注 |
|
課程號 |
varchar |
50 |
主鍵 |
|
課程名 |
varchar |
50 |
Not.null |
|
課程學分 |
int |
3 |
||
教工號 |
varchar |
50 |
外鍵 |
?表2:教師
字段 |
數(shù)據(jù)類型 |
長度 |
備注 |
|
教工號 |
varchar |
50 |
主鍵 |
|
教師姓名 |
varchar |
50 |
Not.null |
|
教師職稱 |
varchar |
50 |
?表3:學生
字段 |
數(shù)據(jù)類型 |
長度 |
備注 |
|
學號 |
varchar |
50 |
主鍵 |
|
學生姓名 |
varchar |
50 |
Not.null |
|
學生性別 |
varchar |
50 |
||
班級編號 |
varchar |
50 |
外鍵 |
表4:班級
字段 |
數(shù)據(jù)類型 |
長度 |
備注 |
|
班級編號 |
varchar |
50 |
主鍵 |
|
班級名稱 |
varchar |
50 |
Not.null |
|
學生數(shù)量 |
int |
5 |
表5:選課
字段 |
數(shù)據(jù)類型 |
長度 |
備注 |
|
學號 |
varchar |
50 |
主鍵 |
|
課程號 |
varchar |
50 |
主鍵 |
|
成績 |
int |
5 |
Not.null |
五、創(chuàng)建數(shù)據(jù)庫?
Create database 學生選課系統(tǒng) character set utf8 collate utf8_general_ci
-- 在新建查詢選擇前選擇數(shù)據(jù)庫
use 學生選課系統(tǒng)
?創(chuàng)建各實體表:
1. 老師
create table 老師
(
教工號 varchar(50) primary key,
教師姓名 varchar(50) not null,
教師職稱 varchar(50)
)
2. 班級
create table 班級
(
班級編號 varchar(50) primary key,
班級名稱 varchar(50) not null,
學生數(shù)量 int(5)
)
3. 課程
create table 課程
(
課程號 varchar(50) PRIMARY key,
課程名 varchar(50) not null,
課程學分 int(3),
教工號 char(5),
CONSTRAINT FK教工號 FOREIGN KEY (教工號) REFERENCES 老師(教工號)
)
4. 學生
create table 學生
(
學號 varchar(50) PRIMARY key,
學生姓名 varchar(50) not null,
學生性別 varchar(50),
班級編號 varchar(50),
CONSTRAINT FK 班級編號 FOREIGN KEY (班級編號) REFERENCES 班級(班級編號)
)
5. 選課
create table 選課
(
學號 varchar(50),
課程號 varchar(50),
成績 int(5) not null,
PRIMARY KEY(學號, 課程號)
)
插入數(shù)據(jù):
1. 老師?
INSERT INTO 老師 VALUES ('J001','wuping','教授');
INSERT INTO 老師 VALUES ('J002','zhangshuai','講師');
INSERT INTO 老師 VALUES ('J003','liguoqiang','副教授');
INSERT INTO 老師 VALUES ('J004','wangni','講師');
INSERT INTO 老師 VALUES ('J005','liubo','講師');
2. 班級?
INSERT INTO 班級 VALUES ('B001','軟件1班','30');
INSERT INTO 班級 VALUES ('B002','軟件2班','29');
INSERT INTO 班級 VALUES ('B003','軟件3班','31');
INSERT INTO 班級 VALUES ('B004','嵌入式1班','32');
INSERT INTO 班級 VALUES ('B005','嵌入式2班','33');
INSERT INTO 班級 VALUES ('B006','嵌入式3班','30');
3. 課程?
INSERT INTO 課程 VALUES ('K001','數(shù)據(jù)庫','4','J002');
INSERT INTO 課程 VALUES ('K002','java','4','J003');
INSERT INTO 課程 VALUES ('K003','python','6','J001');
INSERT INTO 課程 VALUES ('K004','英語','2','J005');
INSERT INTO 課程 VALUES ('K005','數(shù)學','8','J004');
4. 學生?
INSERT INTO 學生 VALUES ('X005','zhangsan','男','B002');
INSERT INTO 學生 VALUES ('X004','lisi','女','B003');
INSERT INTO 學生 VALUES ('X003','wangwu','男','B004');
INSERT INTO 學生 VALUES ('X002','liuyu','男','B005');
INSERT INTO 學生 VALUES ('X001','chenqi','男','B001');
INSERT INTO 學生 VALUES ('X006','wangxin','女','B001');
INSERT INTO 學生 VALUES ('X007','yangli','男','B002');
INSERT INTO 學生 VALUES ('X008','qinyan','女','B006');
5. 選課?
INSERT INTO 選課 VALUES ('X001','K002','82');
INSERT INTO 選課 VALUES ('X001','K003','78');
INSERT INTO 選課 VALUES ('X002','K005','90');
INSERT INTO 選課 VALUES ('X002','K003','74');
INSERT INTO 選課 VALUES ('X003','K001','66');
INSERT INTO 選課 VALUES ('X003','K002','75');
INSERT INTO 選課 VALUES ('X004','K005','95');
INSERT INTO 選課 VALUES ('X004','K004','83');
INSERT INTO 選課 VALUES ('X005','K001','75');
INSERT INTO 選課 VALUES ('X005','K004','87');
INSERT INTO 選課 VALUES ('X007','K001','79');
六、基礎查詢命令
1. 查看xxx表所有信息:
???select * from xxxx? *表示全部,查看xxx的全部數(shù)據(jù)
select * from 老師
2. 查詢表的某個或多個字段:
? select field1,field2…… from tablenname(表名)
select 學號,學生姓名 from 學生
3. 查詢滿足條件的信息:
??and滿足所有條件。or滿足其中任何一個條件就可以
select * from 學生 where 學生性別 ='男' and 班級編號 ='B002' and 學生姓名 = 'yangli'
![]()
4. 區(qū)間查詢:
??從選課中選取分數(shù)在80~90的(可取端點)
select * from 選課 where 成績 between 80 and 90
5. 模糊查詢:?
??在選課中查詢分數(shù)以9開頭的信息,%9%是查詢信息中含有9的。%表示模糊數(shù)據(jù)
select * from 選課 where 成績 like '9%'
?6. count()統(tǒng)計函數(shù):
? 從學生表格中統(tǒng)計B002班的有幾個
select count(*) from 學生 where 班級編號 ='B002'
7. sum()求和函數(shù) :
? 從選課表格中計算分數(shù)和。
select sum(成績) from 選課
8. avg()平均函數(shù):
? ?求所有學生的平均成績。
select avg(成績) from 選課
9. max()最大函數(shù)?:
??從選課表格中查詢課程號K003課的最高分。
select max(成績) from 選課 where 課程號 ='K003'
10. min()最小值函數(shù):
? 從選課表格中查詢課程號K003課的最低分
select min(成績) from 選課 where 課程號 ='K003'
七、答疑解惑?
????????代碼有問題或需要其他的查詢語句,都可以隨時評論留言或聯(lián)系博主QQ。
????????還多請各位小伙伴多多點贊支持,你們的支持是我最大的動力。
博主QQ:1196094293文章來源:http://www.zghlxwxcb.cn/news/detail-844515.html
謝謝各位的支持~~文章來源地址http://www.zghlxwxcb.cn/news/detail-844515.html
到了這里,關于數(shù)據(jù)庫-MySQL 實戰(zhàn)項目——學生選課系統(tǒng)數(shù)據(jù)庫設計與實現(xiàn)(附源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!