数据库实验Word下载.docx
- 文档编号:16732419
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:28
- 大小:564.26KB
数据库实验Word下载.docx
《数据库实验Word下载.docx》由会员分享,可在线阅读,更多相关《数据库实验Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
size=5mb,
filegrowth=1mb,
maxsize=unlimited
)
logon
(
name=students_log,
\Data\students.ldf'
size=2mb,filegrowth=10%,
maxsize=20mb
执行后在数据库下面就创建了一个名为students的数据库.如图;
具体操作程序见课本P169–p172.
createtableteacher(//创建教师表
Tnochar(7)primarykey,
Tnamechar(10)notnull,
Tsexchar
(2)check(Tsex='
男'
orTsex='
女'
),
Birthdaysmalldatetime,
Deptchar(20),
Sidchar(18)unique(身份证号)
createtableCourse(//创建课程表
Cnochar(10)primarykey,
Cnamechar(20)notnull,
CreditsmallintCheck(Credit>
0),
Propertyschar(10)default'
必修'
)
createtableTeaching(//创建授课表
Tnochar(7)notnull,
Cnochar(10)notnull,
Hoursintcheck(Hours>
primarykey(Tno,Cno),
foreignkey(Tno)referencesteacher(Tno),
foreignkey(Cno)referencesCourse(Cno)
此时在students数据库表页面下就创建了3张表。
如图:
通过单击右键各个表的修改就可以将表的属性进行修改等操作。
(1)添加
在授课表添加一类别:
列名:
Type,类型:
char(4).
altertableTeaching
addtypechar(4)
此时在Teaching表中就多了一列type.
(2)修改
将授课表中的Type列类型改为char(8)
altertableTeaching
altercolumntypechar(8)
(3)删除
将课程表中的property列删除
altertable
dropcolumnProperty
(1)在Teacher表的Tname列上建立一个按降序排列的非聚集索引,名为Idx_Tname
createINDEXIdx_Tname
ONteacher(TnameDESC)
insertintostudentvalues('
9512101'
'
李勇'
19,'
计算机系'
9512102'
刘晨'
20,'
9512103'
王敏'
9521101'
张立'
22,'
信息系'
9521102'
吴宾'
21,'
9521103'
张海'
9531101'
钱小平'
18,'
数学系'
9531102'
王大力'
insertintoCoursevalues('
c01'
计算机文化学'
3'
1'
c02'
VB'
2'
c03'
计算机网络'
4'
7'
c04'
数据库基础'
5'
6'
c05'
高等数学'
8'
c06'
数据结构'
insertintoSCvalues('
90'
86'
NULL)
78'
66'
82'
75'
92'
50'
68'
80'
95'
85'
此时各个表里面都存入了各项数据
(1)查询计算机系的学生学号,姓名年龄
createviewstudent1(Sno,Sname,Sage)
as
selectSno,Sname,Sage
fromstudentwhereSdept='
(2)查询计算机系的学生的姓名,性别,所选课程号和成绩
createviewstudent3(Sname,Ssex,Cno,Grade)
selectstudent.Sname,Ssex,Course.Cno,Grade
fromstudentjoinSConstudent.Sno=SC.Sno
joinCourseonSC.Cno=Course.Cno
whereSdept='
(3)
查询计算机系选修VB课程的学生的姓名,性别和成绩。
createviewstudent4(Sname,Ssex,Grade)
selectstudent.Sname,Ssex,Grade
andCname='
2.存储的基本操作——查询
(1)查询考试平均成绩超过指定分值的学生学号和平均成绩。
createprocp_avg
@gradeint
selectSno,avg(Grade)as平均分fromSC
groupbySno
havingavg(Grade)>
@grade
execp_avg70
(2)查询指定系的学生中,选课门数最多的学生的选课门数和平均成绩,要求系为输入参数,选课门数和平均成绩用输出参数返回。
createprocp_NN
@deptchar(10),
@C_numintoutput,
@G_avgintoutput
selecttop2count(Cno)as选课总数,avg(Grade)as平均分fromStudentsjoinscons.sno=sc.sno
whereSdept=@dept
groupbys.sno
orderbycount(Cno)desc
declare@C_numint,@G_avgint
execp_NN'
@C_numoutput,@G_avgoutput
(3).删除指定学生的指定课程的修课记录,其中学号和课程号为输入参数
createprocp_de
@snochar(10),
@cnochar(10)
deletefromscwhereSno=@snoandCno=@cno
(4)修改指定课程的开课学期。
输入参数为:
课程号和修改后的开课学期,开课学期的默认值为2。
如果指定的开课学期不在1~8范围内,则不进行修改。
createprocp_up
@semesterint=2,
updateCoursesetSemester=4whereSemesterin(
selectSemesterfromCourse
whereCno='
and((Semester>
1)and(Semester<
8))
(5)利用SSMS查看Student库中的存储过程
(6)修改第1题
(1)
createprocp_S_S_A
@deptchar(10)
selectSC.Sno,count(SC.Cno)as选课总数,sum(Semester)as总学分,avg(Grade)as平均分
fromStudentsjoinSCons.Sno=SC.SnojoinCourseconSC.Cno=c.Cno
groupbySC.Sno
execp_S_S_A'
4.触发器
(1)限制考试成绩在1-100之内
createtriggertri_Check_Grade
onSCafterinsert,update
ifexists(select*frominsertedwhereGradenotbetween0and100)
rollback
(2)、限制学生所在系的取值必须在{计,信,物,数}范围内
createtriggertri_sdept
onStudentafterinsert,update
ifexists(select*fromStudent
whereSdeptnotin('
物理系'
))
Rollback
(3)限制学生的选课总门数不能超过8门。
createtriggertri_SelectC
ifexists(selectcount(Cno)fromSC
groupbySno
havingcount(Cno)>
8)
(4)限制不能删除考试成绩不及格学生的考试记录.
createtriggertri_Delete
onSCafterdelete
ifnotexists(select*frominsertedwhereGrade<
60)
rollback
print'
不能删除~~'
(4)
利用12.3创建的工作表和职工表。
(1)、限制职工的基本工资和浮动工资之和必须>
=2000
createtriggertri_Salary
on职工表afterinsert,update
ifnotexists(select*from职工表ajoin工作表b
ona.工作号=b.工作号
where(基本工资+浮动工资)>
=2000)
rollback
else
太抠了~~'
(2)、限制工作表中最高工资不能低于最低工资的1.5倍
createtriggertir_Max_Salary
on工作表insteadofupdate
ifexists(select*frominsertedwhere最高工资>
最低工资*1.5)
update工作表set最高工资=(
select最高工资frominsertedi
where工作表.工作号=i.工作号)
最高工资太少了吧~~~'
(3)、1500一下的不能删
各个按钮实现的代码:
usingSystem;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Linq;
usingSystem.Data.SqlClient;
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidcharu_Click(objectsender,EventArgse)
stringconStr="
DataSource=JILECHANG-PC;
InitialCatalog=student;
PersistSecurityInfo=True;
UserID=sa;
password=000000"
;
SqlConnectionCon=newSqlConnection(conStr);
Con.Open();
SqlTransactionmytrans=Con.BeginTransaction();
try
stringcmdstr="
"
+this.TextBox1.Text+"
'
+this.TextBox2.Text+"
+this.TextBox4.Text+"
"
+this.TextBox3.Text+"
+this.TextBox5.Text+"
)"
SqlCommandcmd=newSqlCommand(cmdstr,Con);
cmd.Transaction=mytrans;
cmd.ExecuteNonQuery();
mytrans.Commit();
Response.Write("
<
script>
alert('
成功'
)<
/script>
);
catch(Exceptionex)
mytrans.Rollback();
失败'
finally{
Con.Close();
protectedvoidshanchu_Click1(objectsender,EventArgse)
stringcmdstr1="
deletefromstudentwhereSno='
SqlCommandcmd=newSqlCommand(cmdstr1,Con);
finally
protectedvoidxiugai_Click(objectsender,EventArgse)
stringcmdstr2="
updatestudentsetSname='
whereSno='
+this.TextBox1.Text+"
SqlCommandcmd=newSqlCommand(cmdstr2,Con);
);
}
界面:
成功的提示;
在数据库中的查询:
插入:
删除数据库中的查询结果:
修改:
2.1实现的源代码
protectedvoidButton1_Click(objectsender,EventArgse)
stringconstr="
password=000000"
SqlConnectioncon=newSqlConnection(constr);
con.Open();
select*from"
+this.TextBox1.Text;
SqlDataAdaptersda=newSqlDataAdapter(cmdstr,con);
DataSetda=newDataSet();
sda.Fill(da);
if(da.Tables[0].Rows.Count==0)
没有找到相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验