设为首页 收藏本站
查看: 751|回复: 0

[经验分享] SQL Server 2008编程入门经典(第3版) 学习记录3

[复制链接]

尚未签到

发表于 2016-11-7 09:24:09 | 显示全部楼层 |阅读模式
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)
ALLANYSOME运算符:<列名|表达式>比较运算符 <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);
DSC0000.png


SELECTSalesOrderID, SUM(OrderQty)AS TotalOrderQty
FROMSales.SalesOrderDetail
WHERESalesOrderID IN(43660, 43670, 43672)
GROUPBY SalesOrderID;
DSC0001.png

上面用到了聚合函数,一般聚合函数和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语句的默认值,但有UNIONSELECT语句除外。


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’
更新StoreCodeTestCity字段的值为There


3.4DELECT语句
DELETEStores
WHEREStoreCode = ‘Test’
删除字段StoreCodeTest的数据表

注意:SQL Server不允许删除作为外键约束被引用的行。
如果一行使用外键引用另一行(无论是否在同一个表),则要先删除被引用行后才能删除引用行。


本章小结:
读外国的书,如果翻译得不好,也会误导人。感觉一整章下来,介绍的东西似乎不怎么清晰,我感觉好像缺点什么。不过关于这些基本操作,也差不多了。自然数据库可没有简单,硬着头皮学下去吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-296854-1-1.html 上篇帖子: SQL Server数据库查询速度慢原因及优化方法 下篇帖子: SQL Server 分布式数据库的问题和解决方法1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表