版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、select查询语句1.在“学生表”中,找出性别为男的学生记录,字段包括姓名、出生日期、和专业select 姓名,专业,出生日期from 学生表where 性别='男'2.在课程表中,找出课程名中包含计算机三个字的课程select *from 课程表where 课程名 like '计算机%'3.在成绩表中,找出课程编号为001的课程成绩前三名的学生select top 3 *from 成绩表where 课程编号='001'order by 成绩 desc4.在成绩表、学生表和课程表中,找出课程编号为“001”的课程成绩在80,90之间的学生的
2、姓名、课程名、和成绩select 姓名,课程名,成绩from 成绩表,课程表,学生表where 成绩表.课程编号=课程表.课程编号 and 学生表.学号=成绩表.学号and 成绩表.课程编号='001'and 成绩>80 and 成绩<905.在学生表中,找出专业为计算机软件、电子商务和多媒体技术专业的学生信息select *from 学生表where 专业 in ('计算机软件','电子商务','多媒体技术')6.统计计算机应用基础课程的平均分select avg(成绩) as 计算机应用基础平均成绩from 成绩表
3、,课程表where 成绩表.课程编号=课程表.课程编号 and 课程名='计算机应用基础'7.查找各门课程的修课人数select 课程编号,count(学号)as各课选修课人数from 成绩表group by 课程编号8.在成绩表中,找出课程编号为001的学生的分数以及最高分、最低分和平均分select 成绩from 成绩表where 课程编号='001'compute max(成绩),min(成绩),avg(成绩)9.找出所有女生的计算机应用基础这门课的成绩,包括字段:姓名、课程名、成绩select 成绩 ,姓名,课程名from 成绩表,课程表,学生表wher
4、e 成绩表.课程编号=课程表.课程编号 and 学生表.学号=成绩表.学号and 性别='女' and 课程表.课程名='计算机应用基础'10.查找课程表中,没有被学生修课的课程信息select*from 课程表where 课程编号 not in (select 课程编号 from 成绩表 )11.在成绩表中,添加一条记录,内容自定insert 成绩表values ('','005','95')12.将课程表中的课程编号为001的学分增加1分update 课程表set 学分=学分+1where 课程编号=00113
5、.删除学号为“”学生的相关信息delete from 学生表where 学号='20030101'二、存储过程创建和执行带参数的存储过程输入参数1在“学生课程数据库”中创建一个存储过程proc4,要求该存储过程能根据给定的性别是男或女,返回对应的“学生表”中的记录。然后执行存储过程proc4,分别查找性别是男和女的记录。create proc proc4性别 char(2)asselect *from 学生表where 性别=性别执行exec proc4 性别='男'exec proc4 性别='女'2在“学生课程数据库”中创建一个存储过程pro
6、c5,要求该存储过程能根据给定的班级名,返回对应的“学生表”中的记录。然后执行存储过程proc5,查找“电子1班”的学生的记录。create proc proc5班级名 char(10)asselect *from 学生表where 班级名=班级名执行exec proc5 班级名='电子1班'输出参数3创建一个存储过程proc6,要求能够根据给定的班级名统计该班的人数,并将人数以输出变量返回给用户。然后执行存储过程proc6,统计“软件2班”的人数。create proc proc6班级名 char(10),人数 int outputasselect 人数=count(学号)f
7、rom 学生表where 班级名=班级名执行declare 班级人数 smallintexec proc6 班级名='软件2班',人数=班级人数 outputselect 班级人数 as 软件2班人数4创建一个存储过程proc7,要求能根据给定的学号和课程名,返回对应的成绩。然后执行存贮过程proc7,查找学 “200203001” 号同学“高等数学”的成绩。create proc proc7学号 char(9),课程名 char(12),成绩 tinyint outputasselect 成绩=成绩from 课程表,成绩表where 成绩表.课程号=课程表.课程号 and 学
8、号=学号 and 课程名=课程名执行declare 成绩 tinyintexec proc7 '200203001','高等数学',成绩 outputselect 成绩或create proc proc7学号 varchar(15),课程名 char(10)asselect 姓名,成绩 as 高等数学成绩from 学生表,成绩表,课程表where 学生表.学号=学号 and 课程名=课程名and 成绩表.课程号=课程表.课程号and 学生表.学号=成绩表.学号执行exec proc7 课程名='高等数学',学号='200203001
9、9;查看存储过程(172)1查看存储过程proc1的参数和数据类型(sp_help)sp_help proc12查看存储过程proc1的相关性(sp_depends)sp_depends proc13查看存储过程proc1的定义文本(sp_helptext)sp_helptext proc1重命名 1将存储过程proc1的名字改为p_xssp_rename proc1,p_xs删除1删除存储过程proc1drop proc proc15、创建一个存储过程“删除成绩”,要求根据学号和课程号删除学生成绩create proc 删除成绩学号 char(9),课程号 char(4)asdelete f
10、rom 成绩表 where 学号=学号 and 课程号=课程号执行exec 删除成绩 ' 200203001','C801'6、修改某学生的成绩,将不及格的成绩都修改成60分create proc 修改成绩学号 char(9),课程号 char(4)asupdate 成绩表 set 成绩=60 where 学号=学号 and 课程号=课程号 and 成绩<60执行exec 修改成绩 课程号='C803',学号='200203001'三、视图创建视图语法create view <视图名> (列名,n)with en
11、cryptionasselect 查询语句with check option1、创建一个“计算机学生表”视图,基表为学生表,来源字段为基表中“计算机系”学生的学号、姓名、年龄、所在院系。create view 计算机学生表 (学号,姓名,年龄,所在院系)asselect 学号,姓名,年龄,所在院系from 学生表where 所在院系='计算机'查看视图select * from 计算机学生表2、创建计算机系中选修了“C801”课程的学生视图“选课学生”,视图中所显示的字段为学号、姓名、性别、年龄,基表为学生表、成绩表,来源字段为学生表中的学号、姓名、性别、年龄。create v
12、iew 选课学生 (学号,姓名,性别,年龄)asselect 学生表.学号,姓名,性别,年龄from 学生表,成绩表where 学生表.学号=成绩表.学号 and 课程号='C801'and 所在院系='计算机'查看视图select * from 选课学生3、创建计算机系中选修了“C801”课程并且性别为男的视图“选课学生_A”。create view 选课学生_A asselect *from 学生表,课程表where 课程号='C801'and 所在院系='计算机' and 学生表.学号=成绩表.学号and 性别='男
13、' 查看视图select * from 选课学生_A4、表达式视图创建一个学生出生年份视图birthday,视图中显示的字段为学号,姓名,出生年份,基表为学生表,来源字段为学号、姓名、年龄。create view birthday (学号,姓名,出生年份)asselect 学号,姓名,year(getdate()-年龄 as 出生年份from 学生表查看视图select * from birthday6、将学生的学号和平均成绩定义为一个avg_s,视图中显示的字段为学号,平均成绩,基表为成绩表,来源字段为学号,成绩。create view avg_s (学号,平均成绩)asselect
14、 学号,avg(成绩) as 平均成绩from 成绩表group by 学号查看视图select * from avg_s四、约束1.将“学生表”中的“学号”字段设置为主键create table 学生表(学号 char(8) not null primary key, 姓名 char(6), 性别 char(2), 出生日期 datetime, 专业 char(20)2.将“成绩表”中的“学号”和“课程编号”两个字段组合起来作为主键create table 成绩表(学号 char(8) not null, 课程编号 char(3) not null, 成绩 decimal(4,1), pri
15、mary key (学号,课程编号)3.将“课程表”中的“课程编号”字段设置为主键create table 课程表(课程编号 char(3) not null primary key, 课程名 char(20), 学分 int)4.将“成绩表”中的“成绩”字段设置检查约束,成绩值在0到100之间alter table 成绩表add check (成绩 between 0 and 100)5.将“学生表”中的“专业”设置默认值约束为计算机网络维护。五、索引1.给学生表的学号字段创建一个聚集索引 (num_ind)create clustered index num_indon 学生表(学号)2.
16、给学生表的姓名字段创建一个唯一索引(name_ind)create unique index name_indon 学生表(姓名)3.给课程表的课程号字段创建一个聚集索引(kid_ind)create clustered index kid_indon 课程表(课程号)4.给课程表的课程名字段创建一个唯一非聚集索引(kname_ind)create unique nonclustered index kname_indon 课程表(课程名)5.给成绩表的学号和课程号创建组合索引(chj_ind)create index chj_indon 成绩表(学号,课程号)六、触发器1在成绩表中创建一个c
17、j_trig1触发器,当执行insert操作,该触发器被触发(即向所定义触发器的表中插入数据时将触发其触发器)注意:after触发器只有在触发sql语句insert中指定的所有操作都已成功执行后才激发。因此用户仍能将数据插入到cj表中create trigger cj_trig1on成绩表for/after insertasprint'记录已修改!'2在成绩表中创建一个cj_trig2触发器,当执行delete操作,该触发器被触发,且要求触发触发器的delete语句在执行后被取消可以发现上例新添的记录仍然保留在成绩表中,可见在定义触发器时定义的insert of 选项取消了触发
18、cj_trig2的delete操作,所以该记录未被删除create trigger cj_trig2on成绩表instead of deleteasprint'记录已修改!'3在表cj_trig3的触发器,该触发器将被操纵update所激活,该触发器将不允许用户修改表的学号列(不使用instead of,而是通过rollback transcation子句恢复原来数据的方法,来实现字段不被修改)create trigger cj_trig3on成绩表after updateasif update(学号)beginraiserror('学号不允许用户修改!',10
19、,1)rollback transactionend4在成绩表上建立一个名为cj_trig4的delete触发器,该触发器将对表成绩表中删除记录的操作给出警报,并取消当前的删除操作create trigger cj_trig4on 成绩表instead of deleteasprint('不允许用户删除!')5创建一个触发器xs_tr1,当向表学生表中插入一条记录时,自动显示学生表中的记录create trigger xs_tr1on 学生表after insertasselect * from 学生表goinsert into 学生表values ('002'
20、,'张三','男','1986-2-23','软件技术')6编写一个kc_cancel触发器,当在课程表中删除一个记录,将触发该触发器。create trigger kc_cancelon 课程表(instead of/) after deleteasprint'记录已删除!'执行delete from 课程表where 课程编号='005'(delete from 课程表where 课程编号='001'select * from 课程表)7编写一个xs_insert 触发器,当在学
21、生表中插入一条记录时,同时将该学号插入到成绩表中(此题建立在主表上)但是级联输入一般是建立在子表上。向学生表中插入一下记录;create trigger xs_inserton 学生表for insertasinsert into 成绩表(学号)select 学号 from insertedwhere 学号 not in (select 学号 from 成绩表)执行insert into 学生表values('20030403','aa','女','1982-01-02','电子商务')8、 编写一个cj_inse
22、rt_update 触发器,当在成绩表中插入一条记录时,触发器激活检查记录的学号值是否存在于学生表中、课程编号是是否存在于课程表中,若不存在,则将学号值插入学生表中,课程编号之插入课程表中。输入任意记录测试create trigger cj_insert_updateon 成绩表for insertasinsert into 学生表(学号)select 学号 from insertedwhere 学号 not in (select 学号 from 学生表)insert into 课程表(课程编号)select 课程编号 from insertedwhere 课程编号 not in (select 课程编号 from 课程表)goinsert into 成绩表values('20030406','006',55)9编写一个xs_update触发器,当修改学生表的学号字段时,该字段在成绩表中的对应值也做相应修改create trigger xs_updateon 学生表for updatea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ospf协议书 实验报告
- 健身房会员卡协议书
- 2025新商业办公房预售买卖合同样本
- 2025灯光租赁标准合同书
- 2025物业服务委托合同范本借鉴
- 2025年短视频MCN机构入驻合同协议
- 2025年山东半岛低空经济「陆海联动」航空教育培训行业报告
- 2025年版代签合同授权委托书样本
- 2025温室用地租赁合同范本
- 2025铁路局劳动合同范本下载
- 2025年广西高考地理真题(解析版)
- 2025建筑施工企业安管人员考试(企业主要负责人A类)练习题及答案
- 2025年越南语专升本翻译专项试卷(含答案)
- 食品安全总监知识考试题及答案
- 工程项目咨询与竣工验收报告范例
- 中国广电福建地区2025秋招行业解决方案岗位专业追问清单及参考回答
- 椎管内硬脊膜外血肿护理
- 酒水商品购销合同范本
- 眼视光师考试试题及答案
- 2025至2030年中国吉林省建筑行业市场发展现状及投资前景展望报告
- 2024新国家基层糖尿病防治管理指南
评论
0/150
提交评论