图3-1字段查询结果图
2)基于T_Teacher表按选择操作定义视图。
举例:定义一个满足sex=’男’的员工的所有信息的视图。
具体操作:在视图操作窗,勾选所有列,然后在对应Sex的筛选器内填入筛选条件=‘男’,单击运行即可实现选择操作。或者使用以下代码
create view 所有男性教师信息 as SELECT Teacher_id AS 教师工号, Teacher_name AS 教师姓名, Title AS 职称, Sex AS 性别, Telephone AS 电话, Enter_date AS 入职时间 FROM dbo.T_Teacher WHERE (Sex = '男') 查询结果如图3-2所示。代码生成视图后,左侧对象资源管理器中选中视图右击设计即可看到。
38
图3-2 单表选择查询结果图
3)基于多个表根据连接操作定义视图。
举例:定义一个视图用以查看所有教师的姓名及其订购书目、数量。 具体操作:
i)此视图涉及到T_Teacher表、T_BookaInfo表和T_BookOrder表三者联合查询。 新建视图将此三张表添加到视图操作窗。
ii)分别从三张表中勾选Book_name、Teacher_name和Book_num后单击执行即可获取联合表信息。或者使用以下代码
create view 教师订书基本信息 as SELECT dbo.T_BookInfo.Book_name AS 书名, dbo.T_Teacher.Teacher_name AS 教师名, dbo.T_BookOrder.Book_num AS 定购数目 FROM dbo.T_BookInfo INNER JOIN dbo.T_BookOrder ON dbo.T_BookInfo.Book_id = dbo.T_BookOrder.Book_id INNER JOIN dbo.T_Teacher dbo.T_Teacher.Teacher_id ON dbo.T_BookOrder.Teacher_id = 查询结果如图3-3所示。代码生成视图后,左侧对象资源管理器中选中视图“教师订书基本信息”右击设计即可看到。
39
图3-3联合查询结果
4)基于多个表根据嵌套查询定义视图。
举例:定义一个比所有教师订书数目最高的教师的信息的视图。 具体操作:
i)此视图涉及到T_Teacher表、T_BookaInfo表和T_BookOrder表三者联合查询。 新建视图将此三张表添加到视图操作窗。
ii)分别从三张表中勾选Book_name、Teacher_name和Book_num后,在单击执行即可获取联合表信息。或者使用以下代码创建视图。
create view 购书最多信息 as SELECT TOP (1) dbo.T_BookInfo.Book_name AS 书名, dbo.T_Teacher.Teacher_name AS 教师名, dbo.T_BookOrder.Book_num AS 定购数目 FROM dbo.T_BookInfo INNER JOIN dbo.T_BookOrder ON dbo.T_BookInfo.Book_id = dbo.T_BookOrder.Book_id INNER JOIN dbo.T_Teacher ON dbo.T_BookOrder.Teacher_id = dbo.T_Teacher.Teacher_id ORDER BY 定购数目 DESC 查询结果如图3-4所示。代码生成视图后,左侧对象资源管理器中选中视图右击设计即
40
可看到。
图3-4 查询订购最多教师信息
5)定义含有虚字段(即基本表中原本不存在的字段)的视图。
举例:定义一个视图用以查看所有教师的姓名、购书名称、单价和需要花费总金额。
create view 购书费用表 as SELECT dbo.T_Teacher.Teacher_name AS 教师姓名, dbo.T_BookInfo.Book_name AS 书名, dbo.T_BookInfo.Price AS 单价, dbo.T_BookInfo.Price * dbo.T_BookOrder.Book_num AS 总价 FROM dbo.T_Teacher INNER JOIN dbo.T_BookOrder ON dbo.T_Teacher.Teacher_id = dbo.T_BookOrder.Teacher_id INNER JOIN dbo.T_BookInfo ON dbo.T_BookOrder.Book_id = dbo.T_BookInfo.Book_id 查询结果如图3-5所示。代码生成视图后,左侧对象资源管理器中选中视图右击设计即可看到。
41
图表3-5含有虚字段视图
2. 存储过程练习
对应实验二创建数据库,参照前面实验中完成的查询,按自行定义要求并创建存储过程。以下为示例,请根据个人情况选定要求创建存储过程并执行验证。
1) 创建存储过程查询女教师定购教材情况,要求显示教材名称,教师姓名和订购数量。 具体操作:
i)在BOOK数据库下选中【视图】|【可编程性】|【存储过程】右击选择【新建存储过程】即打开存储过程编辑框。或者直接在“新建查询”窗口进行以下步骤。
ii)在打开的编辑框输入以下代码后单击执行刷新后在【可编程性】【存储过程】下可看到新建的存储过程pro_book1: CREATE PROCEDURE pro_book1 -- Add the parameters for the stored procedure here @sex char(2) --查询条件为性别 AS BEGIN SET NOCOUNT ON; SELECT T_BookInfo.Book_name,T_Teacher.Teacher_name,T_BookOrder.Book_num FROM 42