数据库实验.docx
- 文档编号:3826168
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:28
- 大小:564.26KB
数据库实验.docx
《数据库实验.docx》由会员分享,可在线阅读,更多相关《数据库实验.docx(28页珍藏版)》请在冰豆网上搜索。
数据库实验
数据库原理及应用
Sqlserver实验报告
报告通过对数据库各个方面的基本操作,让初学者对sqlserver有了很好的了解并可以加以应用。
姓名:
纪乐昌学号:
090741班级:
计093
2011/10/26
目录
第一次实验数据库的基本操作
1.用图形化方式和create语句创建数据库。
2.分离和附加数据库的基本操作。
3.用create语句创建基本表。
4.用sql语句修改表的基本操作。
5.索引的建立及查询
6.将数据插入表的基本操作
7.视图的基本操作
第二次实验存储的基本操作
1.存储的基本操作——查询
2.含变量的存储操作
3.含多个变量的存储操作
4,触发器
第三次实验asp访问数据库
1.插入,删除,修改在IE中访问数据库。
2.GridView控件的使用
3.存储过程的调用
4.GridView控件的应用
第一次实验数据库的基本操作
1.用图形化方式和create语句创建数据库。
createdatabasestudents
onprimary
(
name=students,
filename='E:
\Data\students.mdf',
size=5mb,
filegrowth=1mb,
maxsize=unlimited
)
logon
(
name=students_log,
filename='E:
\Data\students.ldf',
size=2mb,filegrowth=10%,
maxsize=20mb
)
执行后在数据库下面就创建了一个名为students的数据库.如图;
2.分离和附加数据库的基本操作。
具体操作程序见课本P169–p172.
3.用create语句创建基本表。
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>0),
primarykey(Tno,Cno),
foreignkey(Tno)referencesteacher(Tno),
foreignkey(Cno)referencesCourse(Cno)
)
此时在students数据库表页面下就创建了3张表。
如图:
通过单击右键各个表的修改就可以将表的属性进行修改等操作。
4.用sql语句修改表的基本操作。
(1)添加
在授课表添加一类别:
列名:
Type,类型:
char(4).
altertableTeaching
addtypechar(4)
此时在Teaching表中就多了一列type.
(2)修改
将授课表中的Type列类型改为char(8)
altertableTeaching
altercolumntypechar(8)
(3)删除
将课程表中的property列删除
altertable
dropcolumnProperty
5.索引的建立及查询
(1)在Teacher表的Tname列上建立一个按降序排列的非聚集索引,名为Idx_Tname
createINDEXIdx_Tname
ONteacher(TnameDESC)
6.将数据插入表的基本操作
insertintostudentvalues('9512101','李勇','男',19,'计算机系')
insertintostudentvalues('9512102','刘晨','男',20,'计算机系')
insertintostudentvalues('9512103','王敏','男',20,'计算机系')
insertintostudentvalues('9521101','张立','男',22,'信息系')
insertintostudentvalues('9521102','吴宾','男',21,'信息系')
insertintostudentvalues('9521103','张海','男',20,'信息系')
insertintostudentvalues('9531101','钱小平','男',18,'数学系')
insertintostudentvalues('9531102','王大力','男',19,'数学系')
insertintoCoursevalues('c01','计算机文化学','3','1')
insertintoCoursevalues('c02','VB','2','3')
insertintoCoursevalues('c03','计算机网络','4','7')
insertintoCoursevalues('c04','数据库基础','5','6')
insertintoCoursevalues('c05','高等数学','8','2')
insertintoCoursevalues('c06','数据结构','5','4')
insertintoSCvalues('9512101','c01','90')
insertintoSCvalues('9512101','c02','86')
insertintoSCvalues('9512101','c06',NULL)
insertintoSCvalues('9512102','c02','78')
insertintoSCvalues('9512102','c04','66')
insertintoSCvalues('9521102','c01','82')
insertintoSCvalues('9521102','c02','75')
insertintoSCvalues('9521102','c04','92')
insertintoSCvalues('9521102','c05','50')
insertintoSCvalues('9521103','c02','68')
insertintoSCvalues('9521103','c06',NULL)
insertintoSCvalues('9531101','c01','80')
insertintoSCvalues('9531101','c05','95')
insertintoSCvalues('9531102','c05','85')
此时各个表里面都存入了各项数据
7.视图的基本操作
(1)查询计算机系的学生学号,姓名年龄
createviewstudent1(Sno,Sname,Sage)
as
selectSno,Sname,Sage
fromstudentwhereSdept='计算机系'
(2)查询计算机系的学生的姓名,性别,所选课程号和成绩
createviewstudent3(Sname,Ssex,Cno,Grade)
as
selectstudent.Sname,Ssex,Course.Cno,Grade
fromstudentjoinSConstudent.Sno=SC.Sno
joinCourseonSC.Cno=Course.Cno
whereSdept='计算机系'
(3)
查询计算机系选修VB课程的学生的姓名,性别和成绩。
createviewstudent4(Sname,Ssex,Grade)
as
selectstudent.Sname,Ssex,Grade
fromstudentjoinSConstudent.Sno=SC.Sno
joinCourseonSC.Cno=Course.Cno
whereSdept='计算机系'andCname='VB'
第二次实验存储的基本操作
2.存储的基本操作——查询
2.含变量的存储操作
3.含多个变量的存储操作
(1)查询考试平均成绩超过指定分值的学生学号和平均成绩。
createprocp_avg
@gradeint
as
selectSno,avg(Grade)as平均分fromSC
groupbySno
havingavg(Grade)>@grade
execp_avg70
(2)查询指定系的学生中,选课门数最多的学生的选课门数和平均成绩,要求系为输入参数,选课门数和平均成绩用输出参数返回。
createprocp_NN
@deptchar(10),
@C_numintoutput,
@G_avgintoutput
as
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)
as
deletefromscwhereSno=@snoandCno=@cno
(4)修改指定课程的开课学期。
输入参数为:
课程号和修改后的开课学期,开课学期的默认值为2。
如果指定的开课学期不在1~8范围内,则不进行修改。
createprocp_up
@semesterint=2,
@cnochar(10)
as
updateCoursesetSemester=4whereSemesterin(
selectSemesterfromCourse
whereCno='c03'
and((Semester>1)and(Semester<8))
)
(5)利用SSMS查看Student库中的存储过程
(6)修改第1题
(1)
createprocp_S_S_A
@deptchar(10)
as
selectSC.Sno,count(SC.Cno)as选课总数,sum(Semester)as总学分,avg(Grade)as平均分
fromStudentsjoinSCons.Sno=SC.SnojoinCourseconSC.Cno=c.Cno
whereSdept=@dept
groupbySC.Sno
execp_S_S_A'计算机系'
4.触发器
(1)限制考试成绩在1-100之内
createtriggertri_Check_Grade
onSCafterinsert,update
as
ifexists(select*frominsertedwhereGradenotbetween0and100)
rollback
(2)、限制学生所在系的取值必须在{计,信,物,数}范围内
createtriggertri_sdept
onStudentafterinsert,update
as
ifexists(select*fromStudent
whereSdeptnotin('计算机系','信息系','物理系','数学系'))
Rollback
(3)限制学生的选课总门数不能超过8门。
createtriggertri_SelectC
onSCafterinsert,update
as
ifexists(selectcount(Cno)fromSC
groupbySno
havingcount(Cno)>8)
Rollback
(4)限制不能删除考试成绩不及格学生的考试记录.
createtriggertri_Delete
onSCafterdelete
as
ifnotexists(select*frominsertedwhereGrade<60)
rollback
print'不能删除~~'
(4)
利用12.3创建的工作表和职工表。
(1)、限制职工的基本工资和浮动工资之和必须>=2000
createtriggertri_Salary
on职工表afterinsert,update
as
ifnotexists(select*from职工表ajoin工作表b
ona.工作号=b.工作号
where(基本工资+浮动工资)>=2000)
rollback
else
print'太抠了~~'
(2)、限制工作表中最高工资不能低于最低工资的1.5倍
createtriggertir_Max_Salary
on工作表insteadofupdate
as
ifexists(select*frominsertedwhere最高工资>最低工资*1.5)
update工作表set最高工资=(
select最高工资frominsertedi
where工作表.工作号=i.工作号)
else
print'最高工资太少了吧~~~'
(3)、1500一下的不能删
第三次实验asp访问数据库
1.插入,删除,修改在IE中访问数据库。
各个按钮实现的代码:
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="insertintostudentvalues('"+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("");
}
catch(Exceptionex)
{
mytrans.Rollback();
Response.Write("");
}
finally{
Con.Close();
}
}
protectedvoidshanchu_Click1(objectsender,EventArgse)
{
stringconStr="DataSource=JILECHANG-PC;InitialCatalog=student;PersistSecurityInfo=True;UserID=sa;password=000000";
SqlConnectionCon=newSqlConnection(conStr);
Con.Open();
try
{
stringcmdstr1="deletefromstudentwhereSno='"+this.TextBox1.Text+"'";
SqlCommandcmd=newSqlCommand(cmdstr1,Con);
cmd.ExecuteNonQuery();
Response.Write("");
}
catch(Exceptionex)
{
Response.Write("");
}
finally
{
Con.Close();
}
}
protectedvoidxiugai_Click(objectsender,EventArgse)
{
stringconStr="DataSource=JILECHANG-PC;InitialCatalog=student;PersistSecurityInfo=True;UserID=sa;password=000000";
SqlConnectionCon=newSqlConnection(conStr);
Con.Open();
try
{
stringcmdstr2="updatestudentsetSname='"+this.TextBox2.Text+"'whereSno='"+this.TextBox1.Text+"'";
SqlCommandcmd=newSqlCommand(cmdstr2,Con);
cmd.ExecuteNonQuery();
Response.Write("");
}
catch(Exceptionex)
{
Response.Write("");
}
finally
{
Con.Close();
}
}
}
界面:
成功的提示;
在数据库中的查询:
插入:
删除数据库中的查询结果:
修改:
2.GridView控件的使用
2.1实现的源代码
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringconstr="DataSource=JILECHANG-PC;InitialCatalog=student;PersistSecurityInfo=True;UserID=sa;password=000000";
SqlConnectioncon=newSqlConnection(constr);
con.Open();
stringcmdstr="select*from"+this.TextBox1.Text;
SqlDataAdaptersda=newSqlDataAdapter(cmdstr,con);
DataSetda=newDataSet();
sda.Fill(da);
if(da.Tables[0].Rows.Count==0)
{
Response.Write("
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1