国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL語句的基本語法二

2024-07-21 02:34:36
字體:
來源:轉載
供稿:網友

  右連接與左連接的差別在于:不管左側表里有沒有匹配的記錄,它都從左側表中返回所有記錄。
  
  例:假如想了解客戶的信息,并統計各個地區的客戶分布,這時可以用一個右連接,即使某個地區沒有客戶,也要返回客戶信息。
  
  空值不會相互匹配,可以通過外連接才能測試被連接的某個表的字段是否有空值。
  
  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 標準誤差
  FIRST 第一個值
  LAST 最后一個值
  
  六. 用Parameters聲明創建參數查詢
  
  Parameters聲明的語法:
  
  PARAMETERS name datatype[,name datatype[, …]]
  
  其中name 是參數的標志符,可以通過標志符引用參數.
  
  Datatype說明參數的數據類型.
  
  使用時要把PARAMETERS 聲明置于任何其他語句之前.
  
  例:
  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 準則
  
  例:英國客戶的定貨量增加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 子句的語法:
  
  INSETR 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代表創建列標題的固定值.
  
  例:顯示在1996年里每一季度每一位員工所接的定單的數目:
  
  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 [ANYALLSOME](子查詢)
  
  說明:
  
  ANY和SOME謂詞是同義詞,與比較運算符(=,<
,>,<>,<=,>=)一起使用.返回一個布爾值True或False.ANY的意思是,表達式與子查詢返回的一系列的值逐一比較,只要其中的一次比較產生True結果,ANY測試的返回 True值(既WHERE子句的結果),對應于該表達式的當前記錄將進入主查詢的結果中.ALL測試則要求表達式與子查詢返回的一系列的值的比較都產生True結果,才回返回True值.
  
  例:主查詢返回單價比任何一個折扣大于等于25%的產品的單價要高的所有產品
  
  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)

上一篇:SQL編寫規范

下一篇:Decode()函數

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安平县| 雷波县| 和政县| 晋中市| 桂林市| 西宁市| 东乌珠穆沁旗| 玉林市| 新泰市| 新乐市| 呼玛县| 西安市| 静安区| 高阳县| 六枝特区| 大港区| 咸阳市| 永寿县| 光泽县| 石泉县| 海门市| 余干县| 丹寨县| 中超| 甘孜| 黎城县| 牙克石市| 苏尼特左旗| 定日县| 福泉市| 开平市| 治县。| 会同县| 吐鲁番市| 任丘市| 毕节市| 毕节市| 平凉市| 镇宁| 毕节市| 横峰县|