`
bcyy
  • 浏览: 1826779 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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 NAME DESC; 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语句的默认值,但有UNIONSELECT语句除外。

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’

更新StoreCodeTestCity字段的值为There

3.4DELECT 语句

DELETEStores

WHEREStoreCode = ‘Test’

删除字段StoreCodeTest的数据表

注意:SQL Server不允许删除作为外键约束被引用的行。

如果一行使用外键引用另一行(无论是否在同一个表),则要先删除被引用行后才能删除引用行。

本章小结:

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics