sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx

上传人:b****4 文档编号:7024778 上传时间:2023-05-07 格式:DOCX 页数:18 大小:420.68KB
下载 相关 举报
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第1页
第1页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第2页
第2页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第3页
第3页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第4页
第4页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第5页
第5页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第6页
第6页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第7页
第7页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第8页
第8页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第9页
第9页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第10页
第10页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第11页
第11页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第12页
第12页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第13页
第13页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第14页
第14页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第15页
第15页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第16页
第16页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第17页
第17页 / 共18页
sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx

《sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。

sql维护手册第05章 TransactSQL的使用Word文档下载推荐.docx

[GROUPBYgroup_by_expression]

[WAVINGsearch_condition]

[ORDERBYorder_expression[ASC|DESC]]

FROM子句用于指明查询表格的名称,select_list为要求返回字段名称列表,new_table_是用查询结果创建新表格的名称,table_source为待查询的表格或者视图的名称,WHERE子句中的sea-rch_condition是限制查询范围的条件,group_by_expression指明将查询结果按照该表达式分组返回,HAVING子句中的search_condition是用于限制查询结果的范围的条件(与WHERE子句的条件用法不同),ORDERBY的表达式用于指明查询结果按照何种顺序返回。

下面我们一步一步讲解。

5.1.3 SELECTselect_listFROMtable_source

FROM子句用于指明查询表格的名称。

我们用his数据库中的表m_PatientInfo作例子。

先可以看一下m_PatientInfo表结构:

病人基本信息表(m_PatientInfo)

序号

字段名

字段描述

数据类型

长度

是否为空

默认值

1

MzID

门诊号

Varchar

18

Notnull

2

IdNum

证件号

17

3

BxTypeID

病人保险类型编码

Char

‘0’

4

EnterpriseID

单位编码

10

5

PersonID

身份证号

15

6

Name

姓名

12

7

Sex

性别

Bit

8

Profession

职业

9

Birthdate

出生日期

Datetime

Address

地址

40

11

Marry

婚否

TeleNum

电话

16

13

BirthAddr

籍贯

14

ZtID

职退情况编码

LzDate

领证日期

ParkFlag

停用标志

BjID

保健情况编码

‘2’

FixID

病人定点情况编码

19

SBDate

上报日期

20

PatiCatiID

病人类型编码

21

InCode

助记符

VarChar

⏹执行语句为SELECT*FROMm_PatientInfo。

(查询门诊病人基本信息表中的所有数据,即查询所有门诊病人信息。

*表示所有数据)。

在QueryAnalyzer中执行的结果如下图所示:

(图5-3)

⏹SELECT后的select_list用于指明查询返回的字端名称。

例二:

指明查询字段。

执行语句为SELECTnameFROMm_PatientInfo。

(查询门诊病人基本信息表中的name字段数据,即查询所有门诊病人的姓名)在QueryAnalyzer中执行的结果如下图所示:

(图5-4)

(Select_list指明查询返回的字段名称。

这些字段名称是在FROM子句中的表格或者视图中定义的。

查询的结果是按照Select_list指定的顺序返回的。

一般需要按照以下格式指定字段名称“table_name|view_nametable_alias.*”。

其中table_name、view_name或者table_alias是在FROM子句中指明的表格或者视图的名称。

FROM中指定表格或者视图名称,除非在select_list中指定的全都是常量,否则必须指明表格或者视图名称。

5.1.4 WHERE子句

WHERE子句中的search_condition是限制查询范围的条件。

下面所示的是WHERE子句中使用比较运算符的语法:

SELECTcolumn_name_1,…column_name_n

FROMtable_name_1,…table_name_n

WHEREcolumn_namecomparison_operatorvalue

(其中column_name_n为查询的字段名称

table_name_n为查询的表格或者视图名称

comparison_operatorvalue为比较运算符)

⏹执行带有比较运算的WHERE子句的查询结果如下图所示,执行的语句为SELECT*FROMm_PatientInfoWHEREmzid=10002000。

(查询门诊号为10002000的病人信息):

(图5-5)

(在WHERE子句的语法中允许在表列的名称之后和列值之前使用比较运算符。

以下运算符可以用:

“=”(等于)、“!

=”(不等于)“<

>

”(不等于)、“<

”(小于)、“>

”(大于)、“<

=”(小于等于)、“>

=”(大于等于)和LIKE(等于值段)。

比较运算返回一个值为布尔类型的值,如果某个记录的该比较运算返回值为真,则查询会返回该记录,如果相反,那么查询返回的记录集合中不会包括该记录。

5.1.5  LIKE关键字

⏹在QueryAnalyzer中执行带有LIKE“_”比较运算的WHERE子句的查询语句结果如下图所示,执行语句的实例为:

SELECT*FROMm_PatientInfoWHEREnameLIKE'

w%'

(查询门诊病人中名字以w开头的病人信息)(图5-6)

(图5-6)

(使用比较运算符LIKE。

这个比较运算符是一个关键字而不是一个或者两个符号。

LIKE关键字后面跟一个值段而不是一个完整的列值。

在LIKE中使用的通配符有百分号“%”,用来匹配紧跟着该百分号之前的字符的任意长度。

在LIKE中使用下划线“_”可以用来匹配长度唯一的任意字符。

方括号“[]”可以用来匹配方括号内指定值段中的任意一个字符。

在“[]”中使用“^”符号可以匹配不在所列出的值段内的字符。

5.1.6 布尔条件运算符

使用带有布尔条件运算符连接多个条件表达式的WHERE子句的SELECT语句的句法如下图所示:

Boolean_operatorcolumn_namecomparisonoperator

comparison_operatorvalue为比较运算符

Boolean_operator为布尔运算符)

⏹在QueryAnalyzer中执行带有由AND运算符连接的WHERE子句的SELECT语句,结果如下图。

执行的实例为:

select*fromm_PatientInfowhereBirthdate>

1986-01-01andsex=0。

(查询门诊病人中1986年1月1日以后出生的男病人)(图5-7)

(图5-7)

(在SELE-CT语句中可以使用布尔运算符来组合WHERE子句中的多个限制条件。

也即有多个布尔条件表达式组合构成一个新的布尔条件表达式。

凡是满足组合的条件表达式的纪录才能被查询检索到。

使用布尔运算符组合条件表达式可以帮助我们描述更为复杂的检索条件,以达到更加特定的目的。

⏹OR即“或”运算符,在OR连接条件表达式之间只要满足一个或者一个以上,该组合表达式即为真。

⏹AND即“与”运算符,是在AND连接的条件表达式必须同时满足才为真,否则组合表达式为假。

⏹NOT即“取非”运算符,它表示对NOT之后的条件表达式进行取非操作。

如果原条件表达式为真,取非后为假;

如果原条件表达式为假,取非后为真。

⏹BETWEEN可以用来设定选择值的范围。

尽管可以在WHERE子句中使用多个OR来指定选择多个行,但在T-SQL语句中还可以用BETWEEN关键字和AND一起来指定一个要检索的列值范围。

⏹IN操作符可以指定选定行的值所在的集合。

它往往也是非常灵活和有用的。

5.1.7 ORDERBY子句

数据库中的数据存储一般是无序的。

如果需要SELECT语句返回的查询结果是按照一定的顺序排列的,可以使用ORDERBY子句。

带有ORDERBY子句的SELECT语句的句法如下图所示:

ORDERBYcol_1…col_n[DESC|ASC]

col_n为排序的字段名称

DESC查询结果按降序排列

ASC查询结果按升序排列)

⏹在QueryAnalyzer中执行带ORDERBY子句的SELECT语句。

执行实例为:

select*fromm_PatientInfoorderbymzid。

(门诊病人按门诊号排序)(图5-8)

(图5-8)

在ORDERBY子句中需要指定按照哪个字段值的顺序来排列查询结果。

可以使用字段名称或者字段别名(可以通过限制在指定的表格或者视图中)来指定字段,也可以是代表字段在SELECT语句中的字段列表位置的表达式或者非负整数。

可以在ORDERBY中使用多个字段来排序。

查询结果会按照这些字段在ORDERBY的排列顺序依次对查询结果进行排序。

ORDERBY子句中还可以包括并未在SELECT语句中列出的表格中的字段名称。

但是,如果在SELECT语句中有DISTINCT限制或者SELECT语句中有UNION操作,排序的字段名称必须在SELECT语句中的字段列表中列出。

ORDERBY缺省按照升序排列。

也可以用DESC指明查询结果按照降序排列。

使用DISTINCT关键字用于限制查询结果中该字段内的值不重复。

即若有多个纪录内该字段值相同,则只返回其中的第一个纪录。

⏹在QueryAnalyzer中执行带有多个字段排序的ORDERBY子句的SELECT语句。

select*fromm_PatientInfoorderbysex,birthdate。

(先对sex排序,如值相同,再birthdate排序,即先把男病人从小到大排列,再把女病人从小到大排列)(图5-9)

(图5-9)

⏹执行带有ORDERBY子句的SELECT语句,其中排序字段用整数表示。

SELECTmzid,name,address,birthdateFROMm_PatientInfoORDERBY4DESC,1。

(查询门诊病人的门诊号、姓名、住址、出生日期,先按出生日期降序排序,如出生日期相同则按门诊号升序排序,birthdate在第四个,mzid在第一个,故4表示birthdate,1表示mzid)(图5-10)

(图5-10)

⏹在QueryAnalyzer中执行带有DISTINCT关键字的SELECT语句,结果如下图。

SELECTDISTINCTbirthdateFROMm_PatientInfoORDERBYbirthdateDESC。

(查询病人出生日期,如果有多个病人的出生日期相同,则只返回第一个病人的出生日期,即如果有两个病人都是1986年1月1日出生,则只列出一个1986-01-01)(图5-11)

(图5-11)

5.1.8 GROUPBY子句

GROUPBY子句可以将表格中的纪录分组返回。

同一组中的多个纪录在指定的字段中具有相同的值。

GROUPBY子句中应包括以下部分:

一个或者多个不带有T-SQL中集成函数的分组表达式。

这些表达式通常都会引用分组的字段。

关键字ALL是可选项。

它指明所有由GROUPBY产生的分组都要返回。

即使是返回的分组中没有一个纪录符合WHERE子句的限制条件。

CUBE或者ROLLUP。

另外,HAVING子句通常也与GROUPBY联合使用,尽管HAVING子句可以单独使用。

在GROUPBY子句中必须使用表格或者视图字段的名称,而不能使用由AS子句定义的字段别名。

在GROUPBY中可以使用多个字段进行分组。

这样,SELECT语句会对GROUPBY进行嵌套。

也就是说您可以使用任何字段组合来对查询结果分组。

CUBE和ROLLUP关键字都是要求在分组返回查询结果时,返回显示总体信息。

CUBE是返回一个概括信息。

ROLLUP是对分组嵌套中的每一层都显示概括信息。

HAVING子句用来确定SELECT语句显示的分组。

T-SQL中最基本的带有GROUPBY分组表达式的SELECT语句的句法如下图所示:

GROUPBY[ALL]group_by_expression[,…n]

[WITH{CUBE|ROLLUP}]

(其中select_list为字段列表

table_source为表格或者视图名称

all指明显示所有的分组记录

group_by_expression为分组表达式

cube|rollup显示概括信息)

我们用表RevSub作例子,先看一下表RevSub的结构。

收费发生子表(RevSub)

InvoiceID

处方流水号

varchar

RowNum

行号

int

DFFlag

药品,费用标志

smallint

DFCode

药品,费用编码

DepCode

收费科别

Quan

数量

Real

Price

单价

Money

TPrice

金额

RevPrice

实收金额

RevKeepPrice

实收记忆(帐)部分

LimitUsed

本项目耗费定额数

PayRatio

自付比例(0-1)

TallyMainRatio

主记帐比例(0-1)

TallySubRatio

子记帐比例(0-1)

InvID

出库库房

OutQuan

已取数量

OutDate

出库日期

UnitDes

界面单位(药品)

Factor

换算系数

float

Status

退费标志

TinyInt

⏹执行SELECT*FROMRevSub的返回结果如下图:

(图5-12)

⏹执行带有GROUPBY子句的SELECT语句结果如下图所示,执行的实例为:

SELECTDepCode,sum(RevPrice)FROMRevSubGROUPBYDepCode。

(这个查询的目的是把各科室的实际收入汇总。

RevSub是病人费用子表,DepCode是RevSub表中收费科别字段,RevPrice是RevSub表中实际收费字段,SUM是求和函数,SUM(RevPrice)表示对RevPrice字段求和,GROUPBYDepCode表示对DepCode分组)(图5-13)

(图5-13)

⏹在QueryAnalyzer中执行带有GROUPBY子句的SELECT语句结果如下图所示。

SELECTDepCode,SUM(RevPrice)'

SUM'

COUNT(DepCode)'

COUNT'

FROMRevSubGROUPBYDepCode。

(COUNT是一个集合函数,它返回的整数代表表达式中(通常是一列)值的个数。

'

和'

使在返回的结果中加入字段名)(图5-14)

(图5-14)

5.1.9 HAVING子句

HAVING子句可以对进行分组的数据进行限制。

HAVING是与SELECT...GROUPBY语句一起使用的分组搜索条件(通常使用集合函数)。

它与WHERE语句很相似。

SELECTDepCode,SUM(RevPrice),COUNT(depcode)FROMRevSubGROUPBYDepCodeHAVINGSUM(RevPrice)>

100。

(列出收入大于100的科室。

count(depcode)表示depcode数目)(图5-15)

(图5-15)

5.1.10 关键字CUBE和ROLLUP

⏹执行有关键字CUBE的GROUPBY子句的SELECT语句,结果如下图所示。

SELECTDepCode,sum(RevPrice)FROMRevSubGROUPBYDepCodeWITHCUBE。

(最后一行是汇总数)(图5-16)

(图5-16)

5.1.11 子查询

子查询是在SELECT、INSERT、UPDATE、DELETE语句或者其他子查询中嵌套的SELECT查询语句,返回一个值。

子查询能够在任何允许表达式出现的地方出现。

子查询通常被称作内部查询或者内选择。

相对的,包含子查询的查询语句被称作外部查询或者外部选择。

在SELECT语句中嵌套其他查询语句,子查询由以下部分组成:

一个基本的SELECT查询语句包括字段列表。

一个基本的FROM子句用于指明子查询的表格或者视图名称。

执行SELECT子查询语句结果如下图。

语句为:

selectInvoiceID,InvoiceID,TPricefromRevSubwhereQuan<

(selectavg(Quan)fromRevSubwhereRowNum='

1'

)(图5-17)

(图5-17)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2