公司管理数据库系统实例.ppt
《公司管理数据库系统实例.ppt》由会员分享,可在线阅读,更多相关《公司管理数据库系统实例.ppt(238页珍藏版)》请在三一办公上搜索。
1、实现公司管理数据库系统的编程,项 目 7,【教学目标】了解SQL编程的基础知识和SQL Server 2005提供的常用系统函数,具有常用代码的编写能力。,【能力目标】(1)能够正确应用T-SQL的表达式和基本控制语句。(2)能够根据项目需求分析编写简单的T-SQL程序。,【学习导航】使用T-SQL语句编写的程序可以通过SQL Server提供的SQL Server Management Studio查询分析器运行,也可以存储在数据库服务器上运行。本项目学习T-SQL编程基础知识,为后面存储过程、触发器的编程打好基础。,【工作任务】为了完成公司数据库管理系统的管理、维护和开发,用户需要编写一些
2、代码,来管理雇员的工作业绩信息和实现订购订单功能,以提高系统的效率。,理论知识准备,7.1.1 T-SQL编程元素 Transact-SQL(简称T-SQL)在支持标准SQL的同时,还对其进行了扩充,引入了变量定义、流程控制和自定义存储过程等语句,极大地扩展了SQL Server 2005的功能。使用T-SQL语句编写的程序可以通过SQL Server的查询分析器运行,也可以存储在数据库服务器上运行。任何应用程序,不管它是用什么形式的高级语言编写的,只要目的是向SQL Server的数据库管理系统发出命令以获得数据库管理系统的响应,最终都必须体现为以T-SQL语句为表现形式的指令。因此,无论是
3、数据库管理员,还是数据库应用程序的开发人员,要想深入掌握SQL Server 2005,认真学习T-SQL是必要的。,1T-SQL语法规则,T-SQL的语法规则如表所示。,2有效标识符 标识符用来标识服务器、数据库和数据库对象(如表、视图、索引、过程等)。T-SQL的保留字不能作为标识符。,SQL Server的标识符分为常规标识符和分隔标识符。(1)常规标识符。第一个字符必须是下列字符之一:26个大小写字母,以及来自其他语言的字母字符,还可以是下画线(_)、或者#。其他字符可以是大小写字母或其他国家/地区字符中的十进制数字、$、#、_。常规标识符不允许嵌入空格或其他特殊字符。,(2)分隔标识
4、符。用双引号“”或者方括号 分隔标识符。在SQL Server中,以符号开始的标识符表示局部变量或者参数;以开始的标识符表示全局变量或配置函数;以#开始的标识符表示临时表或过程;以#开始的标识符表示全局临时对象。标识符的字符长度不能超过128个字符,临时表标识符的长度不能超过116个字符。,3注释注释有两个作用:其一,对程序代码的功能及实现方式进行简要的解释和说明,以便于将来对程序代码进行维护;其二,可以把程序中暂时不用的语句加以注释,使它们暂时不被执行,等需要执行这些语句时,再将它们恢复。T-SQL支持以下两种类型的注释。,(1)多行注释。使用“/*”和“*/”可以将连续书写的多行语句设与注
5、释,如下所示。/*设置产品ID为外键,删除主键表行时级联删除从表相应行:*/(2)单行注释。使用“-”可以将单行书写的语句设与注释,如下所示。-声明局部变量,7.1.2 常用函数 函数对于任何程序设计语言都是非常关键的组成部分。SQL Server提供的函数分为聚合函数、配置函数、游标函数、日期函数、数学函数、元数据函数、行集函数、安全函数、字符串函数、系统函数、文本和图像函数几类。一些函数还提供了获得信息的快捷方法。函数有返回值,返回值的类型取决于所使用的函数。,1聚合函数 聚合函数也称为统计函数,它对一组值进行计算并返回一个数值。聚合函数经常与SELECT语句子句一起使用。例7.1 统计e
6、mployee表共有多少员工。实例分析:在employee表中的一行数据就是一个员工的信息,统计有多少员工就是统计employees表中有多少行。统计多少行使用count(*)的函数。在查询分析器中执行如下SQL语句。,USE companyinfoGOSELECT COUNT(*)AS员工总人数FROM employeeGO,执行结果如图7-2所示。,例7.2 统计p_order表中订购的所有产品的数量。实例分析:要统计p_order表所订购产品的数量,就要对“数量”列计算总和,这需要使用SUM函数。,图7-2 查询employee表中有多少员工,在查询分析器中执行如下SQL语句。USE c
7、ompanyinfoGOSELECT SUM(数量)FROM p_orderGO,例7.3 统计p_order表中订购量最少的产品。实例分析:统计产品订购量最少的产品需要使用MIN()函数。在查询分析器中执行如下SQL语句。,USE companyinfoGOSELECT MIN(数量)FROM p_orderGO,2字符串函数字符串函数用于对字符串进行连接、截取等操作。表7-2列出了常用的字符串函数。,常用的字符串函数及其功能,例7.4 给出字符串“数据库”字符串在“大型数据库技术”中的位置。实例分析:该题需要给出“数据库”在“大型数据库技术”中的开始位置,使用CHARINDEX函数,字符表
8、达式1为“信息”,字符表达式2为“计算机信息工程系”。从字符表达式2的开始位置查找。本题不使用表。,在查询分析器中执行如下SQL语句。SELECT CHARINDEX(信息,计算机信息工程系)GO,例7.5 计算字符串“SQL Server数据库管理系统”的字符个数。实例分析:该题需要使用计算字符长度函数LEN,表示为:LEN(SQL Server数据库管理系统)。在查询分析器中执行如下SQL语句。,SELECT LEN(SQL Server数据库管理系统)GO,例7.6 显示信息:将“Hello”显示两次,然后间隔10个空格,再将“World”显示两次。实例分析:本题使用REPLICATE函
9、数,显示两次“Hello”表示为REPLICATE(HellO,2);显示两次“World”表示为REPLICATE(World,2)。间隔10个空格使用SPACE函数表示为SPACE(10)。,在查询分析器中执行如下SQL语句。SELECT REPLICATE(HellO,2),SPACE(10),REPLICATE(World,2)GO,执行结果如图7-3所示。,图7-3 使用REPLICATE函数和SPACE函数,3日期函数 日期函数用来显示日期和时间的信息。它们处理dataUme和smaUdatatime的值,并对其进行算术运算。表7-3列出了常用的日期函数。,表7-3中日期元素的缩写
10、和取值范围在表7-4中给出。,日期元素及其缩写和取值范围,例7.7 显示服务器当前系统的日期与时间。实例分析:该题需要使用GETDATE函数,表示为GETDATA()。在查询分析器中执行如下SQL语句。,SELECT GETDATE()GO,例7.8 显示服务器当前系统的月份和月份名称。实例分析:显示当前系统的月份使用DATEPART(MONTH,GETDATE(),或者DATE-PART(MM,GETDATE();显示当前系统的月份名称使用DATENAME(MONTH,GETDATE(),或者DATENAME(MM,GETDATE()。在查询分析器中执行如下SQL语句,SELECT DATE
11、PART(MONTH,GETDATE()SELECT DATENAME(MONTH,GETDATE()GO,执行结果如图7-4所示。,图7-4 使用DATEPART函数和DATENAME函数,例7.9 小张的生日为“1979/12/23”,使用日期函数计算小张的年龄。实例分析:本题计算服务器当前系统时间GETDATE()与小张生日“1979/12/23”之差,并以日期元素YEAR(或YY)的形式返回,用函数表示为,DATEDIFF(yy,1979/12/23,GETDATE()。在查询分析器中执行如下SQL语句。SELECT 年龄=DATEDIFF(yy,1979/12/23,GETDATE(
12、)GO,4系统函数,系统函数用来获取SQL常用的Serrer的有关信息。表7-5列出了常用的系统函数。,常用的系统函数,例7.10 显示主机名称。实例微软用户1分析:使用HOST_ NAME()函数。在查询分析器中执行如下SQL语句。,SELECT HOST_NAME()GO执行结果为:HAND。,例7.11 将字符串103456转换为数字。实例分析:需要使用转换函数CONVERT,转换后的数据类型为Decimal(10,4)。在查询分析器中执行如下SQL语句。SELECT CONVERT(Decimal(10,4),10.3456)GO执行结果为:10.3456。,5数学函数数学函数用来对数
13、值型数据进行数学运算。表7-6列出了常用的数学函数。,常用的数学函数,例7.12 返回大于或等于134.3933的最小整数;返回小于或等于134.393的最大整数。实例分析:该题需要使用CEILING和FLOOR函数,分别表示为CEILING(134393)和FLOOR(134.393)。在查询分析器中执行如下SQL语句。SELECT CEILING(134.393)SELECT FLOOR(134.393)GO 执行结果为:135 134,例7.13 计算34和,的值。,实例分析:该题使用POWER、SQRT函数,34表示为POWER(3,4),,表示为SQRT(16)。在查询分析器中执行如
14、下SQL语句。,SELECT POWER(3,4)SELECT SQRT(16)GO,执行结果为:81 4.0。,7.1.3 常量与变量,常量和变量是程序设计中不可缺少的元素,下面介绍常量和变量的具体使用方法。,1常量,T-SQL的常量主要有以下几种。,(1)字符串常量。字符串常量包含在单引号内,由字母、数字字符(az、AZ和09)以及特殊字符(如!、和#)组成。例如,SQL Server 2005实例与应用。如果字符串常量中包含一个单引号,如Im a Student,可以使用两个单引号表示这个字符串常量内的单引号,即表示为:Im a Student。在字符串常量前面加上字符N,则表明该字符串
15、常量是Unicode字符串常量。例如,NMary是Unicode字符串常量;Mary是字符串常量。Unicode数据中的每个字符都使用2字节存储。字符数据中的每个字符则都使用一字节进行存储。,(2)数值常量。数值常量包括时间常量(datetime、smalldatetime)、整型常量(bigint、int、smallint、tinyint)、带有精度的常量(decimal、numeric)、浮点型常量(float)、实型常量(real)和货币型常量(money、smallmoney)几种。数值常量不需要使用引号。,datetime:范围在1753年1月1日9999年12月31日的日期和时间数
16、据。smalldatetime:范围在1900年1月1日2079年6月6日的日期和时间数据。bigint:范围在9 223 372 036 854 775 808(2631)9 223 372 036 854 775 807(2631)之间的整数。int:范围在2 147 483 648(231)2 147 483 647(2311)之间的整数。smallint:范围在32 768(215)32 767(2151)的整数数据。tinyint:0255范围内的整数。decimal:范围在1038+110381之间可以带有小数位的数值常量。例如,187 6.21。float:使用科学记数法表示1.
17、79E+3081.79E+308范围的数据。real:使用科学记数法表示3.40E+383.40E+38范围的数据。例如,101.5E6、54.8El0等。money:货币常量,范为2262261,存储大小为8字节。以$作为前缀,它可以 包含小数点。例如,$12.54、$768.32。smallmoney:范围为214 748364 8+214748 364 7,存储大小为4字节。,(3)日期常量。使用特定格式的字符日期值表示,并用单引号括起来,例如:19831231、1976/04/23、14:30:24、04:24PM、May 04,1998。,(4)uniqueidentifier常量。
18、表示全局唯一标识符(GUID)值的字符串。可以使用字符或二进制字符串格式指定。例如,6DF9B89F4513-4CAF-A5ADCEB24CC90CA5。,2变量,变量对应内存中的一个存储空间,它与常量不同。变量的值在程序执行过程中可能随时有所改变。变量有两种类型:局部变量和全局变量。(1)局部变量。局部变量是用户在程序中定义的变量,一次只能保存一个值,它仅在定义的程序范围内有效。局部变量可以临时存储数据。局部变量名总是以符号开始,最长为128个字符。使用DECLARE语句定义局部变量,内容包括定义局部变量名、数据类型和长度。局部变量的初值为NULL(空)。需要使用SELECT语句或SET语句
19、给局部变量赋值。SET语句一次只能给一个局部变量赋值;SELECT语句可以同时给一个或多个局部变量赋值。,例7.14 编写计算50与60之和的程序。实例分析:首先需要定义3个局部变量,分别用来存储两个整数以及两个整数之和。定义的3个局部变量分别为i、j、sum,数据类型均为int(整型)。定义局部变量之后,需要使用SET语句或者SELECT语句给局部变量赋值。使用PRINT语句显示局部变量的值。为了便于理解,给出了每行代码的注释。在查询分析器中执行如下SQL语句。,DECLARE i int,j int,sum int-定义3个局部变量SET i=50-给变量i赋值SET j=60-给变量j赋
20、值SELECT sum=i+j-将i和j的和赋值给变量sumPRINT sum-显示sum变量的内容GO,(2)全局变量。全局变量以开头,实际上它就是SQL Server的配置函数。对于全局变量只能使用,不能进行修改。,7.1.4 运算符,T-SQL的运算符和其他高级语言的运算符类似,用于将变量、常量和函数连接起来并指定在一个或多个表达式中执行的操作。表7-7列出了T-SQL的运算符。,字符串连接运算符(+)用来连接字符串。例如,SELECT SQL Server 2005+数据库技术显示结果为:SQL Server 2005数据库技术,7.1.5 批处理和流控语句,1批处理,批处理是由一个或
21、多个T-SQL语句组成的,应用程序将这些语句作为一个单元提交给SQL Server,并由SQL Server编译成一个执行计划,然后作为一个整体来执行。批处理的大小有一定的限制,批处理结束的符号或标志是GO。批处理可以交互地运行或在一个文件中运行。提交给T-SQL的文件可以包含多个批处理,其中每个批处理以GO命令结束。批处理的使用需要遵守以下规则。(1)除了CREATE DATABASE(创建数据库)、CREATE TABLE(创建表)和CREATE INDEX(创建索引)之外的其他大多数的CREATE命令要单独作为一个批处理。(2)调用(执行)存储过程时,如果它不是批处理中的第一个语句,则在
22、其前面必须加上EXE-CUTE(执行)。例7.15 创建一个显示employee表信息的视图V_Test,然后显示课程表的信息。实例分析:创建显示employee表信息的视图V_Test的语句如下。,CREATE VIEW V_TestASSELECT*FROM employee,显示雇员表的信息的语句为:SELECT*FROM employee 在查询分析器中执行如下SQL语句。,USE companyinfoCREATE VIEW V_TestASSELECT*FROM employeeSELECT*FROM employeeGO,执行后显示出错信息为:CREATE VIEW 必须是查询批
23、次中的第一个语句。在CREATE VIEW语句前面增加GO,使得USE companyinfo为一个批处理,CREATE VIEW为另一个批处理的第一条语句。执行如下SQL语句。,USE companyinfoGOCREATE VIEW V_TestASSELECT*FROM employeeSELECT*FROM employeeGO,执行后显示出错信息为:关键字SELECT 附近有语法错误。因为创建视图要单独作为一个批处理,所以应在SELECT*FROM employee语句前面加GO。修改后的SQL语句有3个批处理执行如下SQL语句后,其结果是正确的。USE companyinfoGOC
24、REATE VIEW V_TestASSELECT*FROM employeeGOSELECT*FROM employeeGO,(3)将声明一个局部变量和给该变量赋值的语句分别放在两个批处理中,观察系统给出的信息。,DECLARE MyVar INTGOSELECT MyVar=33GO,显示出错信息为:必须声明标量变量“MyVar”。对一个局部变量而言,其声明和赋值必须在同一个批处理中进行,正确的语句如下。,DECLARE MyVar INTSELECT MyVar=33GO,2流控语句,流程控制语句简称流控语句,它与T-SQL语句一起使用可以控制程序的流程。在批处理中可以使用流控语句,也可
25、以在存储过程、脚本或特定的查询内部使用它。下面首先给出一个例题,然后再逐步介绍流控语句。例7.16 计算1+2+3+4+10000的值,并显示计算结果。实例分析:首先声明两个局部变量:i和sum,两者均为int数据类型。其中,i为计数单元,sum用来保存计算结果。声明局部变量的语句为:DECLARE i int,sum int。然后给两个局部变量赋值,i初值为1,sum初值为0,赋值语句为:SELECT i=1,sum=0。该题需要采用循环程序结构,循环终止条件为 i10000。在查询分析器中执行如下SQL语句。,DECLARE i int,sum int SELECT i=1,sum=0 W
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 公司 管理 数据库 系统 实例
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4967511.html