澳门贵宾会注册送豪礼MySQL之SELECT用法

SQL语句的基本语法 尹红写的,实在忍不主贴在那处做为查看资料.
因为原来的小说是在word里面写的,段落有一点乱. 一.Select语句的完全语法为:
Select[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,…]]}
FROMtableexpression[,…][INexternaldatabase] [Where…] [GROUPBY…]
[HAVING…] [ORDERBY…] [WITHOWNERACCESSOPTION] 表达:
用中括号([]卡塔尔国括起来的片段代表是可选的,用大括号({}卡塔尔国括起来的一部分是表示必需从当中筛选此中的叁个。
一.1FROM子句
FROM子句钦赐了Select语句中字段的来源。FROM子句后边是带有一个或七个的表明式(由逗号分开卡塔尔,个中的表明式可为单一表名称、已封存的询问或由INNE奥迪Q5JOIN、LEFTJOIN或MuranoIGHTJOIN拿到的复合结果。假如表或询问存款和储蓄在外表数据库,在IN子句之后指明其全部路线。
例:下列SQL语句重返全体有定单的顾客: SelectOrderID,Customer.customerID
FROMOrdersCustomers WhereOrders.CustomerID=Customers.CustomeersID
一.2ALL、DISTINCT、DISTINCTROW、TOP谓词
(1State of QatarALL重临满意SQL语句条件的保有记录。若无指明那几个谓词,默以为ALL。
例:SelectALLFirstName,LastName FROMEmployees
(2卡塔尔国DISTINCT假如有多少个记录的接收字段的数量一致,只回去一个。
(3卡塔尔DISTINCTROW倘诺有再次的记录,只回去四个(4卡塔尔国TOP展现查询头尾若干记下。也可再次来到记录的比重,那是要用TOPNPERCENT子句
例:再次来到5%定货额最大的定单 SelectTOP5PERCENT* FROM[OrderDetails]
ORDERBYUnitPrice*Quantity*(1-Discount)DESC
一.3用AS子句为字段取外号
要是想为重回的列取三个新的标题,也许,经过对字段的计量或总括之后,发生了一个新的值,希望把它内置二个新的列里展现,则用AS保留。
例:重返FirstName字段取小名字为NickName
SelectFirstNameASNickName,LastName,City FROMEmployees
例:重临新的一列突显仓库储存价值
SelectProductName,Unit普赖斯,UnitsInStock,UnitPrice*UnitsInStockASvalueInStock
FROMProducts 二.Where子句钦命询问条件 二.1比较运算符 相比较运算符含义
=等于 大于 小于 =大于等于 =小于等于 不对等 !不大于 !不低于
例:再次回到96年三月的定单 SelectOrderID,CustomerID,OrderDate FROMOrders
WhereOrderDate#1/1/96#ANDOrderDate#1/30/96# 注意:
McirosoftJETSQL中,日期用‘#’定界。日期也能够用Datevalue(State of Qatar函数来代替。在相比较字符型的数目时,要充足单引号”,尾空格在相比中被忽略。
例: WhereOrderDate#96-1-1# 也得以象征为:
WhereOrderDateDatevalue(‘1/1/96’卡塔尔国 使用NOT表明式求反。
例:查看96年3月1日过后的定单 WhereNotOrderDate=#1/1/96# 二.2限量
BETWEEN…AND…运算符钦定了要物色的三个闭区间。
例:再次来到96年七月到96年一月的定单。
WhereOrderDateBetween#1/1/96#And#2/1/96# 二.3列表
IN运算符用来相配列表中的其他三个值。IN子句能够代表用O奥迪Q7子句连接的数不清的原则。
例:要寻找住在London、Paris或Berlin的兼具顾客SelectCustomerID,CompanyName,ContactName,City FROMCustomers
WhereCityIn(‘London’,’Paris’,’Berlin’卡塔尔 二.4格局相称(LIKE)LIKE运算符查验二个带有字符串数据的字段值是或不是匹配一点超级模特式。
LIKE运算符里使用的通配符 通配符含义 ?任何一个单纯的字符
*随机长度的字符 #0~9之间的纯粹数字 [字符列表]在字符列表里的任一值
[!字符列表]不在字符列表里的任一值
-钦赐字符范围,两侧的值分别为其上下限
例:再次来到寄邮资编在555-0000到555-9999之内的客商SelectCustomerID,CompanyName,City,Phone FROMCustomers
WherePhoneLike‘(171卡塔尔国555-####’ LIKE运算符的片段样式及含义
样式含义不契合 LIKE‘A*’A后跟任意长度的字符Bc,c255 LIKE’5 ‘5*5555
LIKE’5?5’5与5里头有自由一个字符55,5wer5 LIKE’5##5’5235,50055kd5,5346
LIKE'[a-z]’a-z间的随便四个字符5,%
LIKE'[!0-9]’非0-9间的轻巧三个字符0,1 LIKE'[[]’1,*
三.用O卡宴DERBY子句排序结果
OOdysseyDE福特Explorer子句按一个或四个字段排序查询结果,能够是升序也得以是降序,缺省是升序。OHavalDE奥迪Q5子句平日位于SQL语句的终极。
O宝马X3DELacrosse子句中定义了八个字段,则依照字段的前后相继顺序排序。 例:
SelectProductName,UnitPrice,UnitInStock FROMProducts
O奥迪Q3DERBYUnitInStockDESC,UnitPriceDESC,ProductName
O路虎极光DERBY子句中得以用字段在选拔列表中的地点号取代字段名,可以混合字段名和地方号。
例:上边包车型地铁言辞发生与上列相符的效用。
SelectProductName,UnitPrice,UnitInStock FROMProducts
OLacrosseDERBY1DESC,2DESC,3 四.选择连接关系落到实处多表查询
例:寻找同二个都市中代理商和顾客的名字
SelectCustomers.CompanyName,Suppliers.ComPany.Name
FROMCustomers,Suppliers WhereCustomers.City=Suppliers.City
例:找出成品仓库储存量大于同一种产物的定单的数量的出品和定单
SelectProductName,OrderID,UnitInStock,Quantity
FROMProducts,[OrderDeails]
WhereProduct.productID=[OrderDetails].ProductID
ANDUnitsInStockQuantity 另一种艺术是用MicrosofJETSQL唯有的JNNE昂CoraJOIN
语法: FROMtable1INNE大切诺基JOINtable2 ONtable1.田野1comparisiontable2.田野2
里头comparision正是最近Where子句用到的可比运算符。
SelectFirstName,lastName,OrderID,CustomerID,OrderDate FROMEmployees
INNEMuranoJOINOrdersONEmployees.EmployeeID=Orders.EmployeeID 注意:
INNE奥迪Q5JOIN不能够三番五遍MemoOLEObjectSingleDouble数据类型字段。
在叁个JOIN语句中年老年是多少个ON子句 语法: Select田野同志s
FROMtable1INNE中华VJOINtable2 ONtable1.田野同志1compoprtable2.田野1AND
ONtable1.田野同志2compoprtable2.田野(field卡塔尔国2OR
ONtable1.田野(fieldState of Qatar3compoprtable2.田野3 也得以 Select田野s
FROMtable1INNEEscortJOIN (table2INNE宝马X5JOIN[(]table3
[INNERJOER][(]tablex[INNERJOIN]
ONtable1.田野同志1compoprtable2.田野(fieldState of Qatar1 ONtable1.田野2compoprtable2.田野(field卡塔尔国2
ONtable1.田野(field卡塔尔3compoprtable2.田野同志3
外界连接再次来到越来越多记录,在结果中保存不相配的记录,不管存不设有满足条件的笔录都要赶回另一侧的全部记录。
FROMtable[LEFT|RIGHT]JOINtable2 ONtable1.田野1comparisiontable.田野(fieldState of Qatar2
用左连接来创设外界连接,在表达式的左边的表会展现其独具的数码
例:不管有未有定货量,再次来到全部商品 SelectProductName,OrderID
FROMProducts LEFTJOINOrdersONProducts.PrductsID=Orders.ProductID
右连接与左连接的差别在于:不管侧边表里有未有合营的记录,它都从侧边表中重回全数记录。
例:固然想打听客商的新闻,并总计每个区域的客商遍及,这个时候能够用一个右连接,即使某些地区没有顾客,也要回到顾客消息。
空值不会互相同盟,能够因别的接连能力测量试验被接连的某些表的字段是还是不是有空值。
Select* FROMtalbe1 LEFTJOINtable2ONtable1.a=table2.c
四.1接连查询中应用Iif函数达成以0值展现空值
Iif表达式:Iif(IsNull(Amount,0,Amout)例:无论定货大于或低于¥50,都要赶回贰个标记。
Iif([Amount]50,?Bigorder?,?Smallorder?State of Qatar 陆分组和小结查询结果
在SQL的语法里,GROUPBY和HAVING子句用来对数据开展汇总。GROUPBY子句指明了据守哪多少个字段来分组,而将记录分组后,用HAVING子句过滤那一个记录。
GROUPBY子句的语法 Selectfidldlist FROMtable Wherecriteria
[GROUPBYgroupfieldlist[HAVINGgroupcriteria]]
注:MicrosoftJet数据库Jet不可能对备注或OLE对象字段分组。
GROUPBY字段中的Null值以备分组然而无法被回顾。
在此外SQL合计函数中不合算Null值。
GROUPBY子句后最多能够包含11个字段,排序优先级按从左到右的顺序排列。
例:在‘WA’地区的雇员表中按头衔分组后,寻觅装有近似头衔的雇员数目大于1人的享有头衔。
SelectTitle,Count(TitleState of QatarasTotal FROMEmployees WhereRegion=‘WA’
GROUPBYTitle HAVINGCount(Title卡塔尔(قطر‎1 JETSQL中的集合函数 集中函数意义
SUM(卡塔尔国求和 AVG(State of Qatar平均值 COUNT(卡塔尔表明式中著录的数量 COUNT(*卡塔尔(قطر‎计算记录的数量
MAX最大值 MIN最小值 var方差 STDEV规范测量误差 FI福特ExplorerST第多个值 LAST最后三个值
六用Parameters注解创建参数查询 Parameters注明的语法:
PARAMETE中华VSnamedatatype[,namedatatype[,…]]
此中name是参数的标识符,能够通过标记符援用参数.
Datatype表明参数的多少类型.
使用时要把PARAMETERAV4S注解置于其余其余语句早前. 例:
PARAMETE讴歌MDXS[Lowprice]Currency,[Beginningdate]datatime
SelectOrderID,OrderAmount FROMOrders WhereOrderAMount[lowprice]
ANDOrderDate=[Beginningdate] 七意义查询
所谓效能查询,实际上是一种操作查询,它能够对数据库进行神速高效的操作.它以选用查询为指标,筛选出切合条件的数额,再对数据开展批管理.功效查询包蕴创新查询,删除查询,加多查询,和生成表查询.
七.1校正查询
Update子句能够而且改动三个或八个表中的数据.它也得以同时校勘八个字段的值.
更新查询语法: Update表名 SET新值 Where法规例:大不列颠及北爱尔兰联合王国客商的定货量扩展5%,货物运输量扩充3% UpdateOEDEXC90S
SETOrderAmount=OrderAmount*1.1 ,Freight=Freight*1.03
WhereShipCountry=‘UK’ 七.2刨除查询
Delete子句能够使客户删除大批量的不应时宜的或冗于的数据.
注:删除查询的靶子是全部记录. Delete子句的语法: Delete[表名.*]
FROM来源表 Where法则 例:要刨除全数94年前的定单 Delete* FROMOrders
WhereOrderData#94-1-1# 七.3追加查询
Insert子句能够将三个或一组记录追加到一个或四个表的尾巴部分.
INTO子句钦点选择新记录的表 valueS关键字钦赐新记录所包涵的数额值.
Insert子句的语法: INSETEvoqueINTO目标表或询问(字段1,字段2,…卡塔尔valueS(数值1,数值2,…卡塔尔(قطر‎ 例:扩张二个顾客InsertINTOEmployees(FirstName,LastName,title卡塔尔(قطر‎valueS(‘Harry’,’Washington’,’Trainee’State of Qatar 七.4生成表查询
能够一遍性地把全数满意条件的记录拷贝到一张新表中.常常制作笔录的备份或副本或充作报表的底蕴.
SelectINTO子句用来创立生成表查询语法: Select字段1,字段2,…
INTO新表[IN外部数据库] FROM来源数据库 Where准则例:为定单制作三个存档备份 Select* INTOOrdersArchive FROMOrders
八联合查询 UNION运算能够把多个查询的结果合併到二个结果集里展现.
UNION运算的相符语法: [表]查询1UNION[ALL]查询2UNION…
例:再次来到巴西怀有须求商和顾客的名字和都市 SelectCompanyName,City
FROMSuppliers WhereCountry=‘Brazil’ UNION SelectCompanyName,City
FROMCustomers WhereCountry=‘Brazil’ 注:
缺省的情景下,UNION子句不回去重新的记录.假若想体现全部记录,能够加ALL选项
UNION运算供给查询全部同等数量的字段.但是,字段数据类型不必相似.
每一个询问参数中得以采纳GROUPBY子句或HAVING子句进行分组.要想以钦命的一一来突显再次回到的数目,能够在最后八个查询的尾巴使用OREERBY子句.
九交*查询
交*查询能够对数据开展总额,平均,计数或其余总和总括法的精兵简政,这一个多少经过两种消息举行分组:贰位展馆示在表的左部,另叁位展览示在表的顶上部分.
MicrosoftJetSQL用TRANSFROM语句成立交*表查询语法: TRANSFORMaggfunction
Select语句 GROUPBY子句 PIVOTpivot田野[IN(value1[,value2[,…]])]
Aggfounction指SQL集合函数, Select语句选用作为标题标的字段, GROUPBY分组
表明:
Pivot田野(fieldState of Qatar在询问结果集中创造列题目时用的字段或表明式,用可选的IN子句限定它的取值.
value代表成立列题指标原则性值.
例:展现在1997年里每一季度每一个人工作者所接的定单的数据:
TRANSFORMCount(OrderID卡塔尔国 SelectFirstName&”&LastNameASFullName
FROMEmployeesINNE奥迪Q5JOINOrders ONEmployees.EmployeeID=Orders.EmployeeID
WhereDatePart(“yyyy”,OrderDate卡塔尔国=‘1998′ GROUPBYFirstName&”&LastName
OENVISIONDERBYFirstName&”&LastName POVOTDatePart(“q”,OrderDate卡塔尔国&’季度’
十.子查询 子查询可知为套查询.子查询是叁个Select语句.
十.1表明式的值与子查询重返的纯粹值做比较 语法:
表达式comparision[ANY|ALL|SOME](子查询卡塔尔国 表明:
ANY和SOME谓词是同义词,与相比运算符(=,,,,=,=卡塔尔一同使用.重临叁个布尔值True或False.ANY的意趣是,表达式与子查询再次来到的一两种的值逐个相比,只要此中的一次比较发生True结果,ANY测验的归来True值(既Where子句的结果卡塔尔(قطر‎,对应于该表明式的日前记录将踏向主查询的结果中.ALL测量试验则必要表明式与子查询重回的一文山会海的值的相比较都发生True结果,才回再次来到True值.
例:主查询重返单价比此外二个折扣大于等于六成的制品的单价要高的持有付加物Select*FROMProducts WhereUnitPriceANY
(SelectUnitPriceFROM[OrderDetails]WhereDiscount0.25)十.2反省表达式的值是还是不是相称子查询再次回到的一组值的某些值 语法:
[NOT]IN(子查询卡塔尔 例:重临库存价值高于等于1000的出品.
SelectProductNameFROMProducts WhereProductIDIN
(SelectPrdoctIDFROM[OrderDEtails] WhereUnitPrice*Quantity=1000State of Qatar十.2检查测量检验子查询是还是不是再次回到任何笔录 语法: [NOT]EXISTS(子查询卡塔尔例:用EXISTS检索英帝国的客商 SelectComPanyName,ContactName FROMOrders
WhereEXISTS (Select* FROMCustomers WhereCountry=‘UK’AND
Customers.CustomerID=Orders.CustomerID)

根本是为了消除二个select语句,因为语法比较奇异,没看懂,百度了有的结实

    select的事物一定于叁个有的时候表,as就给那有的时候表取个名字。


 

SELECT语句的完好语法

SELECT语句的协同体语法为: SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS
alias2][,…]]} FROM tableexpression[,…][IN externaldatabase]
[WHERE…] [GROUP BY……
SELECT语句的完全语法为:
SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS
alias2][,…]]}
FROM tableexpression[,…][IN externaldatabase]
[WHERE…]
[GROUP BY…]
[HAVING…]
[ORDER BY…]
[WITH OWNERACCESS OPTION]
说明:
用中括号([]State of Qatar括起来的片段代表是可选的,用大括号({}卡塔尔国括起来的一部分是象征必须从当中筛选中间的一个。

1 FROM子句

FROM子句钦点了SELECT语句中字段的发源。FROM子句后边是带有二个或三个的表达式(由逗号分开State of Qatar,此中的表达式可为单一表名称、已封存的查询或由
INNEPRADO JOIN、LEFT JOIN 或 昂CoraIGHT JOIN
得到的复合结果。若是表或询问存款和储蓄在外表数据库,在IN
子句之后指明其总体路线。
例:下列SQL语句重临全部有定单的顾客:
SELECT OrderID,Customer.customerID
FROM Orders Customers
WHERE Orders.CustomerID=Customers.CustomeersID

2 ALL、DISTINCT、DISTINCTROW、TOP谓词

(1State of Qatar ALL
再次回到知足SQL语句条件的有所记录。如果未有指明那些谓词,默以为ALL。
例:SELECT ALL FirstName,LastName
FROM Employees
(2卡塔尔 DISTINCT 要是有四个记录的选择字段的数码一致,只回去三个。
(3卡塔尔 DISTINCTROW 假若有再次的记录,只回去二个
(4卡塔尔 TOP突显查询头尾若干记下。也可回到记录的百分比,这是要用 TOP N
PERCENT子句(此中N 表示百分比)
例:重返5%定货额最大的定单
SELECT TOP 5 PERCENT*
FROM [ Order Details]
ORDER BY UnitPrice*Quantity*(1-Discount) DESC

3 用 AS 子句为字段取小名 

倘使想为重回的列取三个新的题目,也许,经过对字段的计量或计算之后,发生了三个新的值,希望把它内置一个新的列里呈现,则用AS保留。
例:重返FirstName字段取别名字为NickName
SELECT FirstName AS NickName ,LastName ,City
FROM Employees
例:重回新的一列彰显仓库储存价值
SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS
valueInStock
FROM Products

二 .WHERE 子句钦定询问条件

1 比较运算符
比较运算符 含义
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<> 不等于
!> 不大于
!< 不小于
例:重回96年十11月的定单
SELECT OrderID, CustomerID, OrderDate
FROM Orders
WHERE OrderDate>#1/1/96# AND OrderDate<#1/30/96#
注意:
Mcirosoft JET SQL
中,日期用‘#’定界。日期也得以用Datevalue(卡塔尔(قطر‎函数来代表。在可比字符型的多少时,要加上单引号’’,尾空格在相比中被忽略。
例:
WHERE OrderDate>#96-1-1#
也能够象征为:
WHERE OrderDate>Datevalue(‘1/1/96’)
运用 NOT 表明式求反。
例:查看96年12月1日从今以后的定单
WHERE Not OrderDate<=#1/1/96#
2 范围(BETWEEN 和 NOT BETWEEN)
BETWEEN …AND…运算符钦定了要寻觅的三个闭区间。
例:再次来到96年四月到96年12月的定单。
WHERE OrderDate Between #1/1/96# And #2/1/96#
3 列表(IN ,NOT IN)
IN
运算符用来相配列表中的其他四个值。IN子句能够代替用OENCORE子句连接的文山会海的规格。
例:要找寻住在 London、Paris或Berlin的持有顾客
SELECT CustomerID, CompanyName, ContactName, City
FROM Customers
WHERE City In(‘London’,’ Paris’,’ Berlin’)

4 形式相配(LIKE卡塔尔

LIKE运算符核查八个暗含字符串数据的字段值是或不是相称一点超方式。
LIKE运算符里使用的通配符
通配符 含义
? 任何贰个单纯的字符
* 大肆长度的字符
# 0~9之间的单纯数字
[字符列表] 在字符列表里的任一值
[!字符列表] 不在字符列表里的任一值

  • 钦点字符范围,两边的值分别为其上下限
    例:重回寄邮资编在(171)555-0000到(171)555-9999时期的顾客
    SELECT CustomerID ,CompanyName,City,Phone
    FROM Customers
    WHERE Phone Like ‘(171)555-####’
    LIKE运算符的局地样式及意义
    样式 含义 不符合
    LIKE ‘A*’ A后跟任性长度的字符 Bc,c255
    LIKE’5
    ’ 5*5 555
    LIKE’5?5’ 5与5中间有自由三个字符 55,5wer5
    LIKE’5##5’ 5235,5005 5kd5,5346
    LIKE’[a-z]’ a-z间的率性三个字符 5,%
    LIKE’[!0-9]’ 非0-9间的自由三个字符 0,1
    LIKE’[[]’ 1,*
    三 .用OLacrosseDE宝马X3 BY子句排序结果
    O悍马H2DE昂Cora子句按三个或多少个(最多十两个)字段排序查询结果,能够是升序(ASC)也足以是降序(DESC),缺省是升序。O宝马X5DELX570子句普通坐落于SQL语句的尾声。
    OTiguanDE冠道子句中定义了多个字段,则根据字段的前后相继顺序排序。
    例:
    SELECT ProductName,UnitPrice, UnitInStock
    FROM Products
    ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName
    OHighlanderDESportage BY
    子句中得以用字段在甄选列表中之处号取代字段名,能够混合字段名和地方号。
    例:上面包车型客车话语发生与上列相符的固守。
    SELECT ProductName,UnitPrice, UnitInStock
    FROM Products
    ORDER BY 1 DESC , 2 DESC,3
    四 .运用连接关系贯彻多表查询
    例:搜索同一个都会中中间商和顾客的名字
    SELECT Customers.CompanyName, Suppliers.ComPany.Name
    FROM Customers, Suppliers
    WHERE Customers.City=Suppliers.City
    例:搜索产品仓库储存量大于同一种成品的定单的数目标出品和定单
    SELECT ProductName,OrderID, UnitInStock, Quantity
    FROM Products, [Order Deails]
    WHERE Product.productID=[Order Details].ProductID
    AND UnitsInStock>Quantity
    另一种方式是用 Microsof JET SQL 唯有的 JNNEGL450 JOIN
    语法:
    FROM table1 INNER JOIN table2
    ON table1.field1 comparision table2.field2
    个中comparision 就是眼下WHERE子句用到的可比运算符。
    SELECT FirstName,lastName,OrderID,CustomerID,OrderDate
    FROM Employees
    INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
    注意:
    INNE奇骏 JOIN不可能接二连三Memo OLE Object Single Double 数据类型字段。
    在贰个JOIN语句中三回九转四个ON子句
    语法:
    SELECT fields
    FROM table1 INNER JOIN table2
    ON table1.field1 compopr table2.field1 AND
    ON table1.field2 compopr table2.field2 OR
    ON table1.field3 compopr table2.field3
    也可以
    SELECT fields
    FROM table1 INNER JOIN
    (table2 INNER JOIN [( ]table3
    [INNER JOER] [( ]tablex[INNER JOIN]
    ON table1.field1 compopr table2.field1
    ON table1.field2 compopr table2.field2
    ON table1.field3 compopr table2.field3
    外表连接重返越来越多记录,在结果中保留不合作的记录,不管存不设有满足条件的笔录都要赶回另一侧的具有记录。
    FROM table [LEFT|RIGHT]JOIN table2
    ON table1.field1comparision table.field2
    用左连接来创设外界连接,在表明式的左边的表会展现其兼具的数目
    例:不管有未有定货量,返回全体商品
    SELECT ProductName ,OrderID
    FROM Products
    LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
    右连接与左连接的差别在于:不管左边表里有未有极其的记录,它都从侧边表中重返全部记录。
    例:借使想询问顾客的音信,并计算各样地点的顾客遍及,这时候能够用三个右连接,就算有些地点未有客商,也要赶回客商消息。
    空值不会相互相称,能够透过外接连技术测量检验被连接的某部表的字段是不是有空值。
    SELECT *
    FROM talbe1
    LEFT JOIN table2 ON table1.a=table2.c
    1 连接查询中接收Iif函数落成以0值显示空值
    Iif表达式: Iif(IsNull(Amount,0,Amout)
    例:无论定货大于或小于¥50,都要回去四个标记。
    Iif([Amount]>50,?Big order?,?Small order?)

五. 分组和小结查询结果

在SQL的语法里,GROUP BY和HAVING子句用来对数码进行集中。GROUP
BY子句指明了遵循哪多少个字段来分组,而将记录分组后,用HAVING子句过滤这么些记录。
GROUP BY 子句的语法
SELECT fidldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist [HAVING groupcriteria]]
注:Microsoft Jet数据库 Jet 无法对备注或OLE对象字段分组。
GROUP BY字段中的Null值以备分组不过无法被归纳。
在其他SQL合计函数中不划算Null值。
GROUP BY子句后最多可以蕴涵十一个字段,排序优先级按从左到右的顺序排列。
例:在‘WA’地区的雇员表中按头衔分组后,找寻富有同等头衔的雇员数目大于1人的具备头衔。
SELECT Title ,Count(Title) as Total
FROM Employees
WHERE Region = ‘WA’
GROUP BY Title
HAVING Count(Title)>1
JET SQL 中的集结函数
聚焦函数 意义
SUM ( ) 求和
AVG ( ) 平均值
COUNT ( 卡塔尔国 表达式中著录的数量
COUNT (* 卡塔尔(قطر‎ 计算记录的数额
MAX 最大值
MIN 最小值
VAR 方差
STDEV 标准误差
FI昂科拉ST 第一个值
LAST 最后叁个值

六. 用Parameters申明创制参数查询

Parameters注明的语法:
PARAMETERS name datatype[,name datatype[, …]]
其间name 是参数的标识符,能够通过标记符援引参数.
Datatype表明参数的数据类型.
动用时要把PARAMETE奥迪Q3S 注明置于别的此外语句早先.
例:
PARAMETERS[Low price] Currency,[Beginning date]datatime
SELECT OrderID ,OrderAmount
FROM Orders
WHERE OrderAMount>[low price]
AND OrderDate>=[Beginning date]

七. 作用查询

所谓作用查询,实际上是一种操作查询,它能够对数据库进行高效便捷的操作.它以筛选查询为指标,挑选出相符条件的数据,再对数码实行批管理.功能查询富含立异查询,删除查询,增加查询,和生成表查询.
1 更新查询
UPDATE子句能够况兼改动二个或八个表中的数据.它也得以何况改造八个字段的值.
履新查询语法:
UPDATE 表名
SET 新值
WHERE 准则
例:United Kingdom客商的定货量扩展5%,货物运输量扩大3%
UPDATE OEDERS
SET OrderAmount = OrderAmount *1.1
Freight = Freight*1.03
WHERE ShipCountry = ‘UK’
2 删除查询
DELETE子句能够使客户删除大批量的老式的或冗于的数据.
注:删除查询的靶子是任何记录.
DELETE子句的语法:
DELETE [表名.*]
FROM 来源表
WHERE 准则
例: 要删除全数94年前的定单
DELETE *
FROM Orders
WHERE OrderData<#94-1-1#
3 追加查询
INSERT子句能够将叁个或一组记录追加到二个或多个表的尾巴部分.
INTO 子句钦赐选择新记录的表
valueS 关键字钦命新记录所含有的数目值.
INSERT 子句的语法:
INSETSportage INTO 目标表或询问(字段1,字段2,…卡塔尔国
valueS(数值1,数值2,…)
例:扩大多个顾客
INSERT INTO Employees(FirstName,LastName,title)
valueS(‘Harry’,’Washington’,’Trainee’)
4 生成表查询
能够三回性地把全体满意条件的笔录拷贝到一张新表中.常常制作笔录的备份或别本或作为报表的幼功.
SELECT INTO子句用来创制生成表查询语法:
SELECT 字段1,字段2,…
INTO 新表[IN 外部数据库]
FROM 来源数据库
WHERE 准则
例:为定单制作二个存档备份
SELECT *
INTO OrdersArchive
FROM Orders

八. 联合查询

UNION运算能够把多个查询的结果合并到三个结果集里突显.
UNION运算的貌似语法:
[表]查询1 UNION [ALL]查询2 UNION …
例:再次来到巴西有所须求商和客商的名字和城市
SELECT CompanyName,City
FROM Suppliers
WHERE Country = ‘Brazil’
UNION
SELECT CompanyName,City
FROM Customers
WHERE Country = ‘Brazil’
注:
缺省的情事下,UNION子句不回来重新的记录.假设想显示全体记录,能够加ALL选项
UNION运算须求查询全体相通数量的字段.不过,字段数据类型不必雷同.
每叁个查询参数中得以行使GROUP BY 子句 或 HAVING
子句举办分组.要想以钦命的各类来显示重返的数额,能够在终极八个查询的尾巴使用OREER
BY子句.

九. 交叉查询

陆续查询能够对数据开展总额,平均,计数或其他总和总计法的估测计算,这么些多少经过二种音讯实行分组:四人展览示在表的左部,另三个出示在表的最上部.
Microsoft Jet SQL 用TRANSFROM语句创造交叉表查询语法:
TRANSFORM aggfunction
SELECT 语句
GROUP BY 子句
PIVOT pivotfield[IN(value1 [,value2[,…]]) ]
Aggfounction指SQL群集函数,
SELECT语句选用作为标题的的字段,
GROUP BY 分组
说明:
Pivotfield在查询结果集中制造列标题时用的字段或表明式,用可选的IN子句限定它的取值.
value代表创立列标题标定位值.
例:展现在1998年里每一季度种种人职工所接的定单的数额:
TRANSFORM Count(OrderID)
SELECT FirstName&’’&LastName AS FullName
FROM Employees INNER JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID
WHERE DatePart(“yyyy”,OrderDate)= ‘1996’
GROUP BY FirstName&’’&LastName
ORDER BY FirstName&’’&LastName
POVOT DatePart(“q”,OrderDate)&’季度’

十 .子查询

子查询能够精通为 套查询.子查询是一个SELECT语句.
1 表达式的值与子查询再次来到的单纯值做相比较
语法:
表达式 comparision [ANY|ALL|SOME](子查询)
说明:
ANY和SOME谓词是同义词,与比较运算符(=,<,>,<>,<=,>=卡塔尔(قطر‎一齐使用.重返一个布尔值True或False.ANY的乐趣是,说明式与子查询再次回到的一雨后春笋的值逐个比较,只要个中的二回比较产生True结果,ANY测量检验的回到
True值(既WHERE子句的结果卡塔尔(قطر‎,对应于该表明式的近日记录将跻身主查询的结果中.ALL测量检验则必要表明式与子查询重回的一多级的值的可比都爆发True结果,才回重临True值.
例:主查询再次来到单价比任何四个折扣大于等于伍分之一的制品的单价要高的兼具付加物
SELECT * FROM Products
WHERE UnitPrice>ANY
(SELECT UnitPrice FROM[Order Details] WHERE Discount>0.25)

2 检查表明式的值是或不是相称子查询再次来到的一组值的某些值
语法:
[NOT]IN(子查询)
例:再次来到仓库储存价值大于等于1000的成品.
SELECT ProductName FROM Products
WHERE ProductID IN
(SELECT PrdoctID FROM [Order DEtails]
WHERE UnitPrice*Quantity>= 1000)

3检查实验子查询是还是不是再次来到任何笔录
语法:
[NOT]EXISTS (子查询)
例:用EXISTS检索大不列颠及北爱尔兰联合王国的客商
SELECT ComPanyName,ContactName
FROM Orders
WHERE EXISTS
(SELECT *
FROM Customers
WHERE Country = ‘UK’ AND
Customers.CustomerID= Orders.CustomerID)

发表评论

电子邮件地址不会被公开。 必填项已用*标注