广交好友~~ 想要讨论的可以留下msn~~~ 希望群友网友经常能提出问题,一起解决,共同提高

Sql例题3

上一篇 / 下一篇  2009-11-24 16:07:30 / 个人分类:SQL

简答题(共10题,每题2分)

1.“图书馆”数据库中有如两个表:                           

读者 ( 读者号int,读者名char(8),备注char(100))

借阅(书号char(20),读者号 int, 借出时间datetime, 归还时间datetime ).

1)             如果更改了读者.读者号”,我们希望同时更改“借阅.读者号”

2)             如果“读者.读者号”被删除,则需要同时删除他的借阅记录。

试在“读者”数据表上创建实现这两个要求的触发器。

解:

对于1)创建一个该号触发器

Create Trigger改号_触发

On读者

for Update

As

begin

Update借阅Set借阅.学号=inserted.学号

From借阅 Where借阅.学号=deleted.学号

end

对于2创建一个删除触发器

Create trigger删号_触发 

On读者

for Delete

As

Begin

Delete From借阅Where借阅.学号=deleted.学号

end

 

2在“学生”数据库中的“学生情况”表上创建一个 “v_网络视图,其内容只包含班级=05网络’班学生的 “姓名”列信息,试写出这个创建该视图的主要代码。

解:use学生;CREATE v_网络AS SELECT 姓名 From学生情况Where班级=05网络

3写出向“学生”数据库的“学生情况”表结构中添加电子邮箱和“密码”两列的T-SQL语言程序

解:use 学生;alter table学生情况add电子邮箱varchar (100) null,密码varchar(20)

 

4.T-SQL语言,在“学生”数据库上,创建一个自定义过程“P1,按“学号”从大到小顺序排列学生情况表上的“计算机”系-05应用”班的学生记录,然后写出调用该过程查询学生情况表的程序。

 1定义存储过程

IF EXISTS ( SELECT name FROM sysobjects WHERE name='P1'and type= 'p')

DROP PROCEDURE P1

go

create PROCEDURE P1 as

select * from学生情况where系别='计算机' and 班级='05应用' 

order by学号desc

go

2)调用上述过程用过程查询学生情况

Execute P1

5.T-SQL语言,在“学生成绩”基表上创建一个“成绩_vw视图(姓名,语文,数学,英语,总分),要求先按数学成绩降序,再按英语成绩降序排列记录。

 解:

Createview成绩_vw SELECT TOP 100 PERCENT姓名,语文,数学,英语,总分

FROM dbo.学生成绩ORDER BY数学DESC,英语DESC 

  

6为学生数据库创建一个函数,其中包含唯一的参数,如果检测到某个数据是空值,就将它赋值为128fn1这个函数,用到“学生情况”表的“学分”列,修改学分值。

解:(1)创建自定义函数fn1(x)

use学生

go

create function fn1(@x tinyint ) returns tinyint

begin

     if @x is null

 set @x=128

  return @x   

end

2)调用函数修改学生成绩表中的学分

use学生

update学生情况

set学分= fn1(学分)

7.分别写出在“学生”数据的“学生情况”表创建时和创建后,使用设置“学号”列为聚集型主键约束的T-SQL主要语句

/*在创建表的同时创建主键约束*/

Use学生          

CREATE TABLE 学生情况

( …….., /*创建列定义*/

学号char (10)

Constraint pk_学号primary key clustered ,

……….)

 

/*在创建表的以后创建主键约束*/

Use学生          

ALTER TABLE 学生情况

ADD

Constraint pk_学号primary key clustered(学号)

/*注意学号书写位置的差别*/

8.用T-SQL语言为学生数据库创建一个0成绩100的规则,然后把它绑定到“学生成绩”表的“平时”、“期中”、“期末”和“平均”成绩列上。

解:1)创建规则

use学生

go

create rule成绩_规则as @成绩>=0 and @成绩<=100

2绑定规则

use学生

go

EXEC sp_bindrule '成绩_规则', '学生成绩.平时'

EXEC sp_bindrule '成绩_规则', '学生成绩.期中'

EXEC sp_bindrule '成绩_规则', '学生成绩.期末'

EXEC sp_bindrule '成绩_规则', '学生成绩.平均'

9.假定“学生”数据库的“学生档案”表结构中,“备注”列的数据类型是nchar(50),试写出将其修改为varchar(100) T-SQL程序的主要语句。

    解:use学生

alter table学生情况

alter column备注varchar (50)

10 黄海公司数据库有数据表:职工(职工号,职工姓名,公司名称,工资),试用SQL语句写出操作,将所有在‘华联公司’工作的职工加薪5%

解:  use 黄海公司

update职工

 set工资=工资*1.05

where 公司名称=’华联公司

 


TAG:

Plight 引用 删除 iseedeadpeople   /   2009-11-24 18:38:31
很多东西都挺难的,比如自定义过程,创建函数,约束,规则
 

评分:0

我来说两句

Open Toolbar