SQLServer的使用.ppt
《SQLServer的使用.ppt》由会员分享,可在线阅读,更多相关《SQLServer的使用.ppt(211页珍藏版)》请在三一办公上搜索。
1、第四章 SQL SERVER的使用,本章内容:介绍SQL SERVER的主要功能操作示例1:Recruitment示例2:GlobalToyz,查询数据库,关于招收新人的材料存储在本地SQL Server 的RECRUITMENT数据库中。这些表格包括关于候选人、他们的资格和联系材料、可提供的空缺等方面的数据,及招收新人代理需要的其它信息。查询所有外部候选者的名字,城市,和电话号码的信息。,SELECT vFirstName,vLastName,cCity,cPhoneFROM ExternalCandidate,显示Recruitment数据库中各种职位和当前人数。,SELECT cPosi
2、tionCode,vDescription,iCurrentLengthFROM Position,显示带用户自定义标题的列 当查询结果对照SELECT语句显示时,结果集的列名与表中的列名是一样的。当任何一种表达式作用在列上时,SQL SERVER隐藏列标题。用户自定义的列标题可以代替缺省列标题。包括两种方法:一种列标题在列名之前,一种列标题在列名之后。,查询合同招聘人员的名字和他们的雇佣费用。要求查询结果的列标题作出改变,显示格式如下:,方法1:(其中as可以省略)SELECT cName as 招聘人员名字,siPercentageCharge as 雇佣薪金FROM ContractRe
3、cruiter,方法2:SELECT 招聘人员名字=cName,雇佣薪金=siPercentageChargeFROM ContractRecruiter,使用通配符 给Recruitment雇员(Employee)表的cPhone列增加一个约束,要求该列的字符串格式为(*)*-*,其中*为数字字符。如(120)903-3989就是符合条件的一个例子。,ALTER TABLE EmployeeADD CONSTRAINT CK_Employee_cPhoneCHECK(cPhone like(0-90-90-9)0-90-90-9-0-90-90-90-9),根据测试的成绩,成绩最高的三位外部
4、候选人将获得面试的机会。测试的时间是2001年3月份进行的。先需要列出满足条件的外部候选人的左右信息。,显示顶部几行 与SELECT语句一起使用的TOP子句限制了结果集合中返回的行数。,语法:SELECT TOP nPERCENT 列名,列名FROM 表名 WHERE 查询条件 ORDER BY 列名,列名,根据测试的成绩,成绩最高的三位外部候选人将获得面试的机会。测试的时间是2001年3月份进行的。先需要列出满足条件的外部候选人的左右信息。查询语句如下:,语法:SELECT TOP 3*FROM ExternalCandidateWHERE dTestDate=2001-3-1 AND dT
5、estDate=3/31/2001ORDER BY siTestScore DESC,GROUP BY ALL GROUP BY子句中的关键字ALL用于显示所有的组,包括那些被WHERE子句排除的组。,例子:SELECT Sno,AVG(Grade)FROM SCWHERE Sno in(95001,95002)GROUP BY ALL Sno,使用COMPUTE和COMPUTE BY子句 使用带SELECT语句的COMPUTE子句,在查询结果中使用聚合函数产生汇总行。COMPUTE子句用于对于整个查询结果产生总计值,COMPUTE BY子句对于每个组产生小计值。,语法:SELECT 列名,列
6、名FROM 表名 WHERE 查询条件 ORDER BY 列名,列名COMPUTE 聚合函数(列名),聚合函数(列名)BY 列名,列名,打印出所有的选修记录,并在查询结果的底部打印汇总所有学生的平均成绩,总成绩。,SELECT*FROM SCCOMPUTE AVG(Grade),SUM(Grade),打印出每个学生的选修记录,并在每个学生查询结果的尾部打印汇总每个学生的平均成绩,总成绩。,SELECT*FROM SC ORDER BY Sno COMPUTE AVG(Grade),SUM(Grade)BY Sno,对于pubs数据库,打印每类书籍的类型名称和预付款项,在每种类型书籍记录的尾部汇
7、总每类书籍的预付款总额,SELECT Tyte,AdvanceFROM Titles ORDER BY Type COMPUTE SUM(Advance)BY Type,COMPUTE和COMPUTE BY子句的使用规则 COMPUTE子句所用到的所有列必须出现在SELECT列表中 使用COMPUTE BY子句,必须同时使用ORDER BY子句 在COMPUTE BY子句列出的列,必须与ORDER BY子句使用的列匹配 在COMPUTE BY子句中,不同聚合函数可以用于一个以上的列,针对上述规则中的第三条和第四条当对Titles表查询时使用如下的ORDER BY子句时:,ORDER BY Ty
8、pe,Price,Advance,下面的COMPUTE BY子句,对于上面的ORDER BY子句来说是有效的,COMPUTE AVG(Advance),AVG(Price)BY Type,Price,AdvanceCOMPUTE AVG(Advance),AVG(Price)BY Type,PriceCOMPUTE AVG(Advance),AVG(Price)BY Type,内连接查询。查询外部候选人的名字以及他们的招聘代理的名称。,SELECT vFirstName,vLastName,cNameFROM ExternalCandidate JOIN RecruitmentAgencies
9、ON ExternalCandidate.cAgencyCode=RecruitmentAgencies.cAgencyCode,思考:查询外部候选人和他们看招聘广告查询的报纸。要求的信息包括外部候选人的姓名和报纸的名称。,SELECT vFirstName,vLastName,cNewspaperNameFROM ExternalCandidate JOIN NewsAd ON ExternalCandidate.cNewsAdNo=NewsAd.cNewsAdNoJOIN Newspaper ON NewsAd.cNewspaperCode=Newspaper.cNewspaperCode
10、,外连接查询。列出所有外部候选人的名字,由招聘代理方式来的候选人显示他们的招聘代理的名字。,SELECT vFirstName,vLastName,cNameFROM ExternalCandidate LEFT OUTER JOIN RecruitmentAgenciesON ExternalCandidate.cAgencyCode=RecruitmentAgencies.cAgencyCode,交叉连接。实现两个表的笛卡尔乘积的连接。,SELECT*FROM Student,SC,另一种形式的交叉连接:,SELECT*FROM Student CROSS JOIN SC,自身连接。并列输
11、出价格为2.9900的一对书籍的书名。,SELECT*FROM titles t1 JOIN titles t2 ON t1.price=t2.price WHERE t1.price=2.99 AND t1.titlet2.title,子查询。列出满足条件的书籍的书名,书类型和预付款项,要求的书籍,在其所属类型里其预付值大于该类书籍的平均预付值。,SELECT Title,Type,AdvanceFROM titles t1 WHERE t1.Advance(SELECT AVG(t2.Advance)FROM titles t2 WHERE t1.Type=t2.Type),思考:列出学生
12、选课记录,只列出那些高于自己平均分的那些记录的学号、课程号、成绩。,SELECT Sno,Cno,GradeFROM SC XWHERE X.Grade(SELECT AVG(Grade)FROM SC Y WHERE X.Sno=Y.Sno),抽取数据到另一个表中。需要2001年5月申请招聘的外部候选人的材料,抽取这些人的材料到一个新表中。,语法:SELECT 列名,列名INTO 新表名FROM 表名 WHERE 查询条件,SELECT*INTO#tempExternalCandidateFROM ExternalCandidateWHERE dDateOfApplication=2001-
13、5-1,注:在SQL SERVER中,对象前加上符号#表示该对象为临时对象,临时对象存储在数据库tempdb中。一个#表示为局部临时表,两个#表示全局临时表。,思考:创建一个全局临时表abc,其中包括4个属性(编号、姓名、性别、年龄),其中编号为整数类型,且为自动编号类型,初始编号值为100,以后每一个增1。其余属性自定类型。,CREATE TABLE#abc(itemNo int IDENTITY(100,1),itemName varchar(50),itemgender nchar(1),itemage int),IDENTITY:IDENTITY用于那些需要自动产生唯一系统值的列,该特
14、性可用于产生有序列。具体用法:IDENTITY(SEED,INCREMENT)其中SEED为初始值,INCREMENT为步长。补充:timestamp数据类型,这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp一般用作给表行加版本戳的机制。存储大小为8字节。一个表只能有一个timestamp列。每次插入或更新包含timestamp列的行时,timestamp列中的值均会更新。,SQL SERVER的函数-串函数,思考:查询报纸的名称、联系人、电话号码,要求报纸的名称以大写形式显示。,SELECT UPPER(cNewspaperName)as Newspape
15、rName,vContactPerson,cPhoneFROM Newspaper,思考:查询位于Houston的招聘代理的名称、地址和联系电话。要求地址只显示前10个字符。,SELECT cName,LEFT(vAddress)as Address,cPhoneFROM RecruitmentAgenciesWHERE cCity=Houston,SQL SERVER函数-日期时间函数,注:datepart为日期部件,具体取值见后续。,思考:校园招聘的建议截止日期是招聘过程开始后的第10天。需要显示一份包含公司正在访问的所有学院的学院代码、招聘起始日期、招聘的建议截止日期的报表。,SELEC
16、T cCollegeCode,dRecruitmentStartDate,DeadLine=DATEADD(dd,10,dRecruitmentStartDate)FROM CampusRecruitment,思考:需要一份面试进度表。打印出外部候选人的姓名,面试者的职位代码,面试的工作日(即星期几)。,SELECT vFirstName,vLastName,面试日=DATENAME(dw,dInterviewDate)FROM ExternalCandidate,思考:对于pubs数据库的titles表,打印每本书的书名和出版日期。要求打印格式如:书籍Net Etiquette的出版日期是2
17、008年8月6日。,SELECT 书籍+title+的出版日期是+DATENAME(yyyy,pubdate)+年+DATENAME(mm,pubdate)+月+DATENAME(dd,pubdate)+日FROM titles,SQL SERVER函数-数学函数,思考:查询外部候选人Helen White的测试成绩。要求成绩被舍入到最接近的整数。要求输出的信息包括她的姓名、电话号码和按要求显示的测试成绩。,SELECT vFirstName,vLastName,cPhone,ROUND(siTestScore,0)FROM externalCandidate,SQL SERVER函数-系统函
18、数,系统函数提供一种查询SQL SERVER系统表的方法。系统表是一组表、SQL SERVER使用它们存储用户、数据库、表和安全性的信息。,SQL SERVER函数-转换函数,CONVERT函数用于把数据从一种类型转换为另一种类型。(当 SQL SERVER不能隐含转换数据类型时需要该函数。)语法:CONVERT(datatype(length),expression,style)datatype 是系统定义的数据类型(不可用自定义);length是char、varchar等数据类型的可选参数;expression是需要转换数据类型的有效表达式;style是把日期型数据转换为字符串类型时的数据
19、表示式样 函数CAST提供和CONVERT相似的功能;语法:CAST(expression as datatype);,例子:将Titles表的Ytd_Sales字段的数据转换成字符数据类型输出。,SELECT Ytd_sales=CONVERT(CHAR(10),Ytd_sales)FROM Titles,SELECT Ytd_sales=CAST(Ytd_sales AS char(10)FROM Titles,几个数据类型转换的例子。,SELECT CONVERT(int,zip)FROM Authors,SELECT The rate of+Title+is$+CONVERT(varc
20、har(10),zip)FROM Titles,日期时间数据转换为字符数据类型的例子。,SELECT Title,CONVERT(char(10),pubdate,2)FROM Titles,本例,pubdate由日期转换为字符类型,且日期以格式显示,这是因为在函数中指定的style的值为2。,CONVERT函数中使用style值,当数据在字符和日期类型之间转换时,用于指出日期的格式。,SQL SERVER-管理数据库,系统数据库 SQL SERVER有以下系统数据库:master tempdb model msdb,master 主数据库记录了服务器系统的所有系统级的信息。包括授权用户、数据
21、库、系统配置设置。另外、主数据库记录了所有其他数据库的信息,如数据库文件的位置、初始化信息等等。如果master数据库出现故障、则SQL SERVER服务无法启动。主数据库保持了控制SQL SERVER操作的大部分关键数据,在主数据库上不给用户任何权限是明智的。并且,保持主数据库的定期备份是十分重要的。,tempdb tempdb是临时数据库,用来存放临时数据。tempdb数据库可以保持的临时数据有:临时表、临时存储过程、变量、游标、排序的中间结果表、查询中间的结果等。tempdb数据库的大小会随着操作的多少而变化,操作越多,临时数据库就越大。在SQL SERVER重启时,会自动重建tempd
22、b数据库,使得系统在启动时自动会有一个干净的tempdb数据库。tempdb没有必要备份。,model model是模板数据库,当在SQL SERVER中创建新的数据库时,SQL SERVER都会以model数据库为模板创建新数据库。当数据库发出CREATE DATABASE语句创建数据库时,SQL SERVER会通过复制model数据库的内容来创建数据库的第一部分,然后用空页来填充新的数据库的剩余部分。,msdb msdb也是SQL SERVER系统使用的数据库,通常由SQL SERVER代理用来计划警报和作业。另外有关数据库备份和还原的记录,也会写在该数据库里面。,用户数据库 SQL SE
23、RVER创建用户数据库的语法:CREATE DATABASE database_name ON,.n,.n LOG ON,.n COLLATE collation_name FOR LOAD|FOR ATTACH:=PRIMARY(NAME=logical_file_name,FILENAME=os_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_increment),.n:=FILEGROUP filegroup_name,.n,数据库文件和文件组 每个SQL SERVER的数据库至少要包含两个文件:一个数据文
24、件和一个日志文件。数据文件里包含的是数据库的数据和对象,如表、视图、索引等;日志文件里包含的是用来恢复数据库所需的信息。SQL SERVER的文件类型:主数据文件 mdf 辅助数据文件 ndf 事务日志文件 ldf,创建一个数据库test1,详细列明数据文件和日志文件信息。,create database test1on(name=test1data,filename=C:Program FilesMicrosoft SQL ServerMSSQL$COMPUTERDatatest1dat.mdf,size=12,maxsize=100,filegrowth=2)log on(name=tes
25、t1log,filename=C:Program FilesMicrosoft SQL ServerMSSQL$COMPUTERDatatest1log.ldf,size=10,maxsize=200,filegrowth=1),创建一个数据库test2,其中包括1个主文件,两个辅助文件和两个日志文件。,SQL SERVER修改数据库方式:数据和日志文件的增加和删除 数据库可以扩大和缩小 文件组可以添加到数据库 数据库的配置设置可以改变 几个数据库有关操作的系统存储过程:sp_helpdb db_name 查看数据库信息 sp_renamedb oldname,new_name 重命名 sp_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 使用

链接地址:https://www.31ppt.com/p-5449400.html