您的位置:首页 > 数据库 > SQL

SQLserver运维必备:T-SQL语句简介

2017-04-12 15:10 246 查看
小生博客:http://xsboke.blog.51cto.com
小生 Q Q:1770058260

-------谢谢您的参考,如有疑问,欢迎交流

一、T-SQL语言组成T-SQL主要有三种语言组成:
1. DML:数据操纵语言(data manipulation language)

查询、插入、删除和修改数据

SELECT、INSERT、UPDATE、DELETE

2. DDL:数据定义语言(data definition language)

建立数据库、数据库对象和定义其列

CREATE(新建数据库或者表)、ALTER(增加数据表中的列)、DROP(删除数据库或表)

3. DCL:数据控制语言(data control language)

控制数据库组件的存取许可、存取权限等

GRANT(授予权限)、REVOKE(回收权限)、DENY(拒绝)

二、SELECT语法结构1. select语句的语法。
SELECT select_list[INTO new_table_name]FROM table_name[ WHERE search_conditions ][GROUP BY group_by_expression] [HAVING search_conditions][ORDER BY order_expression [ASC|DESC] ] 参数解释:

SELECT子句:指定查询内容
INTO子句:把查询结果存放到一个新表中
FROM子句:指定查询源
WHERE子句:查询条件
GROUP BY子句:指定查询结果的分组条件
HAVING子句:指定分组后在执行的条件,与GROUP BY子句一起使用,和where的功能一样,但是分组后的条件不能使用where只能使用having
ORDER BY子句:指定查询结果的排序方式,默认是升序asc,降序是desc。

2. 表达式,一般用于设置条件时。
1)条件表达式
①常量:表示单个指定数据值的字母、数字或符号②列名:表中列的名称③一元运算符:仅有一个操作数的运算符:“+”表示正数,“-”表示负数④二元运算符:将两个操作数组合执行操作的运算符:算术运算符、位运算符、逻辑运算符、比较运算符





2)逻辑表达式
用逻辑运算符将条件连接起来,运算结果是一个逻辑值:TRUE(真)或FALSE(假)



关键字“in”可以用来限制范围,
例:限制付款时可以使用的信用卡种类
付款方式=‘信用卡’ and 信用卡 in (‘牡丹卡’,‘金穗卡’,‘龙卡’,‘阳光卡’) 3. as的用法(as就是给某个输出结果的列名设置别名,然后输出时列名用别名显示)
优点是可以事查询结果更人性化显示,比如把英文的列名输出成为中文的列名。 例:查询表student中所有学员的平均分 1) 不加as时
Select AVG(成绩)
From student


2) 加as时
Select AVG(成绩) as 平均成绩 From student


4. Like的用法(用于不完全匹配的条件)
例:查询出表student中姓张的学员

5. In的用法(限制范围)
例:查询出student表中成绩为89、90、91的学生。

6. Top的用法(限制查询返回值的行数)
例:查询student表中的前五行的学员

7. 函数count的用法(统计行)
例:查询出表中每种职位的总人数

三、多表查询1. 表的连接类型
1)内连接(INNER JOIN) 只返回两个数据集合之间完全匹配关系的行 2)外连接(左右外连接其实差不多,记住一个即可) ①左外连接(LEFT JOIN/leftouter join) 结果集包括左表的所有行 ②右外连接(RIGHT JOIN/rightouter join) 结果集包括右表的所有行 ③完整外连接(FULL JOIN/fullouter join) 返回左表和右表中的所有行 3)交叉连接(cross join,一般不用) 返回左表与右表挨个连接的所有行2. 内连接:只返回两个表中完全匹配的行
例:在表A和表B中使用内连接查询学生姓名和职业(两个表中存在的姓名是不完全一样的) 1) 方法1:结果显示如下图
select A.name,a.school,b.job from A,B where a.name=b.name

2) 方法2:结果显示如下图
select A.name,a.school,b.job from A innerjoin B on A.name=b.name

3. 外连接
1) 左外连接
例:在表A和表B中用左外连接查询学生姓名、学校和职业

2) 右外连接
例:在表A和表B中用左外连接查询学生姓名、学校和职业

3) 完整外连接:不再举例,完整外连接将只显示两张表中完全匹配的内容
4. 事务(如果执行的语句中有一条错误,此语句将不执行,并数据恢复语句执行前)
1) 事务简介
① 概念
事务是一个不可分割的工作逻辑单元,包括一组命令,这组命令要么都执行,要么都不执行。 ② 属性

原子性:事务是一个完整的操作。事务的各元素是不可分的。

一致性:当事务完成时,数据必须处于一致状态。

隔离性:事务是独立的,它不以任何方式依赖于或影响其他事务。

持久性:一旦事务被提交,事务的效果会被永久的保留在数据库中。

2) 执行事务的语法
①开始事务:BEGIN TRANSACTION ②提交事务:COMMITTRANSACTION ③回滚(撤销)事务:ROLLBACKTRANSACTION 3) 例:

张三卡中余额只有1000,李四向张三借1000,但是银行限制余额最少为1,这时就需要使用事务,否则结果将导致张三的余额不变,而李四的余额多了1000.

select *from bank

updatebank set 余额=余额-1000
where 账户='张三'
updatebank set 余额=余额+1000
where 账户='李四'

print '查看转帐事务前的余额'
select *from bank
/*--开始事务(指定事务从此处开始,后续的T-SQL语句都是一个整体--*/
begintransaction
/*--定义变量,用于累计事务执行过程中的错误--*/
declare@errorsum int --声明变量,用于保存所有T-SQL语句错误号的和
set@errorsum=0
/*--转帐:张三的帐户少1000元,李四的帐户多1000元--*/

updatebank set 余额=余额-1000
where 账户='张三'

set@errorsum=@errorsum+@@ERROR --累计是否有错误
updatebank set 余额=余额+1000
where 账户='李四'
set@errorsum=@errorsum+@@ERROR --累计是否有错误

print '查看转帐事务过程中的余额'
select *from bank

/*--根据是否有错误,确定事务是提交还是撤销--*/
if@errorsum<>0 --如果有错误
begin
print '交易失败,回滚事务'
rollbacktransaction
end
else
begin
print '交易成功,提交事务,写入磁盘,永久地保存'
committransaction
end
go
print '查看转帐事务后的余额'
select *from bank
go
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL 语句 DBA