数据库编程

来源:互联网 发布:网络用语骂人的词2017 编辑:程序博客网 时间:2024/05/25 23:59
标识符❖标识符分类 常规标识符(严格遵守标识符格式规则) 界定标识符(引号”或方括号[])❖标识符格式规则 (1)字母或_、 @、#开头的字母数字或_、 @、 $序列 (2)不与保留字相同 (3)长度小于128 (4)不符合规则的标识符必须加以界定(双引号””或方括号[])表达式❖数据类型 整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等❖变量 局部变量局部变量是用户定义,必须以@开头,在程序内声明,并只能在该程序内使用。(1)局部变量的声明DECLARE @<局部变量名> <数据类型>[,…n](2)局部变量的赋值SET|SELECT @<局部变量名>=<表达式>例1-1创建一个@myvar 变量,然后将一个字符串值放在变量中,最后输出 @myvar 变量的值。DECLARE @myvar char(20)select @myvar = 'This is a test'SELECT @myvar❖例1-2SET语句和SELECT语句为局部变量赋值。DECLARE @var1 datetime,@var2 char(10)SET @var1 = getdate()SELECT @var2 = convert(char(10),@var1,102)Select @var2 --显示@var2全局变量全局变量是SQL Server系统内部使用的变量,以@@开头。 全局变量不是由用户的程序定义的,它们是在服务器级定义的。 用户只能使用预先定义的全局变量。例1-3 用全局变量查看SQL Server的版本、当前所使用的SQL Server服务器的名称以及所使用的服务名称等信息。print '目前所用SQL Server的版本信息如下:'print @@VERSIONprint '目前SQL Server服务器名称为:'+@@SERVERNAMEprint '目前所用服务器为: '+@@SERVICENAME选择结构❖IF ELSEIFELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。其中, ELSE子句是可选的, SQL Server允许嵌套使用IFELSE语句,而且嵌套层数没有限制。 语法格式IF <布尔表达式><SQL语句>|<语句块>[ELSE<SQL语句>|<语句块>]例:查找有没有学号为201215120的学生,有的话显示学生信息,没有显式没找到。IF EXISTS( SELECT * FROM STUDENT WHERE SNO = ‘201215120’)BEGINSELECT *FROM STUDENTWHERE SNO = ‘201215120ENDELSEPRINT ‘没找到! ’EXISTS 子查询 如果子查询结果非空返回真,否则返回假CASE语句CASE语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。 CASE语句按照使用形式的不同,可以分为简单CASE语句和搜索CASE语句。 简单CASE语句CASE 表达式WHEN 表达式的值1 THEN 返回表达式1WHEN 表达式的值2 THEN 返回表达式2ELSE 返回表达式nEND例:从学生表STUDENT中,选取SNO,SSEX,如果SSEX为‘男’则输出‘ M’,如果为‘女’,则输出‘ F’。SELECT SNO,SSEX=CASE SSEXWHEN ‘ 男’ THEN ‘M’WHEN ‘ 女’ THEN ‘F’ENDFROM STUDENT搜索式CASEWHEN 逻辑表达式1 THEN 返回表达式1WHEN 逻辑表达式2 THEN 返回表达式2ELSE 返回表达式nEND例:从SC表中查询所有同学选课成绩情况,凡成绩为空者输出‘未考’、小于60输出‘不及格’ 、小于70输出‘及格’ 、小于90输出‘良好’ 、大于等于90输出‘优秀’ 。SELECT SNO,CNO,GRADE=CASEWHEN GRADE IS NULL THEN ‘ 未考’WHEN GRADE<60 THEN ‘ 不及格’WHEN GRADE>=60 AND GRADE<70 THEN ‘ 及格’WHEN GRADE>=70 AND GRADE<90 THEN ‘ 良好’WHEN GRADE>90 THEN ‘ 优秀’ENDFROM SC循环结构❖设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK 和 CONTINUE 关键字在循环内部控制WHILE 循环中语句的执行。WHILE 逻辑表达式BeginT-SQL语句组[break]/*终止整个语句的执行*/[continue]/*结束一次循环体的执行*/END❖例 求1 ~10的和DECLARE @X int, @sum intSET @X=0SET @sum = 0WHILE @x<10BEGINSET @X=@X+1SET @sum = @sum + @XPRINT ‘sum='+convert(char(2),@sum) --类型转换函数convertEND等待语句❖等待语句挂起一个程序中语句的执行,直到指定的某一时间点到来或在一定的时间间断之后才继续执行。❖语法格式: 其中,时间间隔以及时间均为datetime类型,格式为“ hh:mm:ss”,分别说明等待的时间长度和时间点,在time内不能指定日期。例1 设置等待一小时后执行查询。beginwaitfor delay '1:00:00'select * from send2 设置到十点整执行查询。beginwaitfor time '10:00:00'select * from send返回语句❖RETURN语句 RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行。 语法格式:RETURN [ integer_expression ]系统函数❖标量函数函数分类 解释配置函数 返回当前的配置信息游标函数 返回有关游标的信息日期和时间函数 对日期和时间输入值进行处理数学函数 对作为函数参数提供的输入值执行计算元数据函数 返回有关数据库和数据库对象的信息安全函数 返回有关用户和角色的信息字符串函数 对字符串( char 或 varchar)输入值执行操作系统函数 执行操作并返回有关SQL Server中的值、对象和设置的信息系统统计函数 返回系统的统计信息文本和图像函数 对文本或图像输入值或列执行操作,返回有关这些值的信息日期和时间函数函数 参数 功能DATEADD ( datepart,number,date) 以datepart指定的方式,返回date加上number之和DATEDIFF ( datepart,date1,date2) 以datepart指定的方式,返回date2与date1之差DATENAME ( datepart,date) 返回日期date中datepart指定部分所对应的字符串DATEPART ( datepart,date) 返回日期date中datepart指定部分所对应的整数值DAY ( date) 返回指定日期的天数GETDATE () 返回当前的日期和时间MONTH ( date) 返回指定日期的月份数YEAR ( date) 返回指定日期的年份数❖例: 使用日期时间函数计算自己现在的年龄❖例: 返回指定日期中年/月/日的整数。SELECT ‘ 年龄’=DATEDIFF(YY,’1979-06-01’,GETDATE())SELECT YEAR(‘2016-01-08’)