(5)自定义函数的使用。
①定义一个函数实现如下功能:对于给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。
新建一个查询,在“查询分析器”窗口中输入如下程序并执行。
② 写一段T-SQL程序调用上述函数。当向Employees表中插入一行记录时,首先调用函数CHECK_ID检索记录的DepartmentID值在表Departments的DepartmentID字段中是否存在对应值,若存在,则该记录插入Employees表。
执行上面T-SQL语句,在下方显示1行受影响,说明已经向Employees表中插入数据。
【思考与练习】
自定义一个函数,计算一个数的阶乘。
首先新建一个查询,在“查询分析器”窗口中输入下面程序,并且执行,生成函数factorial(@num int)。并将计算结果作为函数返回值。
然后重新建一个查询,在“查询分析器”窗口中进行调用函数factorial,并输出计算结
果。
在结果栏中显示计算结果为“6”。(因为这里@num=3作为函数factorial的参数进行计算的)
(6)系统内置函数的使用。 ① 求一个数的绝对值。
【思考与练习】
A、使用 RAND()函数产生一个0~1的随机数。
第一种,不指定 RAND()函数内的种子值,使其随机产生。返回值为float类型。
第二种,指定种子值。
注:两者区别,若没有指定种子值,那么将随机分配种子值,每次执行结果不一样。对于指定了种子值,返回的结果始终相同。对于上面指定种子值5,则每次产生的结果都是相同的。(上面截图显示)
B、使用SQUARE()函数获得一个数的平方。
C、使用SQRT()函数返回一个数的平方根。
②求财务部雇员的总人数。
【思考与练习】
A、求财务部收入最高的雇员姓名。
B、查询员工收入的平均数。
C、聚合函数如何与GROUP BY函数一起使用。 举个例子,利用GROUP BY查询不同部门人数
③聚合函数ASCII函数返回字符表达式最左端字符的ASCII值。
【思考与练习】
A、使用CHAR()函数将ASCII码代表的字符组成字符串。
因为此处char()函数是一个参数的,因此输出字符串做了这样的处理。
B、使用LEFT()函数返回从字符串’abcdef’左边开始的3个字符。
④获得当前时间和日期。
查询YGGL数据库中员工号为000001的员工的出生年份。
【思考与练习】
A、使用DAY()函数返回指定日期的天数。
B、列举出其他的时间日期函数。
DATEPART函数。
DATEADD函数获取下一时间之前或者之后的时间日期。
DATEDIFF函数,返回跨两个指定日期的日期和时间边界数。
DATENAME函数,返回代表指定日期的指定日期部分的字符串。
DATENAME函数,返回时间为当天的第几小时,第几分钟,第几秒。
C、使用其他类型的系统内置函数。
使用系统内置函数返回服务器端计算机的主机号和名称。
使用系统内置函数返回数据库的编号和名称。
4、实验总结
通过本次实验知道了SQL中的常用日期时间函数,并且也将这些函数做了总结,就像上面的截图中显示的那样。同样也了解了系统内置函数的使用方法。同样通过这次式样,在操作方面自己有很大的提升,将遇到的问题反复的进行操作。通过子查询或者连接查询的方式了解了函数的作用,同时也了解了子查询和连接查询在不同的情况下的优缺点,以及查询效率之间的问题。对于自定义函数的使用也了解掌握了不少。总是通过这次实验我的收获很多。