1、SQL Server 2005基础教程,广西钦州学院数计学院 肖宝,2019年10月20日星期日,广西钦州学院数计系,2/126,第一章 SQL Server 2005概述和安装,1. 数据库的定义,2. 几种数据库产品的介绍,4. SQL Server 2005的安装,5. SQL Server的安全性,3. SQL Server 发展,2019年10月20日星期日,广西钦州学院数计系,3/126,数据库定义,数据库是对象的容器,它不仅可以存储数据,而且能够使数据存储和检索以安全而可靠的方式进行。数据一般包括以下对象: 数据表 视图 函数 存储过程 索引 触发器,2019年10月20日星期日
2、,广西钦州学院数计系,4/126,几种数据库产品介绍,SQL Server只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据。 Oracle能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。 Sysbase能在所有主流平台上运行(包括 windows)。 但由于早期Sybase与OS集
3、成度不高,因此VERSION 11.9.2以下版本需要较多OS和 DB级补丁。在多平台的混合环境中,会有一定问题。,2019年10月20日星期日,广西钦州学院数计系,5/126,DB2能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。 MySql可以说这是中小企业网站Linux平台的首选自由数据库系统。它是一个跨平台数据库系统,一个真正的多用户、多线程的SQL数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。同时,也是Linux系统中使用最为简单
4、的数据库系统,安装简单、使用简单、管理也简单,且数据库系统的稳定性也很不错。,2019年10月20日星期日,广西钦州学院数计系,6/126,SQL Server的发展,SQL Server是Microsoft公司的一个关系数据库管理系统,但说起它的历史,却得从Sybase开始的。SQL Server从20 世纪80年代后期开始开发,最早起源于1987年的Sybase SQL Server。SQL Server最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,1988年,Microsoft公司、Sybase公司和Aston-Tate公司把该产品移植到OS/2上
5、。后来Aston-Tate公司退出了该产品的开发,而Microsoft公司、Sybase公司则签署了一项共同开发协议,这两家公司的共同开发结果是发布了用于Windows NT操作系统的SQL Server,1992年,将SQL Server移植到了Windows NT平台上。 在SQL Server 4版本发行以后,Microsoft公司和Sybase公司在SQL Server的开发方面分道扬镳,取消了合同,各自开发自己的SQL Server。Microsoft公司专注于Windows NT平台上的SQL Server开发,而Sybase公司则致力于UNIX平台上的SQL Server的开发。
6、,2019年10月20日星期日,广西钦州学院数计系,7/126,SQL Server6.0版是第一个完全由Microsoft公司开发的版本。1996年,Microsoft公司推出了SQL Server 6.5版本,接着在1998年又推出了具有巨大变化的7.0版,这一版本在数据存储和数据库引擎方面发生了根本性的变化。又经过两年的努力开发,Microsoft公司于2000年9月布了SQL Server 2000,其中包括企业版、标准版、开发版、个人版四个版本。从SQL Server 7.0到SQL Server 2000的变化是渐进的,没有从6.5到7.0变化那么大,只是在SQL Server 7
7、.0的基础上进行了增强。2005年,SQL Server 2005,代号“Yukon”,微软SQL Server产品的最新版本。微软评论称,此况产品历时五年的重大变革,具有里程碑意义的产品。,2019年10月20日星期日,广西钦州学院数计系,8/126,SQL Server 2005安装,SQL Server2005的版本 SQL Server 2005 Enterprise Edition SQL Server 2005 Developer Edition SQL Server 2005 Standard Edition SQL Server 2005 Workgroup Edition S
8、QL Server 2005 Express Edition 具有高级服务的 SQL Server 2005 Express Edition 本书主要是介绍SQL Server 2005 Developer Edition 的使用,因而我们只需要关心标准版本的安装即可。硬件与软件安装要求 安装解释,2019年10月20日星期日,广西钦州学院数计系,9/126,SQL Server的安全性,windows服务Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Windows事件日志。计算机启动时,服务
9、会自动开始运行。它们不要用户一定登录才运行,它们能在包括这个系统内的任何用户环境下运行。通过服务控制管理器,Windows服务是可控的,可以终止、暂停及当需要时启动。Sql Server 2005的服务管理:(1)SQL Server Configuration Manager(2)程序管理工具 服务,2019年10月20日星期日,广西钦州学院数计系,10/126,SQL Server的安全性,身份验证模式 (1)Windows身份验证模式客户机使用Windows操作系统的用户帐户和密码连接数据库服务器时,SQL Server 2005使用Windows操作系统来进行身份验证。 (2)混合模式
10、客户机使用用户帐户和密码连接数据库服务器时,服务器首先在数据库中查询是否有相同账户和密码的用户,基有则接受连接。若数据库中没有相应的账户和密码,则向windows操作系统请求验证客户机的身份,若两者都没有通过,则拒绝连接。,2019年10月20日星期日,广西钦州学院数计系,11/126,第二章 SSMS(SQL Server Management Studio),连接服务器选项的设置 对象资源管理器 SSMS的选项 查询编辑器 外围应用配置器工具,2019年10月20日星期日,广西钦州学院数计系,12/126,第三章 设计和创建数据库,1. SQL Server中的数据库,2. 数据库系统类型
11、,4. 利用命令创建数据库,3. 利用SSMS创建数据库,2019年10月20日星期日,广西钦州学院数计系,13/126,SQL Server中的数据库,Mastermaster数据库位于Sql Server的核心,如果该数据库被损坏,Sql Server将无法正常工作。因此请大家千万不要对master作任何操作。Master数据库中的内容主要有: 所有的登录名或用户ID所属的角色。 所有的系统配置设置。 服务器中的数据库的名称及相关信息。 数据库中的位置。 SQL server如何初始化。 用于存储系统重要信息的特殊的系统表。,2019年10月20日星期日,广西钦州学院数计系,14/126,
12、SQL Server中的数据库,tempdbtempdb数据库,是一个临时性的数据库,它存在于Sql Server会话期间,一旦Sql Server关闭,tempdb数据库将丢失。当Sqlserver得新启动时,将重建全新的、空的tempdb数据库,以供使用。其作用是保存数据库运行过程中生成的临时数据以供用户使用。对于tempdb,我们只需关注其大小的设置。,2019年10月20日星期日,广西钦州学院数计系,15/126,SQL Server中的数据库,model模板数据库,作为其它数据库的模板数据库。 msdb当创建备分或执行还原等作业时,存储有关这些任务的信息的数据库。,2019年10月2
13、0日星期日,广西钦州学院数计系,16/126,数据库系统类型,OLTP 联机事务处理系统 OLAP 联机分析处理系统,2019年10月20日星期日,广西钦州学院数计系,17/126,SSMS创建数据库,MDF 文件:所有的数据库都必须有一个主数据库文件。其主要存不仅用来为数据库保存数据,也存储了构成数据库的所有其他文件的位置。 NDF 文件:可以有多个,主要是保存数据,但不保存系统数据。 LDF 文件:建议创建一个以上文件,主要是保存用户对数据库的操作,可用于恢复数据。,2019年10月20日星期日,广西钦州学院数计系,18/126,利用查询编辑器创建数据库,格式: CREATE DATABA
14、SE database_name ON PRIMARY ,.n , ,.n LOG ON ,.n COLLATE collation_name WITH ;,2019年10月20日星期日,广西钦州学院数计系,19/126,A. 创建未指定文件的数据库 CREATE DATABASE mytest; B. 创建指定数据和事务日志文件的数据库 CREATE DATABASE Sales ON( NAME = Sales_dat, FILENAME = c:saledat.mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),2019年10月20日星期日,广西
15、钦州学院数计系,20/126,LOG ON ( NAME = Sales_log,FILENAME = c:salelog.ldf, SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB ); GO,2019年10月20日星期日,广西钦州学院数计系,21/126,第4章 安 全,在SQL Server中,有很多的方法来强制安全.可以通过windows验证来让windows自己设置安全性;可以通过视图来限制用户对敏感数据的访问;或是通过特定的的创建用户、登录名,以及角色来明确访问的级别。 本章将要介绍 登录名 角色 架构 你将能利用这windows和sqlServ
16、er的安全设置让你的数据库,从而达到安全的目的。,2019年10月20日星期日,广西钦州学院数计系,22/126,登录名,要连接到SqlServer中,我们必须采用以下方式之一Windows登录名如果用户名属于某个特定的windows组,并在Sql Server中包含该组,那么该用户帐户就能够访问Sql Server。Sql Server登录名例:在windows中创建一个用户组(operator_DB_group)和一个用户名(xiaobao),并使用户名为用户组的一个成员。同时使之登录指定的用户数据库。,2019年10月20日星期日,广西钦州学院数计系,23/126,角 色,SQLServ
17、er2005中共分为固定服务器的角色、数据库角色、应用程序角色。 1、固定服务器的角色 Bulkadmin:运行Bulk Insert语句 Dbcreator:创建、修改或删除数据库,同样也可以恢复它们。 Diskadmin:管理磁盘文件。 Processadmin:终止一个运行T-SQL代码的登录名。 Securityadmin:管理SQL登录名和登录权限,包括密码。 Serveradmin:管理服务器和执行任务,如启动和关闭服务器。 Setupadmin:可以在多个链接服务器上工作,并可以管理链接服务 器定义。 Sysadmin:执行任何活动。,2019年10月20日星期日,广西钦州学院数
18、计系,24/126,2、数据库角色 Dbo/db_owner:特指数据库所在者 Db_accessadmin:可以管理登录名对数据库的访问 Db_backupoperator:可以备分数据库 Db_datareader:可以从所有用户定义表中读取数据。 Db_datawriter:可以对用户表进行任何写行为。 Db_ddladmin:可以执行数据定义行为,如创建表。 Db_denydatareader:不能从用户表写入数据。 Db_denydatawriter:不能向用户表写入数据。 Db_securityadmin:不能修改数据库角色成员和管理权限。 Public:可以看到任何由公共或完整权
19、力、权限的用户所创建的数据库对象。例:使创新的用户只能对某几个表进行选择操作。,2019年10月20日星期日,广西钦州学院数计系,25/126,3、应用程序角色 数据库是为应用程序编写的,然而,并不是所有的数据都只为一个应用程序存在。应用程序允许你定义访问数据库的角色。该角色基于所连接到数据库的应用程序,而不是拥有安全性的用户服务组或单一用户。(在以后的.Net编程学习),2019年10月20日星期日,广西钦州学院数计系,26/126,第5章 定义表,表的定义 表的数据类型 在SSMS中创建表 表中的的列的设置 在查询分析器中创建表,2019年10月20日星期日,广西钦州学院数计系,27/12
20、6,表的定义,数据库要发挥作用,至少需要一个表,但数据库也能有许多表,并且根据需要建立的解决方案,表的数量甚至会变得相当庞大,如银行的客户表,网上书店的订单表等。因此我们需要充分的了解表、表的结构、表的内容。 表:是数据的储藏地,存储着特定的信息。表需要一个富有含义的名称以及定义一个或多个列,每一列应是一个有意义的名称和数据类型。如下列的作者表:,2019年10月20日星期日,广西钦州学院数计系,28/126,表的数据类型,用户在创建表时需要根据数据的需要进行数据类型的选择,从而方便的对数据进行操作。上述作者表中,作者的名字应为字符(char)型。而成绩表中的成绩应为浮点型(float)。因而
21、我们应对数据类型有比较深入的学习和了解。 1、char (nchar存储unicode格式的字符) ,固定数据类型。如果定义10个字符长度的字段时,注意如输入”aaa”时将会变成”aaa ”共10个字符存进硬盘中。最长为8000字符。 2、varchar(nvarchar存储unicode格式的字符),可变数据类型。如果定义10个字符长度的字段时,注意如输入”aaa”时将会以3个字符共存进硬盘中。最长为8000字符。 3、text(ntext存储unicode格式的字符),最大可存储2G字符。 4、image,用于存储任何类型的二进制数据,包括图像、视频、音乐。,2019年10月20日星期日,
22、广西钦州学院数计系,29/126,5、int数据类型用于存储没有小数点的数字值,从-2147483648至2147483647之间的数据。 6、bigint数据类型与int数据类型相似,不同的是能存更大的数据-9223372036854775808至9223372036854775807。 7、smallint数据类型与以上两个数据差不多,只是存储的数相对比较小-32768至32767。 8、tinyint数据类型比smallint的数据类型更小,只能存储0至255的数据。 9、decimal/numeric数据类型用于存储相同精度和范围的数据-1038到1038-1的数据。 10、float
23、数据类型用于存储小数点不固定的数值,能存储-1.79E+308至1.79E+308的数据。,2019年10月20日星期日,广西钦州学院数计系,30/126,11、real数据类型跟float数据类型,存储的数值范围是-3.40E+38至3.40E+38的数值。 12、money数据类型存储的范围是-922337203685477.5808至922337203685477.5807的数值。 13、smallmoney与money相似,其存储的数值范围是-214 748.3648至214 748.3647。 14、datetime日期类型用于存储1753年1月1日至9999年12月31日的时间。
24、15、smalldatetime与datetime相类似,其存储范围是从1900年1月1日至2079年6月6日. 16、binary以二进制数据存储数据。主要存储作为标记或标记组合的数据。 17、varbinary,与binary相似,主要存储类似图像的数据。,2019年10月20日星期日,广西钦州学院数计系,31/126,在SSMS中创建表,在学生信息管理系统中建立学生表。,2019年10月20日星期日,广西钦州学院数计系,32/126,表的列的设置,Null值null值表示没有数据要输入系统,跟0和“”不一样。 默认(default)值设为默认值的的某列,如果用户输入数据时,不向其输入数据
25、,则会以用户设定的值输入。 Identity值自动编号,当希望给行一个唯一而又容易确定的ID号,则可将之设置identity值。该值由系统自动生成。例:将上述学生表的学号设置为identity值,为学生的年龄设置默认值。,2019年10月20日星期日,广西钦州学院数计系,33/126,通过查询窗格定义表,创建表的基本语法create table 表名(列名 数据类型数据长度 identity(增长的初始值,增长的长度) null/not null)例:创建客户表Create table Customer( CustomerId bigint IDENTITY(1,1) NOT NULL,Cle
26、aredBalance money NOT NULL,CustomerTitleId int NOT NULL,CustomerFirstName nvarchar(50) not null,CustomerLastName nvarchar(50) not null,Address nvarchar(50) not null,ProductId bigint not null,ProductDetail nvarchar(200) not null),2019年10月20日星期日,广西钦州学院数计系,34/126,更改表,通过SSMS更改表 通过查询窗格更改表语法: Alter table
27、表名Add 列名 数据类型长度 null/not nulldrop column 列名Alter Column列名 数据类型长度 null/not null例:alter table studentadd birthday smalldate null,alter column name varchar(10) null,drop column address,2019年10月20日星期日,广西钦州学院数计系,35/126,设置主键,主键是记录唯一的标识,也称为关键字,往往是设置某列上不可能有相同的值的列。如学生表中学号,书籍的ISBN号等等。在SSMS中设置主键,2019年10月20日星期日
28、,广西钦州学院数计系,36/126,约束,约束本质上是SQL Server放置在列上的一种检查,用以确保输入到列中的数据满足特定条件。如学生年龄在20岁到100岁之间。设置约束主要是避免用户输入数据不一致。从而保证数据的完整性。在SSMS中创建约束。 利用命令创建约束。Alter table 表名Add Constraint 约束名 Check 约束表达式在约束表达式中多个条件可用and,or,in等关键字。,2019年10月20日星期日,广西钦州学院数计系,37/126,关系,关系是两个表之间的逻辑,可以用它来强制数据的完整性。换句话来说,如果由于数据在某个表中而希望另一个表中也有这样的数据
29、,就可以在两个表中放置这样的关系。关系的类型 一对一关系 一对多关系 多对多关系,2019年10月20日星期日,广西钦州学院数计系,38/126,一对一关系,两个数据表中的记录各自只有一条记录中的一个字段的数据相匹配。这种关系在数据库比较少见。如,2019年10月20日星期日,广西钦州学院数计系,39/126,一对多,是数据库中最常见的一种关系。这就是一条记录与子表中0条、1条或多条记录相关联(即数据相同)的情形。,2019年10月20日星期日,广西钦州学院数计系,40/126,多对多的关系,主表中0条、1 条、甚到多条与子表中0条、1 条、甚到多条记录有关(即数据相同)。,2019年10月2
30、0日星期日,广西钦州学院数计系,41/126,外键,外键是子表上的键,定义在该键中列(一个或一组)能正好与主表中的列在信息和数量完全匹配,使用外键,主要是想通过关系返回两个表中的数据。在SSMS中创建关系 在查询分析器中创建关系 alter table 子表名 add constraint 关系名 foreign key(子表中的字段) references 主表(主表中的字段),2019年10月20日星期日,广西钦州学院数计系,42/126,第8章 操作数据,对数据库中操作主要是对表的操作,而对表的操作主要是向表插入数据、删除数据、更新数据和查询数据。但是对这些数据的操作我们很少在SSMS中
31、进行操作,主要的工作都是在查询窗口中使用命令操作。对这些命令的熟练的操作能为以后的数据库应用打下良好的基础。打开查询窗口,以待进一步输入命令。,2019年10月20日星期日,广西钦州学院数计系,43/126,T-SQL的INSERT命令的语法,Insert语法: INSERT INTO 表名 (列名1,列名2,列名3,列名n) Values (表达式1,表达式2,表达式3,表达式n)注意:(1)插入数据时,表达式的个数与列名的个数要一致。(2)表达式的类型与列名的类型要一致。(3)如果省略列名时,表达式的值顺序必须要与创建表时的顺序一致。(4)如果某列的值可为空,可将之设置为null。(5)在
32、创建的外键的表中插入数据时,一定要注意只有在主键表有你需要插入的值才能插入数据。,2019年10月20日星期日,广西钦州学院数计系,44/126,(6)如果某列上设置了identity(),则不需要插入数据,忽略之即可。 (7)如果是设置有默认值,而在插入数据时又不想在这列上插入数据,则把表达式设置为”default”即可。 (8)如果设置了约束,要求所输入的内容要与约束的条件一致,否则出错(9)插入多行数据,2019年10月20日星期日,广西钦州学院数计系,45/126,检索数据,检索数据:从数据库中找出满足条件的数据.在SQL中有两中方法可以进行检索。 1.在SSMS界面中进行数据检索。这
33、种方式只是针对懂得使用SQL Server数据库的人进行使用。 2.在查询窗口中进行数据检索。这种方式针对于数据库的开发者和程序开发者使用。这种方式最实用,最常用。示例:在SSMS中进行数据的查询。,2019年10月20日星期日,广西钦州学院数计系,46/126,Select语句,SELECT ALL | DISTINCT TOP expression PERCENT WITH TIES * | table_name | view_name | table_alias .* | column_name | expression | $IDENTITY | $ROWGUID AS column_
34、alias | column_alias = expression ,.n FROM table_name | view_name alias_name WHERE filter_Criteria ORDER BY ordering_criteria,2019年10月20日星期日,广西钦州学院数计系,47/126,例1:从pubs数据库查询所有的作者的信息。Select * from authors 例2:从pubs数据库查询前10个作者的信息。Select top 10 * from authors 例3:从pubs数据库中查询前10%的作者的信息。Select top 10 percent
35、* from authors 例4:从pubs数据库中查询作者的姓名,电话,地址与邮编号.Select au_lname,au_fname,phone,address,zipFrom authors 例5:从从pubs数据库中查询作者的所在的居住的州郡Select all state from authors,2019年10月20日星期日,广西钦州学院数计系,48/126,例6:查询pubs数据库中所有作者的姓名(作为一个字段返回),并将中文标识列。Select au_fname+”,”+au_lname as 姓名 from authors 例7:查询pubs数据库中所有居住在Oakland
36、的作者。 Select * from authors where city=Oakland 例8:查询pubs数据库中所有居住在Oakland的作者,并以他们的姓氏排列数据(顺序,降序). Select * from authors where city=Oakland order by asc(desc),2019年10月20日星期日,广西钦州学院数计系,49/126,SQL运算符,算法运算符: +、*、/、% 比较运算符:、=、=、!=,!、! 位算法符:&、|、 逻辑运算符:And,Or,Not,Between,Like,In,All,Some,Any 赋值运算符:=其中Between常
37、与and一起使用 Like的通配符的使用 %:代表0个或多个字符,可放置于字符串的末尾或开始处. _:代表一个任何单字符。 :允许指定值的集合或值的范围中的单个字符用于查找,如%c-f%。 :表示不允许出现的字符。,2019年10月20日星期日,广西钦州学院数计系,50/126,更新数据,更新数据:把原始数据插进数据库中的表后,往往要更新,如学生转学、转系,课程的名称更新等等情况,SQL Server向我们提供了修改数据库工具和命令。1、在SSMS中更改数据 2、在查询窗口中更改数据,2019年10月20日星期日,广西钦州学院数计系,51/126,Update命令,Update语法: Upda
38、te 表名 Set 列名1=表达式1,列名2=表达式2,列名n=表达式n Where 条件例: update student set stu_name=肖宝,age=20 where classid=1,2019年10月20日星期日,广西钦州学院数计系,52/126,删除数据,删除数据是数据库中主要操作之一,它主要是要删除数据库中不要需要的数据,如论坛上的不当言论,学生毕业的数据等。在SQL Server中同样的存在两种数据删除的方法。1、在SSMS中进行数据的删除。 2、在查询窗口中进行删除.,2019年10月20日星期日,广西钦州学院数计系,53/126,Delete命令,Delete语法
39、 Delete From 表名 Where 条件如:delete From Studentwhere num=1234,2019年10月20日星期日,广西钦州学院数计系,54/126,事务,事务是一种方法,开发者可以通过事物定义一个逻辑的工作单元,当这种工作单元完成时,数据库处于一种一致的状态。,张三 Accout=10000,李四 Accout=500,张三 Accout=8000,Accout=accout-2000,李四 Accout=2500,Accout=accout+2000,断电,事务,张三将2000元 转给李四,李四 Accout=500,2019年10月20日星期日,广西钦州
40、学院数计系,55/126,事务的特性,原子性(atomicity)事务中所有的数据修改必须要么全部被数据库接受并且成功插入到数据中,要么没有任何修改发生。 一致性(consistency)一旦成功应用了数据,或者回滚到最初状态,所有的数据都必须保持一致。 隔离性(isolation)一个事务中的任何修改必须与任何其他事务中修改隔离。即不能两个事务同时操作一个对象如表。 持久性(durability)当事务完成后,所有的数据修改都已就绪,只能被另一个事务或工作单无修改,任何系统故障(硬件或软件)都不会删除已经应用的修改。,2019年10月20日星期日,广西钦州学院数计系,56/126,事务使用命
41、令,BEGIN TRAN 事务名标记了事务处理的起始点。从这里开始,直到以COMMIT TRAN或ROLLBACK TRAN结束事务,这之间的任何数据都构成事务的一部分。注意:事务名只能是32个字符长的名称 COMMIT TRAN 将把对数据所做的修改永久提交到数据库,一旦执行了该命令,将不能再回滚事务,只有在所有的修改都准备好的提交给数据库时,才执行这一动作。 ROLLBACK TRAN 如果希望删除自事务开始后,已经完成的对数据库所做的所有修改,则可以发出ROLLBACK TRAN命令。,2019年10月20日星期日,广西钦州学院数计系,57/126,第九章 构建视图,视图:是一种通过存储
42、的SQL语句而创建的可以跨越多个表的虚拟表。其不包含任何数据或信息。在视图中所包含的实际上就是用户定义的查询。 为什么要创建视图?(1)方便于数据库的安全管理(2)方便数据的查询如何创建视图(1)在SSMS中创建视图(2)在查询窗口中创建视图,2019年10月20日星期日,广西钦州学院数计系,58/126,在查询窗口中创建视图,语法:Create view 视图名称asselect 语句例子1.创建一个能查询所有的雇员信息的视图。Create view View_employeeasselect * from employee,2019年10月20日星期日,广西钦州学院数计系,59/126,2
43、.创建一个能查询employeeid=5的雇员的业务订单create view View_employeeasselect * from orderswhere employeeid=53.创建只能查询客户的的公司名称、地址、电话的视图。create view as View_employeeasselect company,address,phone from employee,2019年10月20日星期日,广西钦州学院数计系,60/126,使用视图select 视图中的列名1,视图中的列名2,视图中的列名3from 视图名,2019年10月20日星期日,广西钦州学院数计系,61/126,第
44、10章 存储过程(Stored Procedure),存储过程:存储过程是一组被编译了的T-SQL命令集合,它由Sql Server直接处理,被放入存储过程中的命令,作为一个单一的工作单元而执行。该单元可以调用select,update,Delete等语句之外还可以使用语句控制执行的流程,可以在其中执行聚集函数或进行其它运算。 存储过程的语法: Create procedure 存储过程名存储过程参数名1 数据类型 = 默认值 output,存储过程参数名2 数据类型 = 默认值 output,存储过程参数名n 数据类型 = 默认值 outputASBeginT-SQL语句集End,2019年
45、10月20日星期日,广西钦州学院数计系,62/126,创建存储过程,方法一:通过SSMS界面进行编写打开数据库扩展“可编程性” 存储过程右键选择“新建存储过程” 在命令窗口中进行改写代码。 方法二:直接在查询窗口中进行编写。(我们多采用此种方式,灵活、方便) 例1:create procedure sp_liststudentas beginselect * from studentend,2019年10月20日星期日,广西钦州学院数计系,63/126,例2: Create procedure sp_liststudentbyclassid classid int =2 As Beginsel
46、ect * from student classid=classid End 调用存储过程语法:execute 存储过程名 参数值 defaultoutput 如execute sp_liststudentbyclassid default 注意:参数的后output必须要根据存储过程中的参数声明是否有output,如果有,则调用一定要,如果没有,则一定不能有。,2019年10月20日星期日,广西钦州学院数计系,64/126,更新存储过程,Alter procedure 存储过程名存储过程参数名1 数据类型 = 默认值 output存储过程参数名2 数据类型 = 默认值 output存储过程参
47、数名n 数据类型 = 默认值 outputASBeginT-SQL语句集End,2019年10月20日星期日,广西钦州学院数计系,65/126,两个例子,1、请撰写一个存储过程:输出各班学生的平均成绩。 Create procedure sp_studentavgMark As beginSelect classid,avg(mark) from student group by classid end 2、请撰写一个存储过程:能根据用户输入的学号,输出学生的姓名、年龄到两个参数变量中,以供其它程序使用。,2019年10月20日星期日,广西钦州学院数计系,66/126,Create proce
48、dure sp_liststudent studentno int, studentname nvarchar(50) output, studentage int output As Beginselect studentname=studentname,studentage =agefrom studentwhere studentno=studentno End调用: declare studentno int,studentname nvarchar(50),studentage int set studentno=2 execute sp_liststudentbystudentno
49、 studentno,studentname output,studentage output select studentname,studentage,2019年10月20日星期日,广西钦州学院数计系,67/126,控制流程,选择结构: IFElse语法IF(条件)语句1else语句2例:IF(我有钱)我就不学习了else我就好好学习,2019年10月20日星期日,广西钦州学院数计系,68/126,例:编撰一个存储过程,根据用户提供的学号,通回该生的成绩综合情况。Create procedure sp_student1 studentno int, studentevl nvarchar(50) output As Begindeclare mark intselect mark=mark from studentwhere studentno= studentnoif(mark60)beginset studentevl=合格endelsebeginset studentevl=不合格end End,