您的位置:首页 > 数据库

SQL Server 2008编程入门经典(第3版) 学习记录3

2012-11-25 19:19 483 查看
第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 * FROM Sales.Customer
解析:*表示一个通配符,实际功能与其他地方使用的含义相同。
Select *表示选择表中的所有的列。
From子句表示要输出信息的来源,这里是"Sales.Customer"

3.1.2 WHERE子句
问:where子句用来做什么?
答:WHERE子句用来设定返回记录的限制条件。
问:where子句怎么来用?
答:SELECT Name, ProductNumber,ResorderPoint
FROM Production.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
FROM Production.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);




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



上面用到了聚合函数,一般聚合函数和GROUP BY子句一起使用,但聚合函数的使用不限于分组查询。

问:SQL Server有哪些聚合函数
答:SUM():返回指定列的和
AVG():用于计算平均值
MIN/MAX:用于计算选择列分组的最小值与最大值。
COUNT(表达式|*):用于计算查询中返回的行数。

注意:除了COUNT(*)函数外,所有的聚合函数多忽略NULL值。

3.15使用HAVING自己给分组设置条件
HAVING自己仅用于带有GROUP BY子句的查询语句中。

SELECT ManagerID AS Manager, COUNT(*) AS Reports
FORM HumanResources.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为该语句的实际操作,告诉SQL SERVER 使用该语句执行什么功能,而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不允许删除作为外键约束被引用的行。
如果一行使用外键引用另一行(无论是否在同一个表),则要先删除被引用行后才能删除引用行。

本章小结:
读外国的书,如果翻译得不好,也会误导人。感觉一整章下来,介绍的东西似乎不怎么清晰,我感觉好像缺点什么。不过关于这些基本操作,也差不多了。自然数据库可没有简单,硬着头皮学下去吧。本文出自 “一曲待续” 博客,请务必保留此出处http://wwj9520.blog.51cto.com/5769922/1070336
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: