阶段项目:学生信息管理系统数据库设计
目錄
- 問題描述:
- 一、后臺數據庫的設計
- 1)設計數據庫
- 2)插入數據
- 3)查詢數據
- 4)修改數據
- 5)管理數據
- 1.導出數據到各種異構數據源、導出腳本
- 2.附加和分離數據庫
- 二、前端界面的開發(后期我們可以用dNet開發)
- 總結
問題描述:
? ? ? ?上海某高校擬開發一套高校信息管理系統,該系統包括學生檔案管理、學生成績管理、教員信息管理、教務排課等模塊,實現學生檔案錄入、修改、查詢,成績錄入、修改、查詢,教務排課管理等功能。
? ? ? ?開發此模塊涉及兩大部分:后臺數據庫的設計、前端界面的開發
一、后臺數據庫的設計
? ? ? ?為了簡化起見,我們暫討論“學生成績管理”子模塊,該模塊具有成績輸入,成績查詢,名次排序,分數統計等功能。
? ? ? ? 現要求對“學生成績管理”子模塊進行數據庫的設計并實現,數據庫保存在:E\MyApp目錄下,文件增長率為10% 。
1)設計數據庫
use master if exists(select * from sysdatabases where name='student_manage') --判斷student_manage庫是否存在,若存在則先刪除drop database student_managecreate database student_manage --創建數據庫student_manage on primary ( name='student_manage', filename='E\MyApp\student_manage.mdf', size=3, filegrowth=10% ) log on ( name='student_manage_log', filename='E\MyApp\student_manage.ldf', size=2, filegrowth=10% )--創建學生信息表 use student_manage create table stuInfo(stuName varchar(10) not null, stuNo varchar(20) not null, stuSex varchar(5) not null, stuAge int not null, stuSeat int not null, stuAddress text null )--創建學生成績表 create table stuMarks(examNo varchar(15) not null, stuNo varchar(20) not null, writtenExam int null, labExam int null ) --創建約束 alter table stuInfo add constraint pk_stuName primary key(stuName) alter table stuInfo add constraint ck_stuNo check (stuNo like 's253[0-9][0-9]') alter table stuInfo add constraint ck_stuSex check (stuSex in ('男','女')) alter table stuInfo add constraint df_stuSex default '男' for stuSex alter table stuInfo add constraint ck_stuAge check (stuAge between 15 and 50) alter table stuInfo add constraint ck_stuSeat check (stuSeat between 0 and 30) alter table stuInfo add constraint df_stuAddress default '地址不詳' for stuAddressalter table stuMarks add constraint uq_examNo unique (examNo) alter table stuMarks add constraint ck_examNo check (examNo like 'E200507[0-9][0-9][0-9][0-9]') alter table stuMarks add constraint df_writtenExam default 0 for writtenExam alter table stuMarks add constraint ck_writtenExam check (writtenExam between 0 and 100) alter table stuMarks add constraint df_labExam default 0 for labExam alter table stuMarks add constraint ck_labExam check (labExam between 0 and 100)2)插入數據
insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress) values('張秋麗','s25301','男',18,2,'北京海淀') insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat) values('李文才','s25302','男',31,5) insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress) values('李斯文','s25303','女',22,3,'河南洛陽') insert into stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress) values('歐陽俊雄','s25304','男',28,7,'新疆克拉瑪依')insert into stuMarks(examNo,stuNo,writtenExam,labExam) values('E2005070001','s25301',80,58) insert into stuMarks(examNo,stuNo,writtenExam) values('E2005070002','s25302',50) insert into stuMarks(examNo,stuNo,writtenExam,labExam) values('E2005070003','s25303',97,82)3)查詢數據
1.查詢兩表的數據
select*from stuInfo select*from stuMarks2.查詢男學員名單
select *from stuInfo where stuSex='男'3.查詢筆試成績優秀的學員情況(成績在75~100之間)
Select stuName,stuInfo.stuNo,stuSex,stuAge,stuSeat,stuAddress,examNo,writtenExam,labExam from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo where writtenExam between 75 and 1004.查詢參加本次考試的學員成績,包括學員姓名,筆試成績,機試成績
select stuName,writtenExam,labExam from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo5.統計筆試考試平均分和機試考試平均分
select avg(writtenExam)as '筆試平均分',avg(labExam)as'機試平均分' from stuMarks6.統計參加本次考試的學員人數
select count(examNo)as'參加考試人數' from stuMarks7.查詢沒有通過考試的人數(筆試或機試小于60分)
select count(examNo)as'未通過考試人數' from stuMarks where writtenExam<60 or labExam<608.查詢學員成績,顯示學號,筆試成績,機試成績,平均分
select stuNo,writtenExam,labExam,(writtenExam+labExam)/2as avgExam from stuMarks9.排名次(按平均分從高到低排序),顯示學號、平均分
select stuNo,(writtenExam+labExam)/2as avgExam from stuMarks order by avgExam desc10.排名次(按平均分從高到低排序),顯示姓名,筆試成績,機試成績,平均分
select stuName,writtenExam,labExam,(writtenExam+labExam)/2as avgExam from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo order by avgExam desc11.根據平均分,顯示前兩名信息,包括姓名、筆試成績、機試成績、平均分
select top 2 stuName,writtenExam,labExam,(writtenExam+labExam)/2as avgExam from stuInfo join stuMarks on stuInfo.stuNo=stuMarks.stuNo order by avgExam desc4)修改數據
筆試成績都提5分
update stuMarks set writtenExam=writtenExam+5 select * from stuMarks100分封頂(加分后超過100分的,按100分計算)
update stuMarks set writtenExam=100 where writtenExam>100查看修改后的數據
select * from stuMarks5)管理數據
1.導出數據到各種異構數據源、導出腳本
1.1 在SQL Server數據庫之間進行數據導入導出
可以使用select into語句導出數據:
? ? ? ? 在SQL Server中使用最廣泛的就是通過select into語句導出數據,select into語句同時具備兩個功能:
? ? ? ?①根據select后跟的字段以及into后面跟的表名建立空表(如果select后是*, 空表的結構和from所指的表的結構相同);
? ? ? ? ②將select查出的數據插入到這個空表中。在使用select into語句時,into后跟的表必須在數據庫不存在,否則出錯。
還可以使用insert into 和 update插入和更新數據
1.2 使用opendatasource和openrowset在不同類型的數據庫之間導入導出數據
? ? ? ?在異構的數據庫之間進行數據傳輸,可以使用SQL Server提供的兩個系統函數opendatasource和openrowset,其中opendatasource可以打開任何支持OLE DB的數據庫,并且可以將opendatasource做為select、updte、insert和delete后所跟的表名。
2.附加和分離數據庫
附加數據庫:
選中數據庫,然后鼠標右擊,選擇【附加】
然后點【添加】,找到數據庫保存的路徑,然后確定即可
分離數據庫:
選中要分離的數據庫,鼠標右擊
【任務】—【分離】
勾選要分離的數據庫,再確定即可
二、前端界面的開發(后期我們可以用dNet開發)
略~~~
總結
通過本次項目案例練習了:
? ? ? ?在SQL Server Management Studio中進行常用的數據庫操作
? ? ? ?編寫SQL語句執行增、刪、改、查操作
鞏固的知識:
? ? ? ?數據庫的常用操作:建庫、建表、加約束、建關系
? ? ? ?常用的約束類型:主鍵、外鍵、非空、默認值、檢查約束
? ? ? ?insert 語句: Insert into 表名(字段1,字段2,…) values (值1, 值2,…)
? ? ? ?update語句: Update 表名 set 字段=值 where …
? ? ? ?條件查詢:select …from 表名 where …
? ? ? ?排序:select …from 表名 order by …
? ? ? ?Top語句: select top 2….from 表名…
? ? ? ?統計函數:select avg( …) as 平均分 ….
? ? ? ?選擇查詢: select ….where labExam between 70 and 90
? ? ? ?內部連接:select …from 表1 inner jion 表2 …
總結
以上是生活随笔為你收集整理的阶段项目:学生信息管理系统数据库设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python数模笔记-Sklearn(2
- 下一篇: 隐式形状模型