【网学网提醒】:网学会员为广大网友收集整理了,SQL语法说明,希望对大家有所帮助!
一、利用SELECT指令选取数据
1.2.3.4.5.6.7.8.9.10.11.12.SELECT语法基本架构选取全部资料指定字段选取不重复的资料衍生字段资料排序资料分组加上选择条件使用万用字符表格的Join次查询(SubQuery)UNION
二、修改数据库内容
1.2.3.4.利用INSERT指令新增数据由其它表格处取得新增资料删除表格内的资料异动表格内的资料
三、
1.2.
常用函数
汇总函数字符串函数
一、利用SELECT指令选取数据
1.SELECT语法基本架构===============================SELECT字段1,字段2,…字段nFROM表格1,表格2,…表格nWHERE条件GROUPBY字段1,字段2,…字段nORDERBY字段1,字段2,…字段n===============================字段可以是表格中所定义的字段,也可以是一衍生字段。在SELECT指令中可以一次选择数个字段,但是每个字段间必须以逗号隔开。表格在SELECT指令中可以一次指定一个或数个表格,当指定一个以上的表格时就牵涉到表格连结(tablejoin)的动作。条件资料选取时的设定条件,可以设定大于、小于或等于等基本判断条件,而且可以指定数个条件,每个条件以”AND”或”OR”逻辑操作数连接。ORDERBY、GROUPBY对选取的资料作排序(sorting)和分组(grouping)等动作。EX:SELECTMB001,MB002FROMINVMBWHEREMB064<0ANDMB019=’Y’ORDERBYMB001
2.选取全部资料要浏览整个表格内的资料时,只要下SELECT*指令即可。EX:SELECT*FROMINVMB3.指定字段若只想选取表格内的某些字段而非全部字段时,则在SELECT后面指定字段名单,可以指定多个字段,但每个字段间必须以逗号分开。
4.选取不重复的资料有时资料表格内的某些字段含有重复的值,在选取时如果不想看到重复的值的话,可以在SELECT字句后加上DISTINCT字句。EX:SELECTDISTINCTTD004FROMCOPTD
5.衍生字段在SELECT指令中除了可以以表格中的字段作为选取标的外,也可以自创衍生字段作为SELECT指令的输出字段。衍生字段可以是表格字段间经由一般加减乘除运算产生外,也可以由SQLserver所提供的内建函数(function)产生。EX:SELECTSUM(MB065)FROMINVMB
6.资料排序选取所要的资料后,可以对这些资料以某一字段或数个字段组合当作键值依序排列,排序的方向可以依键值由小到大(ASC:ascending)或由大到小(DESC:descending)排列,若未指定是ASC或DESC,则内定的排序方向是由小到大(ASC)。*当作排序的键值一定要出现在所选取的字段清单中。EX:SELECT*FROMCOPTDORDERBYTD002
DESC
7.资料分组可以利用GROUPBY子句对SELECT指令所选取到的数据作分组,分组后资料可以显示出
来,或利用SUM()、AVG()等算术函数针对特定字段计算每组资料的总和或平均值。EX:SELECTTD004,SUM(TD008)FROMCOPTDGROUPBYTD004GROUPBY子句后经常会搭配HAVING子句作为每一群组的筛选条件。例如:要找出品号主档中品号重复的数据其指令如下EX:SELECTMB001,COUNT(*)FROMINVMBGROUPBYMB001HAVINGCOUNT(*)>1ORDERBYMB001
8.加上选择条件若只想选取表格内的部分资料而非全部资料时,必须加上选择条件,也就是在SELECT命令中加上WHERE子句,在WHERE子句中以比较操作数来构成选择的条件。以下是可以在WHERE子句中使用的比较操作数。==================================================等于!=或<>><>=<=BETWEENNOTBETWEEN不等于大于小于大于等于小于等于介于不介于
IN(NOTIN)字段值是否存在所列的清单内ISNULL(ISNOTNULL)字段值是否为NULL=================================================
可一次指定数个条件,每个条件间以逻辑操作数NOT、AND、OR连接,条件判断的优先次序依序为:NOT、AND、OR。可使用括号来区分逻辑操作数的优先次序。9.表格的Join利用SELECT指令由不同的表格挑选字段时,称之为对两个表格作join的动作。由表格1、表格2选取资料,若表格1有a、b、c三笔资料,表格2有X、Y二笔资料,则两个表格经由join结果会得到(a,X)、(a,Y)、(b,X)、(b,Y)、(c,X)、(c,Y)六笔资料。当它们共通字段值相同时才是我们要的资料,则必须加上join条件。若选用的字段其字段名称在join表格两边皆存在,则必须以表格名称.字段名称明确的指定该字段属于哪一表格。join并不限定只能针对两个表格作为处理对象引字段,否则join的速度会很慢。join条件中所牵涉到的字段最好是索
使用别名如果在每个字段名称前加上表格名称,则会使指令看起来很长,此时可使用较短的别名代表表格名称。SelfSelf-Join在表格的join中并不是只有不同的表格才可以做join,同一个表格也可以和自己做join。由于self-join牵涉到的是两个相同的表格,因此可利用别名的方式把同一表格视为不同表格再做join。
EX:SELECTA.ME001,A.ME002,B.ME001,B.ME002FROMCMSMEALEFTJOINCMSMEBONB.ME001=SUBSTRING(A.ME001,1,2)+’000’OuterOuter-Join以主表格的每笔资料去match副表格的字段,不论是否合乎join条件,资料都会筛选出来,只是那些从副表格选取不合乎条件的字段将被填上NULL。语法如下:======================================FROM表格1{LEFT|IGHT|NER}JOIN表格2ON<條件>RIN======================================当使用LEFTJOIN时,在左边的表格为主表格,右边的为附属表格,相反的,使用
RIGHTJOIN时,在右边的为主表格,在左边的为附属表格,INNERJOIN则无主表格与附属表格之分,条件符合的资料才会被筛选出来。10.次查询(SubQuery)当一SELECT指令放在SELECT、INSERT、UPDATE或DELETE指令中的WHERE子句中作为比较条件时,该SELECT指令称为次查询。次查询的使用方法有以下三种样式:======================================================SELECT…WHERE字段或表达式比较操作数[ANY|ALL](次查询)SELECT…WHERE字段或表达式[NOT]IN(次查询)SELECT…WHERE[NOT]EXISTS(次查询)======================================================第一种样式:第一种样式:只要主查询中的字段或表达式值与次查询所得结果中之任一(ANY)或全部(ALL)资料符合比较条件,则主查询的结果为我们要的资料。第二种样式:第二种样式:只要主查询中的字段或表达式值是在(不在)次查询所得结果清单中,则主查询的结果为我们要的资料。第三种样式:第三种样式:次查询的结果至少存在一笔资料时,则主查询的结果为我们要的资料(EXISTS)。次查询的结果找不到资料时,则主查询的结果为我们要的资料(NOTEXISTS)。EX:SELECTMB001,MB002,MB003FROMINVMBWHERENOTEXISTS(SELECTTD004FROMCOPTDWHERETD004=MB001
11.UNION可利用UNION指令将多个SELECT的结果集合起来。UNION指令将来自不同SELECT指令的数据混合在一起并将重复的资料剔除仅下一笔。两个SELECT指令中所选取的字段数目要相同,且相对字段的资料型别也要一致。若要做排序则在最后一个SELECT指令中指明。若要将重复的资料也列出,则可使用UNIONALL。EX:SELECTMB001FROMINVMBUNIONSELECTTD004ASMB001FROMCOPTDORDERBYMB001
二、修改数据库内容的指令
1.利用INSERT指令新增数据INSERT指令是用来将资料新增至数据库表格内,以下为最常用的语法。=======================================================INSERTINTO表格名称VALUES(字段1值,字段2值,字段3值,…)INSERTINTO表格名称(字段名称1,字段名称2,字段名称3,…)VALUES(字段1值,字段2值,字段3值,…)=======================================================第一种语法:字段值要按表格架构中的字段次序一一对应,不可随意更动前后次序,第一种语法:每个字段值以逗号隔开,输入char型别的字段时,其字段值要以单引号包夹。第二种语法:第二种语法:在表格名称后用括号列出要新增字段值的字段名称,在VALUES后则一一对应输入值。EX:INSERTINTOINVMB(MB001,MB002,MB003)VALUES(‘001’,’测试品名’,’测试规格’)12.由其它表格处取得新增资料在INSERT指令内还可搭配SELECT指令由其它表格处
取得资料再新增至被新增表格处。EX:INSERTINTOCMSMESELECTDISTINCT‘’,’’,’’,’’,’’,’’,1,MF007,’’,’’FROMADMMF
13.删除表格内的资料DELETE指令用来删除表格内全部或部分资料,以下是DELETE指令的语法。===================================DELETE[FROM]表格名称[WHERE条件]===================================EX:DELETECMSMEWHEREME001=’16352’14.更新表格内的资料UPDATE指令用来更新表格内全部或部分资料,以下是UPDATE指令的语法。==============================================UPDATE表格名称SET字段名称1=字段值1,字段名称2=字段值2,…[WHERE条件]==============================================EX:UPDATECMSMESETME002=’產品組2’WHEREME001=’16352’
三、常用函数
1.汇总函数1.汇总函数汇总函数用来计算资料表格内某一字段的加总值、平均值、最大值、最小值等等其使用语法如下。==============================汇总函数([ALL|DISTINCT]字段名称)==============================COUNT(*)MAX():用来计算SELECT指令所挑选出来的笔数。:用来找出表格中某一字段的最大值,此函数仅适用于数值型、文字型和日期字段。:用来找出表格中某一字段的最小值,此函数仅适用于数值型、文字型和日期字段。:用来计算数据库表格中某一字段的加总值,此函数仅适用于数值型的字段。
MIN()
SUM()
2.字符串函数2.字符串函数大小写转换LOWER(string):将字符串全部转换为小写。UPPER(string):将字符串全部转换为大写。去除字符串前后空白LTRIM(string):将字符串的前置空白去除。RTRIM(string):将字符串的后置空白去除。取子字符串RIGHT(string,int):由右边取字符串的第int个字符起到字符串的最后一个字符的子字符串。Ex.RIGHT(‘123456789’,3)-->’789’SUBSTRING(string,start,len):由字符串左边算起第start个字符取长度为len的子字符串。Ex.SUBSTRING(‘123456789’,2,3)-->’234’