《SQLSERVER基础》PPT课件.ppt

上传人:枫** 文档编号:570224705 上传时间:2024-08-02 格式:PPT 页数:97 大小:1.80MB
返回 下载 相关 举报
《SQLSERVER基础》PPT课件.ppt_第1页
第1页 / 共97页
《SQLSERVER基础》PPT课件.ppt_第2页
第2页 / 共97页
《SQLSERVER基础》PPT课件.ppt_第3页
第3页 / 共97页
《SQLSERVER基础》PPT课件.ppt_第4页
第4页 / 共97页
《SQLSERVER基础》PPT课件.ppt_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《《SQLSERVER基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《SQLSERVER基础》PPT课件.ppt(97页珍藏版)》请在金锄头文库上搜索。

1、SQL SERVER 数据库设计与实现主讲人:潘伟西华师范大学计算机学院通信专业系列课程第第3章章 SQL 基础基础3.1 SQL Server中的数据类型中的数据类型3.2数据表设计与创建数据表设计与创建3.3 数据查询数据查询3.4修改表结构修改表结构3.5 插入、更新和删除表数据插入、更新和删除表数据3.6 约束、默认和规则约束、默认和规则3.7 系统数据库系统数据库3.8创建用户数据库创建用户数据库3.1 SQL Server中的数据类型中的数据类型数据数据类型型符符号号标识整数型整数型bigint,int,smallint,tinyint精确数精确数值型型decimal,numeri

2、c浮点型浮点型float,real货币型型money,smallmoney位型位型bit字符型字符型char,varcharUnicode字符型字符型nchar,nvarchar文本型文本型text,ntext二二进制型制型binary,varbinary日期日期时间类型型datetime,smalldatetime时间戳型戳型timestamp图象型象型image其他其他cursor,sql_variant,table,uniqueidentifier3.1 SQL Server中的数据类型中的数据类型数据类型数据类型说说明明bigint-263(-922,337,203,685,477.5

3、808)263-1(+922,337,203,685,477.5807)的整型数据的整型数据(所有数字所有数字)int-231(-2,147,483,648)231-1(2,147,483,647)的整型数据的整型数据(所所有数字有数字)。smallint从从-215(-32,768)到到215-1(32,767)的整数数据。的整数数据。tinyint从从0到到255的整数数据。的整数数据。bit1或或0的整数数据。的整数数据。decimal-1038+1到到10381的固定精度和小数位的数字数据。的固定精度和小数位的数字数据。numeric功能上等同于功能上等同于decimal。money货

4、币数据值介于货币数据值介于-263与与263-1之间,精确到货币单位的之间,精确到货币单位的1%。smallmoney货币数据值介于货币数据值介于-214,748.3648与与+214,748.3647之间,精确到货之间,精确到货币单位的币单位的1%。3.1 SQL Server中的数据类型中的数据类型数据类型数据类型说说明明float-1.79E+3081.79E+308的浮点精度数字。的浮点精度数字。real-3.40E+383.40E+38的浮点精度数字。的浮点精度数字。datetime1753年年1月月1日日9999年年12月月31日的日期和时间数据,精确到日的日期和时间数据,精确到3

5、%s(或或3.33毫秒毫秒)。smalldatetime1900年年1月月1日日2079年年6月月6日的日期和时间数据,精确到分钟。日的日期和时间数据,精确到分钟。char固定长度的非固定长度的非Unicode字符数据,最大长度为字符数据,最大长度为8,000个字符。个字符。varchar可变长度的非可变长度的非Unicode数据,最长为数据,最长为8,000个字符。个字符。text可变长度的非可变长度的非Unicode数据,最大长度为数据,最大长度为231-1(2,147,483,647)个字符。个字符。nchar固定长度的固定长度的Unicode数据,最大长度为数据,最大长度为4,000个

6、字符。个字符。nvarchar可变长度可变长度Unicode数据,其最大长度为数据,其最大长度为4,000字符。字符。ntext可变长度可变长度Unicode数据,其最大长度为数据,其最大长度为230-1(1,073,741,823)个字符。个字符。3.1 SQL Server中的数据类型中的数据类型数据类型数据类型说说明明binary固定长度的二进制数据,其最大长度为固定长度的二进制数据,其最大长度为8,000个字节。个字节。varbinary可变长度的二进制数据,其最大长度为可变长度的二进制数据,其最大长度为8,000个字节。个字节。image可变长度的二进制数据,其最大长度为可变长度的二

7、进制数据,其最大长度为231-1(2,147,483,647)个字节。个字节。cursor游标的引用。游标的引用。table一种特殊的数据类型,存储供以后处理的结果集。一种特殊的数据类型,存储供以后处理的结果集。timestamp数据库范围的唯一数字,每次更新行时也进行更新。数据库范围的唯一数字,每次更新行时也进行更新。uniqueidentifier全局唯一标识符全局唯一标识符(GUID)。sql_variant一种存储一种存储SQLServer支持的各种数据类型支持的各种数据类型(text、ntext、timestamp和和sql_variant除外除外)值的数据类型。值的数据类型。3.2

8、 数据表设计与创建数据表设计与创建列名列名数据数据类型型大小大小小数位小数位是否是否为空空默默认值列名含列名含义1STUD_IDchar10N0401010101 学生编号学生编号2NAMEnvarchar4N姓名姓名3BIRTHDAYdatetime出生日期出生日期4GENDERnchar1性别性别5ADDRESSnvarchar20家庭地址家庭地址6TELCODEchar12电话电话7ZIPCODEchar6邮编邮编8MARKint560入学成绩入学成绩学生基本信息表学生基本信息表3.2 数据表设计与创建数据表设计与创建教师基本信息表教师基本信息表列名列名数据类型数据类型大小大小小数位小数

9、位是否为空是否为空默认值默认值列名含义列名含义1 TEACHER_IDchar6N010101教师编号教师编号2 NAMEnvarchar4N姓名姓名3 GENDERnchar1性别性别4 AGEint年龄年龄5 TECH_TITLEnchar5职称职称6 TELEPHONEvarchar12电话电话7 SALARYdecimal721418工资工资8 COURSE_IDchar10任教课程编码任教课程编码3.2 数据表设计与创建数据表设计与创建学生成绩表学生成绩表列名列名数据类型数据类型大小大小小数位小数位是否为空是否为空默认值默认值列名含义列名含义1 STUD_IDchar10N04010

10、10101学生编号学生编号2 NAMEnvarchar4N姓名姓名3 COURSE_IDchar10课程号课程号4 GRADEnumeric41成绩成绩3.2 数据表设计与创建数据表设计与创建课程信息表课程信息表列名列名数据类型数据类型大小大小小数位小数位是否为是否为空空默认值默认值列名含义列名含义1 COURSE_IDchar10N0401010101课程号课程号2 COURSE_NAMEnvarchar12N课程名课程名3 COURSE_TYPEnchar2N考试考试课程类型课程类型4 COURSE_MARKintN课程学时课程学时5 COURSE_TIMEdecimal31课程学分课程学

11、分3.2 数据表设计与创建数据表设计与创建课程信息表课程信息表列名列名数据类型数据类型大小大小小数位小数位是否为是否为空空默认值默认值列名含义列名含义1 COURSE_IDchar10N0401010101课程号课程号2 COURSE_NAMEnvarchar12N课程名课程名3 COURSE_TYPEnchar2N考试考试课程类型课程类型4 COURSE_MARKintN课程学时课程学时5 COURSE_TIMEdecimal31课程学分课程学分课程安排表课程安排表3.2 数据表设计与创建数据表设计与创建0列名列名数据类数据类型型大大小小小数小数位位是否为是否为空空默认默认值值列名含列名含义

12、义1COURSE_IDchar10N课程号课程号2COURSE_TIMEdatetime起始时起始时间间3COURSE_WEEKint教学周教学周数数4 ROOM_IDchar6教室编教室编码码5DEPTCODEchar2院系编院系编码码6TEACHER_IDchar6教师编教师编号号3.2 数据表设计与创建数据表设计与创建列名列名数据类型数据类型大小大小小数位小数位是否为空是否为空默认值默认值列名含义列名含义1SPECCODE char6N040101专业编号专业编号2SPECNAME nvarchar10专业名称专业名称院系代码表院系代码表专业代码表专业代码表列名列名数据类数据类型型大小大

13、小小数小数位位是否是否为为空空默认默认值值列名列名含含义义1DEPTCODEchar2N01院系院系编编号号2DEPTNAMEnvarchar10院系院系名名称称教研室信息表教研室信息表3.2 数据表设计与创建数据表设计与创建列名列名数据类型数据类型大小大小小数位小数位是否为空是否为空默认值默认值列名含义列名含义1 JYSH_IDchar4N0101教研室编码教研室编码2 JYSH_NAMEnvarchar10教研室名称教研室名称3 JYSH_TYPEchar4专业专业教研室类型教研室类型4 JYSH_LEADERnvarchar4教研室主任教研室主任教室信息表教室信息表3.2 数据表设计与创

14、建数据表设计与创建列名列名数据类型数据类型大小大小小数位小数位是否为空是否为空默认值默认值列名含义列名含义1ROOM_IDchar6N010101教室编码教室编码2ROOM_NAMEnvarchar8教室名称教室名称3ROOM_TYPEnvarchar10普通普通教室类型教室类型4ROOM_DEVICEnvarchar10投影仪投影仪教室设备教室设备5ROOM_SIZEint60教室容量教室容量3.2 数据表设计与创建数据表设计与创建u在企业管理其中创建在企业管理其中创建uSQLSQL指令指令CREATETABLE(,);); :所要定义的基本表的名字所要定义的基本表的名字库名库名.所有者所有

15、者.| |所有者所有者.表名表名 :组成该表的各个属性(列):组成该表的各个属性(列) :涉及相应属性列的完整性约:涉及相应属性列的完整性约束条件束条件 :涉及一个或多个属性列的完:涉及一个或多个属性列的完整性约束条件整性约束条件 常用完整性约束常用完整性约束主码约束:主码约束:PRIMARYKEY唯一性约束:唯一性约束:UNIQUE非空值约束:非空值约束:NOTNULL默认值约束:默认值约束:default检查约束:检查约束:check参照完整性约束参照完整性约束:foreignkeyreferences ?PRIMARY KEYPRIMARY KEY与与 UNIQUEUNIQUE的区别?的

16、区别?3.2 数据表设计与创建数据表设计与创建列名列名数据数据类型型大小大小小数位小数位是否是否为空空默默认值列名含列名含义1STUD_IDchar10N0401010101 学生编号学生编号2NAMEnvarchar4N姓名姓名3BIRTHDAYdatetime出生日期出生日期4GENDERnchar1性别性别5ADDRESSnvarchar20家庭地址家庭地址6TELCODEchar12电话电话7ZIPCODEchar6邮编邮编8MARKint560入学成绩入学成绩学生基本信息表学生基本信息表举 例create table student.dbo.student(STUD_ID char(

17、10) NOT NULL default(0401010101),NAME nvarchar(4) NOT NULL,BIRTHDAY datetime,GENDER nchar(1) check(GENDER=f or GENDER=m),ADDRESS nvarchar(20),TELCODE char(12),ZIPCODE char(6),MARK int default(560)primary key(STUD_ID)3.3 修改表结构修改表结构修改表修改表ALTER TABLE ADD 完整性约束 DROP ALTER COLUMN ; :要修改的基本表要修改的基本表ADDADD子

18、句:子句:增加新列和新的完整性约束条件增加新列和新的完整性约束条件DROPDROP子句:子句:删除指定的完整性约束条件删除指定的完整性约束条件DROP COLUMNDROP COLUMN子句:子句:删除指定的完整性约束条件删除指定的完整性约束条件ALTER COLUMNALTER COLUMN子句:子句:用于修改列名和数据类型。标准用于修改列名和数据类型。标准SQLSQL中用中用alter columnalter column实现该功能实现该功能 例例 向向StudentStudent表增加表增加“入学时间入学时间”列,其数据类型列,其数据类型为日期型。为日期型。 ALTER TABLE St

19、udent ADD ALTER TABLE Student ADD ScomeScome datetimedatetime;u 不论基本表中原来是否已有数据,新增加的列一律为空值。3.3 修改表结构修改表结构修改表修改表删除属性列删除属性列直接直接/间接删除间接删除把表中要保留的列及其内容复制到一个新表中把表中要保留的列及其内容复制到一个新表中删除原表删除原表再将新表重命名为原表名再将新表重命名为原表名直接删除属性列直接删除属性列:(新新)例:例:ALTERTABLEStudentDropcolumnScome 例例 将出生日期的数据类型改为将出生日期的数据类型改为smalldatetimes

20、malldatetime。ALTER TABLE ALTER TABLE StudentStudent alter column alter column BIRTHDAY SMALLDATETIMEBIRTHDAY SMALLDATETIME;注:注:修改原有的列定义有可能会破坏已有数据修改原有的列定义有可能会破坏已有数据3.4 数据查询数据查询Application Logic客户程序查询请求查询结果集SQL SERVERA B C D E F G SELECT * FROM SALES查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,

21、并按照表的形式显示出来怎么查的?怎么查的?学学员编号号学学员姓名姓名地址地址所在班所在班级.001001张明全明全湖南湖南长沙沙S201S201002002李菲李菲湖北宜昌湖北宜昌S202S202003003于寄于寄谦甘甘肃天水天水S204S204004004刘国正刘国正山山东荷荷泽S201S201005005周接周接轮台湾新竹台湾新竹S204S204006006巩小妹巩小妹香港香港龙湾湾S203S203007007巩大妹巩大妹香港香港龙湾湾S203S203008008张明敏明敏北京北京顺义S202S202009009矛十八矛十八四川棉阳四川棉阳S204S204010010罗林光林光陕西西临潼

22、潼S202S202011011司司马坡坡新疆喀什新疆喀什S201S201S202陕西临潼陕西临潼罗林光罗林光010S202湖北宜昌湖北宜昌李菲李菲002S202北京顺义北京顺义张明敏张明敏008SELECT * FROM Student WHERE 所在班级 = S202SELECT FROM WHERE ORDER BY ASC或或DESC列名称列名称SELECT SCode, SName, SAddress表名表名FROMStudent过滤条件过滤条件WHERESSEX = 0排序条件排序条件ORDER BYSCodeSELECTSno,SName,SAddress FROM Studen

23、tWHERESSEX = 0ORDER BYSno数据查询数据查询-基础基础数据查询数据查询-基础基础查询全部的行和列SELECT*FROM Student查询部分行SELECTSno,SName,SAddress FROM StudentWHERE SAddress = 河南新乡SELECTSno,SName,SAddress FROM StudentWHERESAddress 河南新乡数据查询数据查询-基础基础使用AS来命名列SELECT Sno AS学员编号,SName AS学员姓名,SAddress AS 学员地址 FROM StudentWHERE SAddress河南新乡SELEC

24、T FirstName+.+LastName AS姓名FROM Employees使用=来命名列SELECT 姓名 = FirstName+.+LastName FROM Employees数据查询数据查询-基础基础查询空行SELECT SName FROM Student WHERE SEmailIS NULL使用常量列SELECT 姓名=SName,地址= SAddress,河北新龙AS 学校名称FROM Student思考:非空行怎么查?数据查询数据查询-基础基础限制固定行数SELECT TOP 5 SName, SAddressFROM Student WHERE SSex = 0返回

25、百分之多少行SELECT TOP 20 PERCENT SName, SAddressFROM Student WHERE SSex = 0数据查询数据查询-基础基础升序排列SELECT Sno As 学员编号,(Score*0.9+5) As 综合成绩FROM ScoreWHERE (Score*0.9+5)60ORDER BY Score降序排列SELECT Au_Lname +. +Au_fName AS EMP From Authors UnionSELECT fName +.+ LName AS EMP From EmployeeORDER BY EMP DESC数据查询数据查询-基

26、础基础按多列排序SELECT Sno As 学员编号, Score As 成绩FROM ScoreWHERE Score60ORDERBYScore,Cno思考:排序中的字段,可以使用表达式吗? 如果不可以,请说明原因; 如果可以,请举例说明;模糊查询模糊查询LIKE查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容SELECT SName AS 姓名 FROM Student WHERE SName LIKE 张%姓名姓名姓名姓名张果老张果老张飞张飞张扬出去张扬出去通配符通配符通配通配符符解解释示例示例_一个字符A Like C_%任意长度的字符串B Like CO_%

27、括号中所指定范围内的一个字符C Like 9W01-2不在括号中所指定范围内的一个字符D Like %A-D1-2思考:身份证号码的约束表达式怎么写?思考:身份证号码的约束表达式怎么写?思考:以下的SQL语句:SELECT * FROM 数据表 WHERE 编号 LIKE 008%A,C%可能会查询出的编号值为( )。A、9890ACDB、007_AFFC、008&DCGD、KK8C模糊查询模糊查询ISNULL把某一字段中内容为空的记录查询出来把某一字段中内容为空的记录查询出来SELECT SName As 姓名,SAddress AS 地址 FROM Student WHERE SAddre

28、ssISNULL姓名姓名姓名姓名地址地址地址地址张果老NULL李寻欢NULL令狐冲NULL程灵素NULL猜一猜:把Student表中某些行的SAddress字段值删掉后: 使用ISNULL能查询出来这些数据行吗? 怎么查询出这些行来?模糊查询模糊查询BETWEEN把某一字段中内容在特定范围内的记录查询出来把某一字段中内容在特定范围内的记录查询出来SELECT Sno, Score FROM SCore WHERE ScoreBETWEEN 60 AND 80snosnoScoreScore77786111761764模糊查询模糊查询IN把某一字段中内容与所列出的查询内容列表匹配的记录查把某一字

29、段中内容与所列出的查询内容列表匹配的记录查询出来询出来SELECT SName AS 学员姓名,SAddress As 地址 FROM Student WHERE SAddressIN(北京,广州,上海)学员姓名学员姓名学员姓名学员姓名地址地址地址地址李扬广州广州于紫电上海上海李青霜北京北京司马弓上海上海聚合函数聚合函数SUMAVGSELECT SUM(ytd_sales) FROM titles WHERE type = businessSELECT SUM(ytd_sales) ,PriceFROM titles WHERE type = businessSELECT AVG(SCore)

30、 AS 平均成绩 From Score WHERE Score =60聚合函数聚合函数MAX、MINCOUNTSELECT AVG(SCore) AS 平均成绩, MAX(Score) AS 最高分, MIN (Score) AS 最低分 From Score WHERE Score =60SELECTCOUNT (*)AS 及格人数 From Score WHERE Score=60分组汇总分组汇总这三个数取平均值第4-6分数取平均值最后三个数取平均值有一个学员参加考试分组查询分组查询GROUPBYSELECT Cno, AVG(Score) AS 课程平均成绩FROM ScoreGROUP

31、 BY Cno分组查询分组查询SELECT Sno, Cno, AVG(Score) AS 课程平均成绩FROM ScoreGROUP BY Cno思考:执行以下的T-SQL:结果如何?结果如何?分组查询分组查询多列分组多列分组第一次内部测试成绩第二次内部测试成绩第三次内部测试成绩补考成绩怎么样来统计每次的内部测试不同学员的成绩?怎么样来统计每次的内部测试不同学员的成绩?分组查询分组查询多列分组多列分组SELECT Sno AS 学员编号,Cno AS 内部测试, AVG(Score) AS 内部测试平均成绩FROM ScoreGROUP BY Sno,Cno分组查询分组查询问题问题在以上统计

32、内部测试成绩的基础上,如果只想看补考的学员的成绩,怎么办?分组查询分组查询再看看再看看增加条件:要求该学员的Cno在分组内出现过一次以上SELECT Sno AS 学员编号,Cno AS 内部测试, AVG(Score) AS 内部测试平均成绩FROM ScoreGROUP BY Sno,Cno分组查询分组查询HAVINGSELECT Sno AS 学员编号,Cno AS 内部测试, AVG(Score) AS 内部测试平均成绩FROM ScoreGROUP BY Sno,CnoHAVING COUNT(Score)1分组查询分组查询对比对比WHEREGROUP BYHAVINGWHERE子句

33、从数据源中去掉不符合其搜索条件的数据子句从数据源中去掉不符合其搜索条件的数据GROUPBY子句搜集数据行到各个组中,统计函数为各个子句搜集数据行到各个组中,统计函数为各个组计算统计值组计算统计值HAVING子句去掉不符合其组搜索条件的各组数据行子句去掉不符合其组搜索条件的各组数据行分组查询分组查询思考思考SELECT 部门编号, COUNT(*)FROM 员工信息表WHERE 工资 = 2000GROUP BY 部门编号HAVING COUNT(*) 1思考:分析以下思考:分析以下T-SQL的含义的含义COMPUTE子句子句COMPUTE 行聚合函数行聚合函数BY 列名集合列名集合COMPUT

34、E子句生成合计作为附加的汇总列出现在结子句生成合计作为附加的汇总列出现在结果集的最后。果集的最后。当与当与BY一起使用时,一起使用时,COMPUTE子句在结果集内对子句在结果集内对指定列进行分类汇总。指定列进行分类汇总。可在同一查询内指定可在同一查询内指定COMPUTE BY和和COMPUTE。 select*fromstud_infoorderbyleft(address,3)computeavg(mark)byleft(address,3)computeavg(mark)COMPUTE子句子句多表联结查询多表联结查询问题问题学员内部测试成绩查询的每次显示的都是学员的编号信息,因为该表中只存

35、储了学员的编号;实际上最好显示学员的姓名,而姓名存储在学员信息表;如何同时从这两个表中取得数据?连接查询连接查询SQL中连接查询的主要类型中连接查询的主要类型 广义笛卡尔积广义笛卡尔积 等值连接等值连接(含自然连接含自然连接) 非等值连接查询非等值连接查询 自身连接查询自身连接查询 外连接查询外连接查询 复合条件连接查询复合条件连接查询多表联结查询多表联结查询分类分类内联结内联结(INNERJOIN)外联结外联结左外联结左外联结(LEFTJOIN)右外联结右外联结(RIGHTJOIN)完整外联结完整外联结(FULLJOIN)ScoreStudentIDStudentIDCnoCnoScoreS

36、core122300100100200297896776300381多表联结查询多表联结查询内联结内联结-1StundentsSNameSName梅超风陈玄风陆乘风曲灵风SCodeSCode1234查询结果查询结果SNameSName梅超风陈玄风陈玄风陆乘风CnoCnoScoreScore00100100200297896776陆乘风00381SELECT S.SName,C.Cno,C.Score From Score AS CINNER JOIN Student AS SON C.sno = S.SCode再猜一猜:以下返回多少行?SELECT S.SName,C.Cno,C.Score

37、From Student AS SINNER JOIN Score AS CON C.sno S.Sno猜一猜:这样写,返回的查询结果是一样的吗?SELECT S.SName,C.Cno,C.Score From Student AS SINNER JOIN Score AS CON C.sno = S.SCode多表联结查询多表联结查询内联结内联结-2SELECT Student.SName, Score.Cno, Score.ScoreFROM Student,ScoreWHEREStudent.SCode = Score.sno多表联结查询多表联结查询三表联结三表联结SELECT S.S

38、Name AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩FROM Student AS S INNER JOIN Score AS C ON (S.SCode = C.sno)INNER JOIN Course AS CS ON (CS.Cno = C.Cno)ScoreStudentIDStudentIDCnoCnoScoreScore122300100100200297896776300381多表联结查询多表联结查询左外联结左外联结StundentsSNameSName梅超风梅超风陈玄风陈玄风陆乘风陆乘风曲灵风曲灵风SCodeSCode1234查询结果查

39、询结果SNameSName梅超风梅超风陈玄风陈玄风陈玄风陈玄风陆乘风陆乘风CnoCnoScoreScore00100100200297896776陆乘风陆乘风00381曲灵风曲灵风NULLNULLSELECT S.SName,C.Cno,C.Score From Student AS SLEFT JOIN Score AS CON C.sno = S.SCode猜一猜:这样写,返回的查询结果是一样的吗?SELECTS.SName,C.Cno,C.Score FromScore AS CLEFTJOINStudent AS SONC.sno = S.SCode多表联结查询多表联结查询右外联结右外

40、联结SELECT S.SName,C.Cno,C.Score From Student AS SRIGHT JOIN Score AS CON C.sno = S.SCodeSQL Server中的函数中的函数SELECTSTUFF(ABCDEFG,2,3,我的音乐我我的音乐我的世界的世界)返回:返回:A我的音乐我的世界我的音乐我的世界EFG在一个字符串中,删除指定长度的字在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串符,并在该位置插入一个新的字符串STUFFSELECTCHARINDEX(ACCP,MyAccpCourse,1)返回:返回:4用来寻找一个指定的字符串在另一用

41、来寻找一个指定的字符串在另一个字符串中的个字符串中的起始位置起始位置CHARINDEX举例举例描述描述函数名函数名SELECTLEN(SQLServer课程课程)返回:返回:12返回传递给它的返回传递给它的字符串长度字符串长度LENSELECT LOWER(SQL ServerSELECT LOWER(SQL Server课程课程)返回:返回:sqlsql server server课程课程把传递给它的字符串把传递给它的字符串转换为小写转换为小写LOWERSELECTUPPER(sqlserver课程课程)返回:返回:SQLSERVER课程课程把传递给它的字符串把传递给它的字符串转换为大写转换

42、为大写UPPERSELECTLTRIM(周智宇周智宇)返回:周智宇返回:周智宇(后面的空格保留)(后面的空格保留)清除清除字符字符左边的空格左边的空格LTRIMSELECTRTRIM(周智宇周智宇)返回:返回:周智宇(前面的空格保留)周智宇(前面的空格保留)清除清除字符字符右边的空格右边的空格RTRIMSELECTRIGHT(买卖提买卖提.吐尔松吐尔松,3)返回:吐尔松返回:吐尔松从字符串右边返回指定数目的字符从字符串右边返回指定数目的字符RIGHTSELECTREPLACE(莫乐可切莫乐可切.杨可杨可,可可,兰兰)返回:莫乐兰切返回:莫乐兰切.杨兰杨兰替换一个字符串中的字符替换一个字符串中的

43、字符REPLACESQL Server中的函数中的函数SELECTDATEPART(day,01/15/2000)返回:返回:15日期中指定日期部分的整数形日期中指定日期部分的整数形式式DATEPARTSELECTGETDATE()返回:今天的日期返回:今天的日期取得当前的取得当前的系统日期系统日期GETDATE举例举例描述描述函数名函数名SELECTDATEADD(mm,4,01/01/99)返回:以当前的日期格式返回返回:以当前的日期格式返回05/01/99将指定的数值添加到指定的日将指定的数值添加到指定的日期部分后的日期期部分后的日期DATEADDSELECTDATEDIFF(mm,01

44、/01/99,05/01/99)返回:返回:4两个日期之间的指定日期部分两个日期之间的指定日期部分的区别的区别DATEDIFFSELECTDATENAME(dw,01/01/2000)返回:返回:Saturday日期中指定日期部分的字符串日期中指定日期部分的字符串形式形式DATENAMESQL Server中的函数中的函数SELECT SQRT(9)SELECT SQRT(9)返回:返回:3 3取浮点表达式的平方根取浮点表达式的平方根SqrtSqrtSELECT ABS(-43)SELECT ABS(-43)返回:返回:4343取数值表达式的绝对值取数值表达式的绝对值ABSABS举例举例描述描

45、述函数名函数名SELECT CEILING(43.5)SELECT CEILING(43.5)返回:返回:4444返回大于或等于所给数字表达返回大于或等于所给数字表达式的最小整数式的最小整数CEILINGCEILINGSELECT POWER(5,2)SELECT POWER(5,2)返回:返回:2525取数值表达式的幂值取数值表达式的幂值POWERPOWERSELECT ROUND(43.543,1)SELECT ROUND(43.543,1)返回:返回:43.543.5将数值表达式四舍五入为指定将数值表达式四舍五入为指定精度精度ROUNDROUNDSELECT SIGN(-43)SELEC

46、T SIGN(-43)返回:返回:-1-1对于正数返回对于正数返回+1+1,对于负数返,对于负数返回回-1-1,对于,对于0 0 则返回则返回0 0SignSignSELECT FLOOR(43.5)SELECT FLOOR(43.5)返回:返回:4343取小于或等于指定表达式的最取小于或等于指定表达式的最大整数大整数FLOORFLOORSQL Server中的函数中的函数函数名函数名说明明AVG求求组中中值的平均的平均值。BINARY_CHECKSUM返回返回对表中的行或表达式列表表中的行或表达式列表计算的二算的二进制校制校验值,可用于,可用于检测表表中行的更改。中行的更改。CHECKSUM

47、返回在表的行上或在表达式列表上返回在表的行上或在表达式列表上计算的校算的校验值,用于生成哈希索,用于生成哈希索引。引。CHECKSUM_AGG返回返回组中中值的校的校验值。COUNT求求组中中项数,返回数,返回int类型整数。型整数。COUNT_BIG求求组中中项数,返回数,返回bigint类型整数。型整数。GROUPING产生一个附加的列。生一个附加的列。MAX求最大求最大值。MIN求最小求最小值。SUM返回表达式中所有返回表达式中所有值的和。的和。STDEV返回返回给定表达式中所有定表达式中所有值的的统计标准偏差。准偏差。STDEVP返回返回给定表达式中所有定表达式中所有值的填充的填充统计

48、标准偏差。准偏差。VAR返回返回给定表达式中所有定表达式中所有值的的统计方差。方差。VARP返回返回给定表达式中所有定表达式中所有值的填充的的填充的统计方差。方差。SQL Server中的函数中的函数SELECTUSER_NAME(1)返回:从任意数据库中返回返回:从任意数据库中返回“dbo”从给定的用户从给定的用户ID返回用户名返回用户名USER_NAMESELECTCONVERT(VARCHAR(5),12345)返回返回:字符串:字符串12345用来用来转变数据类型转变数据类型CONVERT举例举例描述描述函数名函数名SELECTCURRENT_USER返回返回:你登录的用户名你登录的用

49、户名返回当前用户的名字返回当前用户的名字CURRENT_USERSELECTDATALENGTH(中国中国A盟盟)返回:返回:7返回用于指定表达式的返回用于指定表达式的字节字节数数DATALENGTHSELECTHOST_NAME()返回:你所登录的计算机的名字返回:你所登录的计算机的名字返回当前用户所登录的计算返回当前用户所登录的计算机名字机名字HOST_NAMESELECTSYSTEM_USER返回:你当前所登录的用户名返回:你当前所登录的用户名返回当前所登录的用户名称返回当前所登录的用户名称SYSTEM_USER3.5插入、更新和删除表数据插入、更新和删除表数据向向表表中中插插入入数数据

50、据就就是是将将一一条条或或多多条条记记录录添添加加到到表表尾尾。T-SQL中使用中使用INSERT命令完成数据插入。命令完成数据插入。INSERT INTO 列名列名 VALUES INSERT INTO student (STUD_ID,NAME,BIRTHDA,GENDER,TELCODE,ZIPCODE)VALUES (1324200603,张三,1989-1-1,男,13990890001,637009)插入单行数据插入单行数据注意事项注意事项1:1:每次插入一行数据,不可能只插入半行或者几列数据,因每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完

51、整性的要求来检验;此,插入的数据是否有效将按照整行的完整性的要求来检验;INSERT INTO student (STUD_ID,NAME,BIRTHDA,GENDER)VALUES (1324200603)3.5 插入、更新和删除表数据插入、更新和删除表数据注意事项注意事项2:2:每个数据值的数据类型、精度和小数位数必须与相应的列每个数据值的数据类型、精度和小数位数必须与相应的列匹配匹配;INSERT INTO student (STUD_ID,NAME,BIRTHDA,GENDER,TELCODE)VALUES (1324200603,张三,1989-1-1,男,13990890001,6

52、37009)插入单行数据插入单行数据3.5 插入、更新和删除表数据插入、更新和删除表数据注意事项3:不能为标识列指定值,因为它的数字是自动增长的;注意事项4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;INSERT INTO student (STUD_ID, BIRTHDA,GENDER,TELCODE,ZIPCODE)VALUES (1324200604,1989-1-1,男,13990890001,637009)属性列属性列属性列属性列NAMENAMENAMENAME不能为空不能为空不能为空不能为空插入单行数据插入单行数据3.5 插入、更新和删除表数据插入、更新和删除表数据

53、注意事项5:插入的数据项,要求符合检查约束的要求注意事项6:具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值INSERT INTO student (STUD_ID,NAME,BIRTHDA,GENDER,TELCODE,ZIPCODE)VALUES (1324200603,张三,1989-1-1,f,13990890001,637009)INSERT INTO student (STUD_ID,NAME,BIRTHDA,GENDER,TELCODE,ZIPCODE,MARK)VALUES (1324200604,张三,1989-1-1,男,13990890001,6370

54、09,default)插入单行数据插入单行数据3.5 插入、更新和删除表数据插入、更新和删除表数据插入多行数据插入多行数据INSERT INTO TongXunLu (Name,Address,TELCODE)SELECT Name,Address,TELCODEFROM StudentINSERT INTO (列名)SELECT FROM 方式方式1:3.5 插入、更新和删除表数据插入、更新和删除表数据SELECT Student.Name,Student.Address,Student.TELCODEINTO TongXunLuFROM StudentSELECT (列名)INTO FRO

55、M 猜一猜:该语句可以执行两次吗?猜一猜:该语句可以执行两次吗?插入多行数据插入多行数据SELECT Students.SName,Students.SAddress,Students.SEmail,IDENTITY(int,1,1) As StudentIDINTO TongXunLuEXFROM Students? SELECT INTO插入多行数据的时候,如何插入新的标识列?SELECT IDENTITY(数据类型,标识种子,标识增长量) AS 列名INTO 新表FROM 原始表3.5 插入、更新和删除表数据插入、更新和删除表数据插入多行数据插入多行数据INSERT STUDENTS (

56、SName,SGrade,SSex)SELECT 测试女生1,7,0 UNIONSELECT 测试女生2,7,0 UNIONSELECT 测试女生3,7,0 UNIONSELECT 测试女生4,7,0 UNIONSELECT 测试女生1,7,0 UNIONSELECT 测试男生2,7,1 UNIONSELECT 测试男生3,7,1 UNIONSELECT 测试男生4,7,1INSERT INTO (列名)SELECT UNIONSELECT UNION插入多行数据插入多行数据3.5 插入、更新和删除表数据插入、更新和删除表数据UPDATE SET WHERE UPDATE Students S

57、ET SSEX = 0UPDATE Students SET SAddress =北京女子职业技术学校家政班 WHERE SAddress = 北京女子职业技术学校刺绣班UPDATE ScoresSET Scores = Scores + 5WHERE Scores = 95更新数据行更新数据行3.5 插入、更新和删除表数据插入、更新和删除表数据删除数据行删除数据行3.5 插入、更新和删除表数据插入、更新和删除表数据DELETE FROM WHERE 河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012. .地址

58、地址姓名姓名学号学号.980010016数学810010013语文670010012语文740010013数学880010012数学分数学号科目DELETE FROM 学员信息表 WHERE 学号 =0010012DELETE FROM Students WHERE SName =张青裁思考:以下的删除语句可以执行吗?思考:以下的删除语句可以执行吗?DELETE SCode FROM Students删除数据行删除数据行3.5 插入、更新和删除表数据插入、更新和删除表数据TRUNCATE TABLE TRUNCATE TABLE StudentsDELETE FROM Students=删除数

59、据行删除数据行3.5 插入、更新和删除表数据插入、更新和删除表数据案例分析1要求某公司印了一批充值卡,卡的密码是随机生成的,现在某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题出现这个问题:卡卡里面的里面的“O和和0”(哦和零)(哦和零)“i和和1”(哎和一),用户(哎和一),用户反映说看不清楚,公司决定,把存储在数据库中的密码中反映说看不清楚,公司决定,把存储在数据库中的密码中所有的所有的“哦哦”都改成都改成“零零”,把所有的,把所有的“i”都改成都改成“1”;请编写请编写SQL语句实现以上要求;语句实现以上要求;数据库表名:数据库表名:Card;密码字段名:密码字段名:Pass

60、Word;案例分析1分析这是更新语句,需要使用这是更新语句,需要使用UPDATE语句;语句;因为牵涉到字符串的替换,需要使用到因为牵涉到字符串的替换,需要使用到SQLServer中的函中的函数数Replace;案例分析1T-SQL两行SQL语句Update Card Set PassWord = Replace(PassWord,O,0)Update Card Set PassWord = Replace(PassWord,i,1)一行SQL语句Update Card SetPassWord = Replace(Replace(PassWord,O,0),i,1)案例分析2要求在数据库表中有以

61、下字符数据,如:在数据库表中有以下字符数据,如:13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2现在希望通过现在希望通过SQL语句进行排序,并且首先要按照前半部语句进行排序,并且首先要按照前半部分的数字进行排序,然后再按照后半部分的数字进行排需,分的数字进行排序,然后再按照后半部分的数字进行排需,输出要排成这样:输出要排成这样:13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2数据库表名:数据库表名:SellRecord;字段名:字段名:List

62、Number;案例分析2分析u这是查询语句,需要使用这是查询语句,需要使用SELECT语句。语句。u需要使用到需要使用到ORDERBY进行排序,并且在进行排序,并且在ORDERBY的的排序列中,也需要重新计算出排序的数字来。排序列中,也需要重新计算出排序的数字来。前半部分的数字,可以从先找到前半部分的数字,可以从先找到“-”符号的位置,然符号的位置,然后,取其左半部分,最后再使用后,取其左半部分,最后再使用Convert函数将其转换函数将其转换为数字:为数字:Convert(int,Left(ListNumber,CharIndex(-,ListNumber)-1)后半部分的数字,可以先找到后

63、半部分的数字,可以先找到“-”符号的位置,然后符号的位置,然后把从第一个位置到该位置的全部字符替换为空格,最把从第一个位置到该位置的全部字符替换为空格,最后再使用后再使用Convert函数将其转换为数字:函数将其转换为数字:Convert(int,Stuff(ListNumber,1,Charindex(-,ListNumber),)案例分析2T-SQL,SELECT ListNumberFROM SellRecordORDER BY Convert(int, Left(ListNumber, CharIndex(-, ListNumber)-1),Convert(int, Stuff(Lis

64、tNumber,1, Charindex(-, ListNumber), )创建约束创建约束ALTER TABLE ADD CONSTRAINT约束名 CHECK (约束表达式)|DEFAULT 默认值 FOR 字段名|PRIMARY KEY CLUSTERED(列名集合)|UNIQUE (列名集合)|FOREIGN KEY(列名) REFERENCES 主键表(列名) DROP CONSTRAINT 约束名 3.6 约束、默认和规则约束、默认和规则例例ALTER TABLE Student ADD constraint ck_student Check(GENDER=女 OR GENDER=

65、男)ALTER TABLE Student ADD constraint DE_student DEFAULT 男 for GENDERALTER TABLE Student ADD constraint PK_student PRIMARY KEY (STUD_ID)ALTER TABLE Student ADD constraint FK_student_DEP FOREIGN KEY (DEPTCODE) REFERENCES DEP(DEPTCODE)默认默认默默认认是是一一种种数数据据库库对对象象,定定义义一一次次后后,可可以以被被一一次次或或多多次次应应用用于于任任意意表表中中的的

66、一一列列或或多多列列,还还可可以以用用于于用用户户定定义义的的数数据据类类型型。创创建建和和使使用用默默认认可可以以使使用用企企业业管管理理器器和和T-SQL语句。语句。CREATE DEFAULT default_nameAS constraint_expressionEXEC sp_bindefault default_name table_name.column_name,|user_datetype 3.6 约束、默认和规则约束、默认和规则例例create default MR_student as 600exec sp_bindefault MR_student,student.MA

67、RK规则规则规规则则与与CHECK约约束束的的关关系系相相对对于于默默认认与与DEFAULT约约束束的的关关系系一一样样,规规则则这这种种数数据据库库对对象象的的作作用用与与CHECK约约束束一一样样,只只不不过过规规则则不不固固定定于于那那个个列列,而而是是创创建建好好以以后后可可以随便地绑定于表中地某个列上。以随便地绑定于表中地某个列上。创建规则的语句:创建规则的语句:CREATE RULE rule_name AS condition_expression3.6 约束、默认和规则约束、默认和规则例例create rule age_student as age15 and age30exe

68、c sp_bindrule age_student,student.age3.7 系统数据库系统数据库u master数据库数据库master数数据据库库是是SQL Server 2000中中的的总总控控数数据据库库,它它记记录录系系统统中中所所有有系系统统级级的的信信息息。它它对对其其他他的的数数据据库库实实施施管管理理和和控控制制的的功功能能,同同时时,还还保保存存了了用用于于SQL Server管管理理的的许许多多系系统统级级别别信信息息。master数数据据库库记记录录所所有有的的登登录录帐帐户户和和系系统统配配置置设设置置;记记录录所所有有其其它它的的数数据据库库,其其中中包包括括数

69、数据据库库文文件件的的位位置置;还还记记录录SQL Server的的初初始始化化信信息息,它它始始终终有有一一个个可可用用的的最最新新master数据库备份。数据库备份。 3.7 系统数据库系统数据库u model数据库数据库model数数据据库库为为用用户户新新创创建建的的数数据据库库提提供供模模板板和和原原型型。包包含含用用户户数数据据库库中中应应该该包包含含的的所所有有系系统统表表的的结结构构。当当用用户户创创建建数数据据库库时时,系系统统会会自自动动地地把把model数数据据库库中中的的内内容容复复制制到到新建的用户数据库中。新建的用户数据库中。3.7 系统数据库系统数据库u msdb

70、数据库数据库当当很很多多用用户户在在使使用用一一个个数数据据库库时时,经经常常会会出出现现多多个个用用户户对对同同一一数数据据的的修修改改而而造造成成数数据据不不一一致致现现象象,或或者者是是用用户户对对某某些些数数据据和和对对象象的的非非法法操操作作等等。为为了了防防止止上上述述现现象象的的发发生生,SQLServer的的代代理理程程序序能能够够按按照照系系统统管管理理员员的的设设定定来来监监控控上上述述现现象象的的发发生生,否否则则及及时时向向系系统统管管理理员员发发出出警警报报。那那么么当当代代理理程程序序调调度度警警报报和和作作业业、记记录录操操作作员员的的时时候候,系系统统要要用用到

71、到或实时产生许多相关信息,这些存储在或实时产生许多相关信息,这些存储在msdb数据库里面。数据库里面。3.7 系统数据库系统数据库u tempdb数据库数据库tempdb数据库保存所有的临时表和临时存储过程。数据库保存所有的临时表和临时存储过程。tempdb数据库是全局资源,所有连接到系统的用户数据库是全局资源,所有连接到系统的用户的临时表和存储过程都被存储在该数据库中。的临时表和存储过程都被存储在该数据库中。SQLServer2000还提供了两个样板数据库:还提供了两个样板数据库:pubs和和Northwind。其中。其中pubs数据库记录了一个虚构的出版公数据库记录了一个虚构的出版公司的数

72、据信息。而司的数据信息。而Northwind数据库则保存了一个虚构的贸数据库则保存了一个虚构的贸易公司的数据信息。易公司的数据信息。3.8 创建用户数据库创建用户数据库CREATE DATABASE database_nameONPRIMARY (NAME=logical_file_name, FILENAME=os_file_name,SIZE=size,MAXSIZE=max_size|UNLIMTED,FILEGROWTH=grow_increment),nLOG ON(NAME=logical_file_name,FILENAME=os_file_name,SIZE=size,MAXS

73、IZE=max_size|UNLIMTED,FILEGROWTH=grow_increment),n CREATE DATABASE studentON PRIMARY(NAME=student_data,FILENAME=c:Program FilesMicrosoft SQL ServerMSSQLDatastudent.mdf,SIZE=25,MAXSIZE=100,FILEGROWTH=15%)LOG ON(NAME=student_log,FILENAME=c:Program FilesMicrosoft SQL ServerMSSQLDatastudent.ldf,SIZE=10,MAXSIZE=20,FILEGROWTH=2)3.8 创建用户数据库创建用户数据库

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号