第 3章 T-SQL基本语句
首先 T-SQL是什么?
T-SQL是结构化查询语言( Structured Query Language)的“方言”。
这一章要学习的主要有以下四种 T-SQL语句:
· SELECT
· INSERT
· UPDATE
· DELETE
3.1基本 SELECT语句
3.1.1 SELECT语句与 FROM子句
最简单的 SELECT语句:
==》 SELECT *FROMSales.Customer
解析: *表示一个通配符,实际功能与其他地方使用的含义相同。
Select *表示选择表中的所有的列。
From子句表示要输出信息的来源,这里是 "Sales.Customer"
3.1.2 WHERE子句
问: where子句用来做什么?
答: WHERE子句用来设定返回记录的限制条件。
问: where子句怎么来用?
答: SELECT Name, ProductNumber,ResorderPoint
FROMProduction.Product
WHERE ProductID = 356;
下面列举 WHERE子句中可以使用的所有运算符:
比较运算符:
= , < , > , >= , <=, <> , != , !> ,!<
逻辑运算符:
AND, OR, NOT
BETWEEN 运算符: <列名 >BETWEEN 1 AND 5
LIKE 运算符: <列名 >LIKE "ROM%" 可以使用 %和 _作为通配符。 %表示可以代替任意长度的字符串。 _表示可以代替任意的单个字符。
IN 运算符: <列名 >IN ("A", "b", "345)
ALL 、 ANY 、 SOME 运算符: <列名 |表达式 >比较运算符 <ANY|SOME>(子查询)
EXISTS :用在子查询
3.13ORDER BY子句
问: ORDER BY子句用来做什么?
答: ORDER BY子句用来定义返回数据的排列顺序。
问:怎么用?
答: SELECT Name, ProductNumber,ResorderPoint
FROMProduction.Product
ORDER BY Name ;
问:降序和升序怎么实现?
答: ORDER BY NAMEDESC ; DESC关键字实现按 NAME降序排列
ORDER BY NAME ASC; ASC关键字实现按 NAME升序排列(是默认的排序方式)
3.14使用 GROUP BY子句聚合数据
问: GROUP BY用来做什么?
答: GROUP BY子句用于聚合信息。
具体效果比较:
SELECTSalesOrderID, OrderQty
FROMSales.SalesOrderDetail
WHERESalesOrderID IN (43660, 43670, 43672);
SELECT SalesOrderID , SUM ( OrderQty ) AS TotalOrderQty
FROM Sales . SalesOrderDetail
WHERE SalesOrderID IN ( 43660, 43670, 43672)
GROUP BY SalesOrderID ;
上面用到了聚合函数,一般聚合函数和 GROUP BY子句一起使用,但聚合函数的使用不限于分组查询。
问: SQL Server有哪些聚合函数
答: SUM():返回指定列的和
AVG(): 用于计算平均值
MIN/MAX:用于计算选择列分组的最小值与最大值。
COUNT(表达式 |*):用于计算查询中返回的行数。
注意:除了 COUNT(*)函数外,所有的聚合函数多忽略 NULL值。
3.15使用 HAVING自己给分组设置条件
HAVING自己仅用于带有 GROUP BY子句的查询语句中。
SELECTManagerID AS Manager, COUNT(*) ASReports
FORMHumanResources.Employee2
WHERE EmployeeID != 5
GROUP BY ManageerID
HAVING COUNT(*) > 3;
3.16使用 FOR XML自己输出 XML
3.17使用 OPTION子句利用提示
OPTION子句是一种用来最优化运行 SQL查询的方法。
3.18 DISTINCT和 ALL谓词
如果指定 DISTINCT谓词,则表示在计算时要取消指定列中的重复值。反之,不取消重复。
DISTINCT谓词用于过滤掉重复的行,而 ALL指包括所有的行。 ALL是任意 SELECT语句的默认值,但有 UNION的 SELECT语句除外。
3.2使用 INSERT语句添加数据
具体语句:
use AdventureWorks
INSERT INTO Stores
VALUES
('Test','TestStore', '1234 AnyWhere Street','Here', 'NY', '00319');
解析: INSERT为该语句的实际操作,告诉 SQLSERVER 使用该语句执行什么功能,而 INSERT后面的部分仅用于说明插入数据的详细信息。
INTO关键字无真正含义,唯一目的是增强整个语句的可读性。
VALUES关键字,然后是要插入的列表。
INSERT INTO …..SELECT语句
语法结构:
INSERT INTO <表名 >
[<列名 ,列名, ….>]
<SELECT语句 >
3.3使用 UPDATE语句更新数据
UPDATEStores
SET City = ‘There’
WHEREStoreCode = ‘Test’
更新 StoreCode为 Test, City字段的值为 There
3.4DELECT语句
DELETEStores
WHEREStoreCode = ‘Test’
删除字段 StoreCode为 Test的数据表
注意: SQL Server不允许删除作为外键约束被引用的行。
如果一行使用外键引用另一行(无论是否在同一个表),则要先删除被引用行后才能删除引用行。
本章小结:
读外国的书,如果翻译得不好,也会误导人。感觉一整章下来,介绍的东西似乎不怎么清晰,我感觉好像缺点什么。不过关于这些基本操作,也差不多了。自然数据库可没有简单,硬着头皮学下去吧。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com