题型
考试题目范围:
- 填空->10分
- 选择->20分
- 设计(ER图转关系模式)->10分
- 建表->10分
- 查表,更新表
- 视图
- 触发器
- 存储过程
文件命名:
- 学号-姓名-班级.zip
- .doc
- .sql
知识点
1. 数据模型
概念:数据模型就是对于现实世界数据特征的抽象(对于现实世界的模拟).
- 第一类: 概念模型
- 第二类: 逻辑模型(解释概念模型为)和物理模型(底层实现)
E-R图
- 实体(处理的对象:人,物,事)->矩形
- 属性(实体具有的某一特性)->
SQL语句
1. 查询
select [distinct] <列名1> [as 别名],<列名2>[as 别名] from <表名1> [as 别名],<表名2> [as 别名] |
(1.)(自然连接查询) 求学生学号以及其选修课程的课程号和成绩。
use jwglxt |
(2.)(连接查询)求选修了课程01001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
use jwglxt |
(3.)(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。
use jwglxt |
(4.)(自身连接查询)求年龄大于 ’王红’ 的所有学生的学号、姓名和年龄。
use jwglxt |
(5.)(外部连接查询)求选修了课程的学生的学号、课程号、课程名和成绩。
use jwglxt |
- 另一种解决方案
use jwglxt |
(6.)(子查询) 求与 ‘张维明’ 年龄相同的学生的姓名和出生年月。
use jwglxt |
(7.)(子查询)求选修了课程名为 ’ 计算机网络’ 的学生的学号和姓名。
use jwglxt |
- in用于多返回值判断等于
(8.)(子查询any) 求比‘200801’班级中某一学生年龄大的学生的姓名和学号。
use jwglxt |
x < any(子查询) |
(9.)求比‘200801’班级中全体学生年龄大的学生的姓名和学号。
use jwglxt |
(10.)(子查询exists)求选修了课程02002的学生的姓名和学号。
use jwglxt |
- exists(表达式)存在则输出
- 另一种解决方案
use jwglxt |
(11.)(返回多列的子查询或集合查询) 求与 ‘李静’ 同班且同龄的学生的姓名和学号。
use jwglxt |
(12)(多个子查询或集合查询)求与 ‘王一夫’ 同班,且年龄大于 ‘赵良明’ 的学生的信息。
use jwglxt |
(13)(嵌套与分组查询)检索选修某课程的学生人数多于3人的这门课的课程名。
use jwglxt |
(14)(集合查询)查询选修了课程01001或者选修了课程02002的学生学号。
use jwglxt |
(15)(相关子查询或集合查询)求选修了课程,但未选修课程02003的学生的姓名、学号。
use jwglxt |
(16)(相关子查询) 求选修了全部课程的学生的姓名。
use jwglxt |
(17)(相关子查询)求至少选修了学生 ‘20080102’ 所选修的全部课程的学生的学号,姓名。
use jwglxt |
(18)(相关子查询)求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。
use jwglxt |
(19)(相关子查询或集合查询) 查询所有未选课程的学生学号、姓名。
use jwglxt |
2.视图
- 删除
If exists (select name |
- 视图把查询存起来
create view <视图名> |
- 调用视图
select * from <视图名> |
信息表student上创建一个名为Stu_view,输出Sno、Clno、Sname,然后通过视图Stu_view查询Student表里的数据。
use jwglxt |
3. 触发器
- 存在时删除触发器
If exists (select name |
建立一个触发器,当向Student表中添加数据时,如果添加的学生的年龄不在12岁~60岁之间,则将禁止插入此学生。
create trigger Trigger_Insert |
2. 数据更新
- 插入
insert into <表名> [<属性列1>,<属性列1>...] |
- 修改数据
update <表名> |
- 删除数据
delete |
(1)(单行插入数据)将一新学生记录(学号:20090201;班级号:200901;姓名:陈冬;性别:男;出生年月:1991-2-26)插入学生表中。
insert into Student(Sno,Clno,Sname,Ssex,Sbir) |
存储过程
- 存在删除
If exists(select name |
- 存储过程
create proc <存储过程名> |
- 调用
exec <存储过程名> [[@<name>]<val>,...] |