资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,回顾,维护数据库空间的方法有哪些?,分离和附加数据库是什么意思,?,为什么要有数据类型的概念?,存储,0,到,1000,之间的数值,用,bigInt,和,smallint,有什么不同吗?,Decimal,(,P,,,s,)中的,p,和,s,表示什么意思?,Decimal(2,2)?,Cast,(,expression as,data_type,)功能是什么?,2009-1-1,是什么数据类型?,练习,1,、下述正确的语句是,_,。,A,、,money,小数点后保留,4,位,而,smallmoney,小数点后保留,2,位。,B,、,money,的整数部分和,smallmoney,的整数部分范围一致。,C,、,money,的小数位数和,smallmoney,的小数位数一致。,D,、,money,类型可以有货币符号,而,smallmoney,类型不可以。,练习,2, “图书”表中价格列是一个定点小数,小数点前,3,位,小数点后保留,1,位,正确的类型是,_,。,A. numeric(3,1) B. numeric(4,1),C. numeric(5,1) D. float,练习,3,Money,数据类型和,smallmoney,数据类型的区别是,_,。,A. Money,类型保留到小数位数,4,位,而,smallmoney,保留到小数位数,2,位,B. Money,类型保留到小数位数,2,位,而,smallmoney,保留到小数位数,4,位,C.,存放的整数位数相同,小数位数不同,D.,存放的整数位数不同,小数位数相同,练习,4,用于存放定期执行任务的数据库是,_,。,A,、,master,B,、,model,C,、,msdb,D.,tempdb,练习,5,、下述哪个不是,SQL,语言的特征,_,。,A.,一体化语言,B.,过程化语言,C.,非过程语言,D.,简洁,练习,7,创建完数据库后,_,。,A,可以修改数据文件的逻辑文件名,B,可以修改数据文件的物理文件名,C,可以修改数据文件的初始大小,D,可以修改数据文件的增长方式,练习,8,SmallDatetime,类型精确到哪个时间单位()。,A,、小时,B,、分钟,C,、秒,D,、其他,练习,)用图形化工具建立满足如下要求的数据库:,(,1,)数据库名字为:,abc,;,(,2,)此数据库包含两个数据文件,其中主数据文件的逻辑文件名为:,Data1,物理文件名为,Data1_data.mdf,,初始大小为,3MB,,存放在新建目录下,增长方式为自动增长,每次增加,1MB,,最多增长到,10MB,。辅助数据文件的逻辑文件名为:,Data2,,物理文件名为,Data2_data.ndf,,初始大小为,2MB,,同主数据文件存放在相同的位置,不自动增长。,(,3,)日志文件的逻辑文件名为:,log1,物理文件名为,log1_log.ldf,,初始大小为,2MB,,同主数据文件存放在相同的位置,增长方式为自动增长,每次增加,15%,。,4.2.1.,4,字符串型,字符串是由汉字、英文字母、数字和各种符号组成。用,单引号,括起来。,普通编码字符串类型,统一字符编码字符串类型,二进制字符串类型,普通编码字符串类型,Char,(,n,),:,定长存储,,n=8000,Varchar,(,n,):,不定长存储(按实际长度存储),长度最大不超过,n , n=8000,注:,n,为字符个数,Text,:,存储大于,8000,字节的文本,统一字符编码字符串类型,nchar,(,n,),:,定长存储,,n=4000,nvarchar,(,n,):,不定长存储,长度最大不超过,n , n=4000,ntext,:,存储大于,8000,字节的文本,特点:每个字符占两个字节,二进制字符串类型,Binary(n),:,固定长度,,n 8000,,,占用,n + 4,个字节的存储空间,Varbinary(n,),:,可变长度,,n =60),select s.sno,sname,cno,grade,from s,sc,where s.sno=sc.sno and sname=,李四,else,print ,成绩不理想,例题,课本,P93,,例题,4-5,课本,P93,,例题,4-6,多分枝语句,CASE,语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。,CASE,语句按照使用形式的不同,可以分为简单,CASE,语句和搜索,CASE,语句。,简单,CASE,语句,搜索,CASE,语句,搜索,CASE,表达式,与简单表达式不同的是,搜索表达式中,,CASE,关键字后面不跟任何表达式,在各,WHEN,关键字后面跟的都是逻辑表达式,其语法格式如下。,搜索,CASE,表达式,CASE,WHEN,布尔表达式,1 THEN,结果表达式,1,WHEN,布尔表达式,2 THEN,结果表达式,2, ELSE,结果表达式,n+1 ,END,例 使用简单的,CASE,语句编写。查询客户信息,通过地址中的城市名确定其所属城市。,select,姓名,城市,=,case,when,地址,like %,深圳,% then ,深圳人,when,地址,like %,北京,% then ,北京人,when,地址,like %,上海,% then ,上海人,else ,其它城市人,end,电话,from,客户信息,go,例题,特点与执行过程,特点:,1,、,CASE,关键字的后面没有任何表达式;,2,、各个,WHEN,关键字的后面跟的都是布尔表达式;,执行过程:,1,、按从上到下的顺序为每个,WHEN,子句的布尔表达式求值;,2,、返回第一个取值为,TRUE,的布尔表达式所对应的结果表达式的值。,如果没有取值,则参照,Else,例题,例使用搜索,CASE,,根据成绩的范围将显示其对应系的文本,use test,go,declare score char(1),select score=,case,when grade=90 and grade=80 and grade=70 and grade=60 and grade700 then A,when a500 then B,when a300 then C,else D,end,print answer,简单,CASE,表达式,CASE,测试表达式,WHEN,简单表达式,1,THEN,结果表达式,1,WHEN,简单表达式,2,THEN,结果表达式,2, ELSE,结果表达式,n +1 ,END,例:每个销售人员的销售人员订单视图,,给出各销售人员的业绩等级,这里只以每两个订单进行分级。,select,工号,姓名,业绩等级,=,case,订单数,/2,when 0 then ,初级,when 1 then ,中级,when 2 then ,高级,end,订单数,from,销售人员订单视图,简单,CASE,表达式,说明,测试表达式:可以是一个变量名、字段名、函数或子查询;,简单表达式中不能包含比较运算符,他们给出被比较的表达式或值,其数据类型必须与测试表达式的数据类型相同,或者可以隐式转换为测试表达式的数据类型。,简单,CASE,表达式的执行过程,1,、计算测试表达式,然后按从上到下的顺序对每个,when,子句的简单表达式进行计算。,2,、如果某个简单表达式的值与测试表达式的值匹配,则返回与第一个取值为,TRUE,的,WHEN,相对应的结果表达式的值。,3,、如果所有的简单表达式的值都不予测试表达式的值匹配,则当指定,Else,子句时,返回,Else,子句中指定的表达式的值;如果没有指定,则返回,NULL,。,例题,例根据,sdept,的数据显示其详细内容,use test,go,declare dept varchar(50),select dept=,case sdept,when cs then ,计算机系,when info then ,信息系,when ma then ,数学系,else ,出错,end,from s,where sno=001,-,显示其值,select dept,as,系部,While,语句,WHILECONTINUEBREAK,语句用于设置重复执行,SQL,语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,,CONTINUE,语句可以使程序跳过,CONTINUE,语句后面的语句,回到,WHILE,循环的第一行命令。,BREAK,语句则使程序完全跳出循环,结束,WHILE,语句的执行。,WHILE,语句的语法形式,WHILE Boolean_expression,sql_statement,|,statement_block, BREAK ,sql_statement,|,statement_block, CONTINUE ,计算,1,到,10,之间的奇数之和,declare i tinyint,sum int,set sum=0,set i=0,while i=0,begin,if(i=10),begin,select ,总和,=sum,break,end,else,begin,set i=i+1,if(i % 2) = 0,continue,else,set sum=sum+i,end,end,示例,:,计算,1+2+3+,100,的和,DECLARE i,tinyint, sum,smallint,SET sum = 0,SET i = 1,While (i = 100 ),Begin,SET sum = sum + i,SET i = i + 1,end,print sum,1,RETURN,语句,RETURN,语句实现无条件退出执行的批处理命令、存储过程或触发器。,其他语句,GOTO,语句是无条件转移语句,语法格式为:,GOTO,标号,2,GOTO,语句,GOTO,语句,GOTO,语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于,GOTO,语句和标识符之间的程序将不会被执行。,GOTO,语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“,: ”,结尾。如:,a1: ,。在,GOTO,语句行,标识符后面不用跟“,: ”,。,GOTO,语句的语法形式为:,GOTO label,label:,GOTO,语句,例,7-57,利用,GOTO,语句求出从,1,加到,5,的总和。,程序清单如下:,declare sum,int, count,int,select sum=0, count=1,label_1:,select sum=,sum+count,select count=count+1,if count=5,goto,label_1,select count sum,3,RAISERROR,RAISERROR,语句通常用在错误处理中,它既可在屏幕上显示用户的信息,又可将错误号保存在,ERROR,全局变量中,以备错误处理时使用。其语法为:,RAISERROR ( ,消息标识,|,消息串, ,错误等级,状态, ,参数, ,.n ), WITH,选项, ,.n ,RAISERROR,语句,4.5,常用内置函数,聚合函数,日期和时间函数,数学函数,字符串函数,类型转换函数,系统函数,一 聚合函数,1.,AVG,:,返回组中值的平均值。空值将被忽略。,2.,COUNT,:,返回组中项目的数量,3.,COUNT_BIG,:,返回组中项目的数量。,COUNT_BIG,的使用与,COUNT,函数相似。它们之间的唯一差别是它们的返回值:,COUNT_BIG,总是返回,bigint,数据类型值,而,COUNT,则总是返回,int,数据类型值。,4.,MAX,:,返回表达式的最大值。,5.,MIN,:,返回表达式的最小值。,一 聚合函数(续),6.,SUM,:,返回表达式中所有值的和。,SUM,只能用于数字列。空值将被忽略。,7.,STDEV,:,返回给定表达式中所有值的统计标准偏差。,8.,VAR,:,返回给定表达式中所有值的统计方差。,示例,例,1.,返回,titles,表中所有版税(,royalty,),费用的标准偏差。,USE pubs,SELECT STDEV(royalty),FROM titles,示例,例,2.,返回,titles,表中所有版税(,royalty,),值的方差。,USE pubs,SELECT VAR(royalty),FROM titles,二,.,日期和时间函数,这些函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。,1. GETDATE ( ),返回类型:,datetime,示例,A.,用,GET DATE,返回当前日期和时间,SELECT GETDATE(),B.,在,CREATE TABLE,语句中使用,GETDATE ( ),作为列的默认值,2,DATEADD,在向指定日期加上一段时间的基础上,返回新的,datetime,值。,语法:,DATEADD (,datepart, number, date ),Datepart,的形式,日期部分 缩写 日期部分 缩写,Year,yy,yyyy,Week wk,ww,quarter,qq, q Hour,hh,Month mm, m minute mi, n,dayofyear,dy, y second,ss, s,Day,dd, d millisecond ms,示例,查询,pubs,数据库中当前发布日期加上,21,天后的日期。,SELECT DATEADD(day, 21,pubdate,) AS timeframe,FROM titles,
展开阅读全文