欢迎访问web记录!每一步的成长都是一种幸福,聪明的女孩擅长记录幸福!
您现在的位置:web记录 > 数据库 >

系统函数和用户自定义函数

更新时间:2012-11-21 浏览次数:
系统函数和用户自定义函数
实验目的:
1、  掌握系统函数的概念和格式
2、  掌握系统函数在查询中的应用
3、  掌握用户自定义函数的编写方法
实验内容:
对前面创建的人事数据库进行追加,然后进行下面的操作:
1、从当前数据库中返回表bm1第三列的名称。
2、返回表gzqk1E_id列的长度。
3、检查sysdatabases中的每一个数据库,使用数据库标识号来确定数据库名称。
4、向zgda1表中插入两条记录,要求E_resume字段值为NULL,要求对记录进行查询时,对应的NULL值显示为“石家庄职业技术学院信息工程系教师”
5、向gzqk1表中插入zgda1表中不存在的记录,通过@@ERROR返回程序的错误代码。
6、显示到当前日期和时间为止试图登录SQL Server的次数。(@@connections)
7、返回SQL Server安装的日期、版本和处理器类型。(使用@@version
8、在第一个字符串(Good Morning)中删除从第6个位置(字符M)开始的7个字符,然后在删除的起始位置插入第二个字符串(Afternoon,创建并返回一个新的字符串。
9、查询表zgda1中的职工信息,要求显示的字段为:职工号、姓名、性别、年龄。
10、在表zgda1中查询每个职工的出生月份。
11、从系统当前日期中返回当前的年份、月份和天。
12、查询zgda1表中出生日期为1973年的职工信息。
13、使用MIN函数,查询gzqk1表中的最低工资。
14、创建一个用户自定义函数getaverageDp_name),该函数是一个标量值函数,根据所给的Dp_name,计算该系教职工的平均工资。
15、编写用户自定义函数,功能是查询给定姓名的教职工,若没有查到则返回0,否则返回“查找到姓名为。。。。的教职工”。主程序调用这个函数,例如查询姓名为“王红”的教职工,根据查询的结果进行输出。
16、创建一个用户自定义函数,函数名称为“getinfo(E_id)”,函数属于内联表值函数,函数的功能是返回表zgda1中给定教职工的所有信息。
17、创建一个用户自定义函数,函数名称为“getavggz()”,函数属于多语句表值函数,函数的功能是返回所有系教职工的平均工资。(最后显示的结果有两个字段:系部名称、平均工资)


1.
use 人事数据库
go
select COL_NAME(object_id('bm'),3)
2.
select COL_LENGTH('gzpk','E_id')
3.
use master
select dbid,DB_NAME(dbid) as db_name from sysdatabases
order by dbid
4.
use 人事数据库
insert into zgda values('0006','李红','女','1989-05-08','true','老师','主任','03',null)
insert into zgda values('0007','张默','女','1988-05-08','true','讲师','主任','04',null)
select E_id,E_name,E_sex,E_zhiwu,ISNULL(E_resume,'石家庄职业技术学院信息工程系教师') from zgda
5.
insert into gzpk values('0007','张静','455','78','45','54','54',null,null,null)
select @@error
6.
select @@CONNECTIONS
7.
select @@VERSION
8.
select STUFF('Good morning',6,7,'Afternoon')
9.
select E_id,E_name,E_sex,year(GETDATE())-year(E_birthday) as  年龄 from zgda
10.
select E_id,E_name,month(E_birthday)as 出生月份 from zgda
11.
select str(year(GETDATE()))+'年'+str(MONTH(GETDATE()))+'月'+str(DAY(GETDATE()))+'日'
12.
select * from zgda where YEAR(E_birthday)='1973'
13.
select MIN(E_recsalary) as  最低工资 from gzpk
14.
if exists(select name from sysobjects
where name='getaverage' and type='fn')
drop function dbo.getaverage
go
create function dbo.getaverage(@Dp_name char(20))
returns char(20)
as
begin
declare @avgongzi real
set @avgongzi=(select AVG(E_recsalary) from gzpk join zgda
on gzpk.E_id=zgda.E_id join bm
on zgda.Dp_id=bm.Dp_id where [url=mailtop_name=@Dp_name]Dp_name=@Dp_name[/url])
return @avgongzi
end

select dbo.getaverage('计算机系')
15.
if exists(select name from sysobjects      
   where name='charen' and type='FN')
  drop function dbo.charen
Go
CREATE FUNCTION dbo.charen
   (@E_name char(6))
  RETURNS char(35)
  AS
  BEGIN
      DECLARE @find char(40)
      IF exists(select E_name from gzpk where E_name=@E_name)
        SET  @find='查找到姓名为'+@E_name+'的教职工'
      ELSE
       SET @find='0'
     RETURN  (@find)
  END
select dbo.charen('张三')
16.
  if exists(select name from sysobjects
   where name='getinfo' and type='IF')
  drop function dbo.getinfo
Go
        Create  FUNCTION [dbo].getinfo
           (@E_id varchar(12))
          RETURNS TABLE
         AS
         RETURN
        (select * from zgda where E_id=@E_id )   
         
         GO
select * from dbo.getinfo('0002')
17.
if exists(select name from sysobjects
where name='getavggz' and type='tf')
drop function dbo.getavggz
go
create function dbo.getavggz
()
returns @avggongzi table
(xibu char(10),
gongzi money)
as
begin
insert @avggongzi
select bm.Dp_name,avg(E_recsalary) from bm join zgda
on bm.Dp_id=zgda.Dp_id join gzpk
on zgda.E_id=gzpk.E_id group by bm.Dp_name
return
end
select * from dbo.getavggz()


关键词:

    + 相关信息

    前端案例

    返回顶部 欢迎访问web记录!每一步的成长都是一种幸福,聪明的女孩擅长记录幸福!