SQL SERVER2000部分函数和控制流程及其它介绍
l SQL SERVER中的函数
l 系统函数:
l ISNULL: 用指定值替换表达式中的指定空值 select ISNULL(polity(字段名),’团员’), 如果polity字段值为null,则该字段值用团员填充
l ISNUMERIC: 检查给定的表达式是否为有效的数字格式
l 字符串函数
l LTRIM(EXP): 删除字符串前面的空格
l RTRIM(EXP):删除字符串后面的空格
l LOWER(EXP): 转换成小写字母
l UPPER(EXP): 转换成大写字符
l STUFF(EXP1,START,LENGTH,EXP2):在EXP1中,把从位置start开始长度为length的字符串用EXP2替换
l SUBSTRING(EXP1,START,LENGTH): 在EXP1中,返回从START开始长度为length的字符串
l LEFT(EXP,INT):返回字符串从左开始到指定位置的部分字符
l RIGHT(EXP,INT):返回字符串从右开始到指定位置的部分字符
l STR(FLOAT,[,length[,decimal]]):把数值变成字符串返回,length是总长度,decimal是小数点右边的位数
l REVERSE(EXP): 求方向表达式
l 日期和时间函数
l GETDATE(): 返回当前日期和时间 Day(date), Month(date), Year(date) 返回当前时间的年,月,日
l 数字函数
l ABS(number):返回绝对值
l PI(): 常量
l RAND():返回0和1之间的一个随机值
l SIGN(number): 根据给定的数值是否为正、负或零而分别返回1、-1或0
l 转换函数
l CAST(EXP AS Data_Type): 把一种数据类型强制转化为另一种数据类型
l CONVERT(data_type, EXP[,style]):允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把时间转换成不同的样式 style选项能以不同的格式显示日期和时间,如 101 表示mm/dd/yyyy, Convert(‘1111’, money)
l 创建自定义的函数
l 传入课程编号,返回一个表中该课程的总分
l Create function fun_sumScore
l {
l @parClassNo as varchar(10)
}
l Returns real
l Begin
l Declare @sumScore real
l Select @sumScore = sum(score)
l From t_score
l Where classNo=@parClassNo
l Return @sumScore
l End
l 使用自定义函数: select dbo. fun_sumScore(‘12312’) from t_score, 在调用返回数值的用户自定义函数时,一定要在函数名称的前面加上用户名,否则会出现“‘函数名称’”不是可以识别的函数名“的错误提示信息
l 流程控制语句
l IF…ELSE: IF(Exp) BEGIN END ELSE BEGIN END
l if ((select top 1 rid from report) > 1)
l print 'a'
l else
l print 'b'
l CASE EXP
l WHEN when_Exp THEN result_Exp
l WHEN when_Exp THEN result_Exp
l END
l Select *,班级名称(新字段名)=case number(本表字段名) WHEN ‘123’ THEN ‘高等数学’ WHEN ‘234’ THEN ‘中国历史’ END
l WHILE…CONTINUE…BREAK
l Declare @i int
l Set @i=1
l While(@i>0)
l Begin
l Set @i=@i-1 (Break or continue)
l End
l GOTO
l WIATFOR 用于暂停执行SQL语句
l WIATFOR DELAY ‘0.0.10’ 暂停指定10秒
l Return语句,和break类型,但return语句可以返回一个整型值
l 创建视图
l 可以在企业管理器中直接创建,或者用create view view_name as select * from A,B where A.name=b.name语句创建视图
l 三个关于视图的存储过程: sp_help ; sp_helptext ; sp_depends ;sp_rename old_name,new _name 重命名存储过程
l 修改视图中的数据时,不能同时修改两个或多个基表。可以对基于两个或多个基表或者视图进行修改,但是每次只能修改一个基表。
l 如果视图创建时定义了限制条件或者基表的列允许控制或有默认值,而插入的记录不满足条件时,此时仍然可以向表中插入记录,只是用视图检索不会显示出新插入的记录。如果不想这种情况发生,则可以使用with checkbox point选项限制插入不符合视图规则的视图,这样,在插入记录时,如果记录不符合限制条件则不能插入.
l 索引 sp_helpindex Report(数据表名) 查看数据表上的索引, 设置主键时会自动创建索引
l 建立索引的一般原则
l 对经常用来检索的字段建立索引
l 对数据表中的主键建立索引
l 对数据表中的外键建立索引
l 对经常用于连接的字段建立索引
l 索引的分类
l 聚集索引(一个表只能建立一个聚集索引,表中的物理顺序和索引中的物理顺序是相同的)和非聚集索引(一个表可以包含多个非聚集索引)
l 复合索引(多个字段组合的索引)
l 唯一索引(字段最好设置为not null,因为两个null值将认为是重复的字段值)
l 管理索引 所有任务à管理索引,创建,修改,删除索引
l Create Index Index_Name on Table_name(Field_Name)
l 存储过程
l 三个组成部分: 所有输入参数以及传给调用者的输出函数
l 被执行的针对数据库的操作语句,包括调用其它存储过程的语句
l 返回给调用者的状态值,已指明调用是成功还是失败(可以 @@error全局变量)
l Create procedure stu_age (创建存储过程)
l ( @s_number varchar(10),
l @age in output)
l As
l Declare @errorValue int
l Set @errorValue=0
l Select @age=year(getdate())-year(birthday)
l From t_student
l Where s_number=@s_number
l If(@@error<>0)
l Set @errorValue=@@error
l Return @errorValue
l 执行存储过程
l Execute pro_name paraName=value; execute stu_info @s_number=’12321’
l Declare @stuage int, @returnvalue int, @s_number char(10)
l Set @s_number=’1232’
l Execute @returnvalue=stu_age(proName) @s_number, @stuage output
l 全局存储过程
l Sp_help:用于显示存储过程的参数及其数据类型
l sp_helptext:用于显示存储过程的源代码
l sp_depends: 用于显示和存储过程相关的数据库对象
l sp_stored_procedures: 用于返回当前数据库中的存储过程列表
l 触发器
l 触发器是一种特殊的存储过程, 存储过程通过名称被调用,触发器主要通过事件进行触发而执行,触发器一般是在对数据表进行增,删,改时触发
l 创建触发器: 选择表à所有任务à管理触发器
l Create trigger trigger_name
l On table_name
l For insert,update,delete
l As
l Sql_statement
l 备份和还原数据库
l 选择数据库à所有任务à备份数据库
l 选择数据库à所有任务à还原数据库; 如果还原失败,可在‘选项’中‘最下面选中’使数据库不再运行‘项,然后在还原一遍就行
l 导出和导入数据
l 选择表à所有任务à导出数据; 可以导出到excel,文本文件等类型
l 选择表à所有任务à导入数据; 可以导入excel,文本文件等类型