SQL语法教材.docx

上传人:b****5 文档编号:2837253 上传时间:2022-11-15 格式:DOCX 页数:20 大小:37.93KB
下载 相关 举报
SQL语法教材.docx_第1页
第1页 / 共20页
SQL语法教材.docx_第2页
第2页 / 共20页
SQL语法教材.docx_第3页
第3页 / 共20页
SQL语法教材.docx_第4页
第4页 / 共20页
SQL语法教材.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

SQL语法教材.docx

《SQL语法教材.docx》由会员分享,可在线阅读,更多相关《SQL语法教材.docx(20页珍藏版)》请在冰豆网上搜索。

SQL语法教材.docx

SQL语法教材

一、利用SELECT语句选取资料

1.SELECT语法基本构架

2.选取全部资料

3.指定字段

4.选取不重复资料

5.衍生字段

6.资料排序

7.资料分组

8.加上选择条件

9.使用通配符

10.表之间的关联Join

11.子查询

12.UNION

二、操作数据库记录

1.利用INSERT语句新增记录

2.由其他表选取资料新增到指定表中

3.删除表中的记录

4.更新数据

三、常用函数

1.汇总函数

2.字符串函数

四、游标CURSOR

1.CURSOR定义的基本语法

2.打开CURSOR

3.提取CURSOR中的记录

4.使用WHILE循环语句遍历CURSOR

5.释放CURSOR

五、创建临时表

六、创建存储过程(CREATEPROCDURE)

1.创建存储过程的基本语法

2.删除存储过程

3.执行存储过程

4.定义变量

5.为变量赋值

6.一个典型的实例

一、利用SELECT语句选取资料

1.SELECT语法基本构架

SELECT字段1,字段2,…字段n

FROM表1,表2,…表n

WHERE条件

GROUPBY字段1,字段2,…字段n

ORDERBY字段1,字段2,…字段n

字段

可以是数据表中所定义的字段,也可以是一衍生字段。

在SELECT语句中可以一次选择数个字段,但每个字段之间必须以逗号隔开。

数据表

在SELECT语句中可以一次指定一个或数个数据表,当指定一个以上表时就牵涉到表之间的关联(Join)。

条件

资料选取时的设定条件,可以设定大于,小于或等于等基本判断条件,而且可以指定多个条件,每个条件之间以‘AND’或‘OR’逻辑运算符连接。

ORDERBY、GROUPBY

对选取的数据进行排序(Sorting)和分组(Grouping)等动作。

例1:

想要知道库存数据为负数且使用中物料有哪些?

EX:

SELECTDISTINCTpt_part,pt_desc1,pt_desc2,pt_um

FROMpt_mstr,ld_det

WHEREpt_part=ld_partAND

Pt_status=1AND(使用中)

Ld_qty_oh<0(库存为负)

ORDERBYpt_part(按物料编码排序)

 

2.选取全部数据

要浏览整张数据表内的数据时,只要用SELECT*即可。

SELECT*FROMpt_mstr

3.指定字段

若只想选取表的部份字段时,则在SELECT后加字段名单,可以指定多个字段,每个字段之间必须用逗号分开。

SELECTpt_part,pt_desc1,pt_umFROMpt_mstr

4.选取不重复的资料。

有时数据表中某些字段含有重复值,在选取时如果不想看到重复的值,可以在SELECT语句后加上DISTINCT语句。

例1中就用到此语句:

想要知道库存数据为负数且使用中物料有哪些?

EX:

SELECTDISTINCTpt_part,pt_desc1,pt_desc2,pt_um

FROMpt_mstr,ld_det

WHEREpt_part=ld_partAND

Pt_status=1AND(使用中)

Ld_qty_oh<0(库存为负)

ORDERBYpt_part(按物料编码排序)

库存明细表(ld_det)中同一物料可能存在多个库位的库存数量为负。

5.衍生字段

在SELECT语句中除了可以以数据表中的字段作为选取对象外,也可以自创衍生字段作为SELECT语句的输出字段。

衍生字段可以是字段间经由一般加减乘除运算产生外,也可以由SQLServer所提供的内建函数(function)产生。

衍生字段可以用自定义字段名=或as自定义字段名进行

重新命名。

SELECTpt_part,pt_desc=(pt_desc1+pt_desc2)

FROMpt_mstr

SELECTpt_part,(pt_desc1+pt_desc2)aspt_desc

FROMpt_mstr

6.资料排序

选取所要的资料后,可以对这些资料以一个或多个字段组合作为键值依序排列,排序的方向可以由小到大(ASC:

ascending)或由大到小(DESC:

descending)排序,若未指定ASC或DESC,则系统内定为由小到大(ASC)。

注:

当作排序的键值一定要出现在所选取的字段清单中。

SELECT*

FROMpt_mstr

ORDERBYpt_partDESC

7.资料分组

可以利用GROUPBY子句对SELECT语句所选取的资料作分组,分组后资料可以显示出来,或利用SUM(),AVG()等汇总函数对特定字段计算每组资料的总和或平均值。

例2:

想知道供应商送货总金额

SELECTprh_vend,sum(prh_qty_rcvd*prh_pur_cost)asprh_amt

FROMprh_hist

GROUPBYprh_vend

GROUPBY子句后经常会配合用HAVING子句作为每一组的筛选条件。

例3:

想知道送货总金额大于100000的供应商

SELECTprh_vend,sum(prh_qty_rcvd*prh_pur_cost)asprh_amt

FROMprh_hist

GROUPBYprh_vend

HAVINGsum(prh_qty_rcvd*prh_pur_cost)>100000

ORDERBYprh_vend

8.加上选择条件

若只想选取数据表内的部分资料时,必须加上选择条件,也就是在SELECT语句中加上WHERE子句,在WHERE子句中以比较运算符来构成选择条件。

以下是可以在WHERE子句中使用的比较运算符:

 

=等于

!

=或<>不等于

>大于

<小于

>=大于等于

<=小于等于

BETWEEN介于..之间

NOTBETWEEN介于..之外

IN(NOTIN)字段值是否存在于清单内

ISNULL(ISNOTNULL)字段值是否为NULL

LIKE类似于

可以一次指定数个条件,每个条件间以逻辑运算符NOT,AND,OR连接条件判断的优先次序依次为:

NOT,AND,OR。

可使用括号来区分逻辑运算符的优先顺序。

9.使用通配符

当WHERE子句中指定条件使用了LIKE运算符,则可使用通配符代表任意字符,通配符主要有如下几个:

%任何多个字符(包括零个)的字符串

_(下划线)任何单个字符

[]指定范围([a-f])或集合([abcdef])中的任何单个字符

[^]不属于指定范围([a-f])或集合([abcdef])中的任何单个字

例4:

1)WHEREpt_partLIKE'%200%'

查找出物料编码中任意位置包含200的所有物料

2)WHEREpt_partLIKE'A01-100-00_'

查找出物料编码中以A01-100-00开头,最后一位为任意值的所有物料

3)WHEREpt_partLIKE'[C-P]%'

查找出物料编码中以介于C与P之间的任何单个字符开头的所有物料

4)WHEREpt_partLIKE'[^C-P]%'

查找出物料编码中不以介于C与P之间的任何单个字符开头的所有物料

10.数据表的关联JOIN

利用SELECT语句由不同的数据表中选取字段时,称之为对数据表的JOIN动作。

若选用的字段名称在JOIN数据表的两边皆存在,则必须以表名.字段名明确指定字段属于哪一张数据表。

JOIN并不限定只能针对两个表作为处理对象JOIN条件中所牵涉到的字段最好是索引字段,否则JOIN的速度会很慢。

使用别名

如果在每个字段名称前加上表名,则会使语句看起来很长,此时可使用较短的别名来代表数据表名称。

Self-Join

在表JOIN中并不是只有不同的表才可以JOIN,同一个表也可以和自已JOIN。

由于self-join牵涉到的是两个相同的表,因此可利用别名的方式把同一数据表做为不同的表来JOIN。

例5:

列出在库位R01中4月份的期末数量不等于5月份期初数量所有物料

SELECTa.inb_part,pt_desc1,pt_um,a.inb_qty_end,b.inb_qty_beg

FROMinb_histaJOINinb_histbONa.inb_site=b.inb_site

ANDa.inb_part=b.inb_part

ANDa.inb_loc=b.inb_loc

JOINpt_mstrONpt_part=a.inb_part

WHEREa.inb_loc=‘R01’

ANDa.inb_year=2005

ANDb.inb_year=2005

ANDa.inb_month=4

ANDb.inb_month=5

ANDa.inb_qty_end<>b.inb_qty_beg

Inb_hist(物料月结表)分别用a,b两个别名表示两个不同的表来JOIN

 

Outer-Join

以主表的每笔记录去匹配(match)附属表的字段,不论是否符合JOIN条件的记录都会选取出来,只是那些附属表中不符合条件的字段将会被置上NULL值。

语法如下:

FROM表1

{LEFT|RIGHT|INNER}JOIN表2ON<条件>

当使用LEFTJOIN时,在左边的表为主表,右边的表为附属表,相反,使用RIGHTJOIN时,在右边的表为主表,左边的表为附属表,INNERJOIN则无主表与附属表之分,两表中条件都符合的记录才会被选取出来。

例6:

列出所有物料在地点1000,库位R01中的当前库存数量

SELECTpt_part,pt_desc1,pt_um,ld_qty_oh

FROMpt_mstrLEFTJOINld_detONld_site=‘1000’AND

Ld_loc=‘R01’AND

Ld_part=pt_part

ORDERBYpt_part

在库存表(ld_det)中不存在库存数的物料也会列出,

只是库存数(ld_qty_oh)为NULL值。

 

11.子查询(SubQuery)

当一SELECT语句放在SELECT,INSERT,UPDATE,DELETE语句中的WHERE子句中作为比较条件时,该SELECT语句就称之为子查询。

子查询的使用方法有如下三种样式:

SELECT…WHERE字段或运算式比较运算符[ANY|ALL](子查询)

SELECT…WHERE字段或运算式[NOT]IN(子查询)

SELECT…WHERE[NOT]EXISTS(子查询)

第一种样式:

只要主查询中的字段或运算式的值与子查询所得结果中之任一(ANY)或全部(ALL)资料符合比较条件,则主查询的结果为我们要的资料。

如省略关键词

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1