第二章 Transact-SQL 语句及编程概述
在编写和执行Transact-SQL语句时,使用:
●数据控制语句(DCL)语句,用于确定谁可以查看或更改数据库。
●数据定义语句(DDL)语句,用于创建数据库对象。
●数据操作语句(DML)语句,用于查询和更改数据。
●其它语言元素,如变量,运算符,函数,控制流语句和注释。
一、 数据控制语言语句
设置或更改权限
●GRANT
●DENY
mysql语句的执行顺序●REVOKE
二、 数据定义语句
创建数据库、表和用户定义的数据类型,管理数据库对象
●CRAETE Object_name
●ALTER Object_name
●DROP Object_name
三、 数据操作语句
处理数据库中的数据
●SELECT
●INSERT
●UPDATE
●DELETE
四、 其它语言元素
1.程序注释语句
●两种形式的程序注释语句:
一种使用/*和*/括起来的可以连续书写多行的注释语句。
一种使用- -表示的只能单行书写的注释语句。
2.局部变量(用户定义)
●在DECLARE语句中定义
DECLARE @varible_name datatype [,…n]
●局部变量名必须以@打头;有识别颜的软件吗
●数据类型可以是系统数据类型和用户数据类型(除text,ntext,image),初始值为NULL
●为局部变量赋值:
使用SELECT语句
使用SET语句
DECLARE @MYCOUNTER INT,@MYV AR CHAR(20)
SELECT @MYCOUNTER=20
SET @MYV AR=’THIS IS A TEST’
●在声明它的语句、批或过程中使用
3.全局变量
frp函数编程●全局变量由SQL Server预先定义和维护,不是由用户程序定义,是在服务器级定义的;
●用户不能给全局变量赋值,或直接更改变量中的值;
●全局变量名字的前面有两个@符;
●这些变量不能由用户参与定义,反映的是服务器当前活动状态的信息;
●局部变量不能与全局变量名称相同,否则会出现不可预测的结果。
●一共提供了30多个全局变量,例如:
@@CONNECTIONS:对此服务器进行的连接数目
@@ERRORS:反映一条语句的执行情况,执行成功,返回0
@@IDENTITY:返回最近一次插入的IDENTITY列的数值
@@ROWCOUNT:返回上一条SQL语句影响的行的数目
@@VERSION:返回当前服务器的安装日期,版本和处理器的类型
4.运算符
●算术运算符:+,-,*,/,%
●比较运算符:< , > , = , >= , <= , <>(!=)
●字符串并置运算符:+
●逻辑运算符:NOT ,AND,OR
●组合运算符: ()
5.函数
Transact-SQL提供的函数大致可以分为以下几类:
●数学函数
ABS(数值型表达式)
ASCII(字符型表达式) 返回字符表达式最左端字符的 ASCII 代码值
POWER(数值表达式1, 数值表达式2) 乘方
SQUARE(FLOAT表达式)
SIGN(数值型表达式) 符号函数返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号
RAND(整形表达式) 返回 0 到1 之间的随机float 值
●字符串函数
LEN(字符串表达式) 返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格
DATALENTH(表达式) 返回任何表达式所占用的字节数
LEFT(字符型表达式,整型表达式)
RIGHT(字符型表达式,整型表达式)
SUBSTRING(字符型表达式,整型表达式, 整型表达式) 返回字符、binary、text 或 image 表达式的一部分
全网素材UPPER(字符型表达式)
LOWER((字符型表达式)
SPACE(整型表达式)
REPLICATE(字符型表达式,整型表达式) 以指定的次数重复字符表达式
STUFF(字符型表达式,整型表达式, 整型表达式,字符型表达式) 删除指定长度的字符并在指定的起始点插入另一组字符
REVERSE(字符型表达式) 返回字符表达式的反转
LTRM(字符型表达式)
RTRIM(字符型表达式)
STR(FLOAT型表达式,长度,小数点后长度) 由数字数据转换来的字符数据
CHAR(整数型表达式)
●日期函数
GETDATE() 回当前系统日期和时间
DATEPART(datepart,date) 返回代表指定日期的指定日期部分的整数
DATENAME(datepart,date) 返回代表指定日期的指定日期部分的字符串
DATEADD(datepart,number,date) 在向指定日期加上一段时间的基础上,返回新的datetime值
mysql select into from 用法DATEDIFF(datepart,startdate,enddate) 返回跨两个指定日期的日期和时间边界数
DAY(date)
MONTH(date)
YEAR(date)
●系统函数
通过调用系统函数,可以获得有关服务器,用户,数据库状态等系统信息;
用于管理,维护服务器方面。举例:
CURRENT_USER
SYSTEM_USER
HOST_NAME()
OBJECTID(‘OBJECT’) 返回数据库对象标识号
COL_NAME(TABLE_ID,COLUMN_ID) 返回数据库列的名称,该列具有相应的表标识号和列标识号。
●统计函数
●其它
ISDATE(表达式) 确定输入表达式是否为有效的日期
ISNUMERIC(表达式) 确定表达式是否为一个有效的数字类型
ISNULL(表达式1,表达式2) 使用指定的替换值替换 NULL
PRINT(字符型表达式) 将用户定义的消息返回客户端
CAST(表达式 AS 数据类型) 将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能
CONVERT()
6.流控制语句
当一个语句中同时包含多个逻辑运算符时,取值的优先顺序依次为:NOT、AND 和 OR
●IF…ELSE条件结构
IF logical_expression
Expression1
[ELSE
expression2]
举例:
USE PUBS
GO
IF (SELECT A VG(PRICE) FROM TITLES WHERE TYPE='BUSINESS')<$20 BEGIN
"以下是一些很好的经济类书籍"
PRINT
SELECT TITLE FROM TITLES WHERE TYPE='BUSINESS' END
ELSE考软件架构师需要哪些知识
"平均价格超过$20."
PRINT
GO
常用形式:
IF [NOT] EXISTS (SELECT语句)
SQL语句组1
ELSE
SQL语句组2
●BEGIN…END语句块
使用关键字可以将一组SQL语句封装在一个完整的SQL语句块
●WHILE循环结构
WHILE logical expression
BEGIN
Expression
[BREAK]
[CONTINUE]
END
举例:
DECLARE @V1 INT,@SUM INT
SET @V1=0
SET @SUM=0
WHILE @V1<100
BEGIN
SELECT @V1=(@V1+1)
SELECT @SUM=(@SUM+@V1)
IF @SUM>2000
BREAK
END
SELECT @V1,@SUM
●CASE分支结构
CASE
[WHEN logical_expression THEN result expression]
[….n]
ELSE result_expression
END
举例:
SELECT "作者" =
C ASE STATE
WHEN "CA" THEN "来自加利福尼亚"
WHEN "KS" THEN "堪萨斯州"
ELSE "来自其他州"
E ND,
A U_FNAME+'.'+AU_LNAME
FROM AUTHORS
ORDER BY STATE
GO
五、 执行Transact-SQL语句的方法
1. 使用批
●指从客户端传递到服务器的一组完整的数据和指令,批处理的所有语句被当成一个整体,
分析,编译和执行
●在一个批处理中,可以包含一条SQL指令,或多条SQL指令
●所有批处理命令都以GO作为结束标志,当编译器读到GO时,会把它前面的所有语句当
作一个批处理
●如果在批中存在语法错误,该批中的语句都不执行
●用户定义的变量的作用域限制在一个批,不能在GO后面引用
●一些语句不能在一个批中联合使用
PROCEDURE
CREATE
VIEW
CREATE
TRIGGER
CREATE
RULE
CREATE
DEFAULT
CREATE
2. 使用事务
●象批一样处理
●不同点: 对数据库的修改要么全都执行,要么全不执行
●事务作为一个工作单元被处理,可以保证数据的完整性.
●部分语法:
BEGIN TRANSACTION
TRANSACTION
COMMIT/ROLLBACK
举例:
BEGIN TRAN
UPDATE savings SET amount=(amount-100)
custid=78910
Where
UPDATE checking SET amount=(amount+100)
custid=78910
Where
COMMIT TRANSACTION
3. 使用脚本
●最常见的一种方法
●可以使用任何文本编辑器编写
●作为文件保存的一条或多条Transact-SQL语句,扩展名为: .sql ●可以在查询分析器中执行
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论