熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL數據庫的簡單操作

2013-11-15 14:34:12  來源: SQL Server 

  一簡單查詢
  簡單的TransactSQL查詢只包括選擇列表FROM子句和WHERE子句它們分別說明所查詢列查詢的 表或視圖以及搜索條件等
  例如下面的語句查詢testtable表中姓名為張三的nickname字段和email字段
  SELECT nicknameemail
  FROM testtable
  WHERE name=張三
  (一)選擇列表
  選擇列表(select_list)指出所查詢列它可以是一組列名列表星號表達式變量(包括局部變量和全局變量)等構成
  選擇所有列
  例如下面語句顯示testtable表中所有列的數據
  SELECT *
  FROM testtable
  選擇部分列並指定它們的顯示次序
  查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同
  例如
  SELECT nicknameemail
  FROM testtable
  更改列標題
  在選擇列表中可重新指定列標題定義格式為
  列標題=列名
  列名 列標題
  如果指定的列標題不是標准的標識符格式時應使用引號定界符例如下列語句使用漢字顯示列
  標題
  SELECT 昵稱=nickname電子郵件=email
  FROM testtable
  刪除重復行
  SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行默認
  為ALL使用DISTINCT選項時對於所有重復的數據行在SELECT返回的結果集合中只保留一行
  限制返回的行數
  使用TOP n [PERCENT]選項限制返回的數據行數TOP n說明返回n行而TOP n PERCENT時說明n是
  表示一百分數指定返回的行數等於總行數的百分之幾
  例如
  SELECT TOP *
  FROM testtable
  SELECT TOP PERCENT *
  FROM testtable
  (二)FROM子句
  FROM子句指定SELECT語句查詢及與查詢相關的表或視圖在FROM子句中最多可指定個表或視圖
  它們之間用逗號分隔
  在FROM子句同時指定多個表或視圖時如果選擇列表中存在同名列這時應使用對象名限定這些列
  所屬的表或視圖例如在usertable和citytable表中同時存在cityid列在查詢兩個表中的cityid時應
  使用下面語句格式加以限定
  SELECT usernamecitytablecityid
  FROM usertablecitytable
  WHERE usertablecityid=citytablecityid
  在FROM子句中可用以下兩種格式為表或視圖指定別名
  表名 as 別名
  表名 別名
  
  例如上面語句可用表的別名格式表示為
  SELECT usernamebcityid
  FROM usertable acitytable b
  WHERE acityid=bcityid
  SELECT不僅能從表或視圖中檢索數據它還能夠從其它查詢語句所返回的結果集合中查詢數據
  例如
  SELECT aau_fname+aau_lname
  FROM authors atitleauthor ta
  (SELECT title_idtitle
  FROM titles
  WHERE ytd_sales>
  ) AS t
  WHERE aau_id=taau_id
  AND tatitle_id=ttitle_id
  此例中將SELECT返回的結果集合給予一別名t然後再從中檢索數據
  (三)使用WHERE子句設置查詢條件
  WHERE子句設置查詢條件過濾掉不需要的數據行例如下面語句查詢年齡大於的數據
  SELECT *
  FROM usertable
  WHERE age>
  WHERE子句可包括各種條件運算符
  比較運算符(大小比較)>>==<<=<>!>!<
  范圍運算符(表達式值是否在指定的范圍)BETWEEN…AND…
  NOT BETWEEN…AND…
  列表運算符(判斷表達式是否為列表中的指定項)IN (項……)
  NOT IN (項……)
  模式匹配符(判斷值是否與指定的字符通配格式相符):LIKENOT LIKE
  空值判斷符(判斷表達式是否為空)IS NULLNOT IS NULL
  邏輯運算符(用於多條件的邏輯連接)NOTANDOR
  范圍運算符例age BETWEEN AND 相當於age>= AND age<=
  列表運算符例country IN (GermanyChina)
  模式匹配符例常用於模糊查找它判斷列值是否與指定的字符串格式相匹配可用於char
  varchartextntextdatetime和smalldatetime等類型查詢
  可使用以下通配字符
  百分號%可匹配任意類型和長度的字符如果是中文請使用兩個百分號即%%
  下劃線_匹配單個任意字符它常用來限制表達式的字符長度
  方括號[]指定一個字符字符串或范圍要求所匹配對象為它們中的任一個
  [^]其取值也[] 相同但它要求所匹配對象為指定字符以外的任一個字符
  例如
  限制以Publishing結尾使用LIKE %Publishing
  限制以A開頭LIKE [A]%
  限制以A開頭外LIKE [^A]%
  空值判斷符例WHERE age IS NULL
  邏輯運算符優先級為NOTANDOR
  (四)查詢結果排序
  使用ORDER BY子句對查詢返回的結果按一列或多列排序ORDER BY子句的語法格式為
  ORDER BY {column_name [ASC|DESC]} […n]
  其中ASC表示升序為默認值DESC為降序ORDER BY不能按ntexttext和image數據類型進行排
  序
  例如
  SELECT *
  FROM usertable
  ORDER BY age descuserid ASC
  另外可以根據表達式進行排序
  二聯合查詢
  UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合並成一個結果集合顯示即執行聯
  合查詢UNION的語法格式為
  select_statement
  UNION [ALL] selectstatement
  [UNION [ALL] selectstatement][…n]
  其中selectstatement為待聯合的SELECT查詢語句
  ALL選項表示將所有行合並到結果集合中不指定該項時被聯合查詢結果集合中的重復行將只保留一
  行
  聯合查詢時查詢結果的列標題為第一個查詢語句的列標題因此要定義列標題必須在第一個查詢語
  句中定義要對聯合查詢結果排序時也必須使用第一查詢語句中的列名列標題或者列序號
  在使用UNION 運算符時應保證每個聯合查詢語句的選擇列表中有相同數量的表達式並且每個查詢選
  擇表達式應具有相同的數據類型或是可以自動將它們轉換為相同的數據類型在自動轉換時對於數值類
  型系統將低精度的數據類型轉換為高精度的數據類型
  在包括多個查詢的UNION語句中其執行順序是自左至右使用括號可以改變這一執行順序例如
  查詢 UNION (查詢 UNION 查詢)
  三連接查詢
  通過連接運算符可以實現多個表查詢連接是關系數據庫模型的主要特點也是它區別於其它類型
  數據庫管理系統的一個標志
  在關系數據庫管理系統中表建立時各數據之間的關系不必確定常把一個實體的所有信息存放在
  一個表中當檢索數據時通過連接操作查詢出存放在多個表中的不同實體的信息連接操作給用戶帶
  來很大的靈活性他們可以在任何時候增加新的數據類型為不同實體創建新的表爾後通過連接進行
  查詢
  連接可以在SELECT 語句的FROM子句或WHERE子句中建立似是而非在FROM子句中指出連接時有助於
  將連接操作與WHERE子句中的搜索條件區分開來所以在TransactSQL中推薦使用這種方法
  SQL標准所定義的FROM子句的連接語法格式為
  FROM join_table join_type join_table
  [ON (join_condition)]
  其中join_table指出參與連接操作的表名連接可以對同一個表操作也可以對多表操作對同一
  個表操作的連接又稱做自連接
  join_type 指出連接類型可分為三種內連接外連接和交叉連接內連接(INNER JOIN)使用比
  較運算符進行表間某(些)列數據的比較操作並列出這些表中與連接條件相匹配的數據行根據所使用
  的比較方式不同內連接又分為等值連接自然連接和不等連接三種
  外連接分為左外連接(LEFT OUTER JOIN或LEFT JOIN)右外連接(RIGHT OUTER JOIN或RIGHT JOIN)
  和全外連接(FULL OUTER JOIN或FULL JOIN)三種與內連接不同的是外連接不只列出與連接條件相匹
  配的行而是列出左表(左外連接時)右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的
  數據行
  交叉連接(CROSS JOIN)沒有WHERE 子句它返回連接表中所有數據行的笛卡爾積其結果集合中的
  數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數
  連接操作中的ON (join_condition) 子句指出連接條件它由被連接表中的列和比較運算符邏輯
  運算符等構成
  無論哪種連接都不能對textntext和image數據類型列進行直接連接但可以對這三種列進行間接
  連接例如
  SELECT ppub_idppub_idppr_info
  FROM pub_info AS p INNER JOIN pub_info AS p
  ON DATALENGTH(ppr_info)=DATALENGTH(ppr_info)
  
  (一)內連接
  內連接查詢操作列出與連接條件匹配的數據行它使用比較運算符比較被連接列的列值內連接分
  三種
  等值連接在連接條件中使用等於號(=)運算符比較被連接列的列值其查詢結果中列出被連接
  表中的所有列包括其中的重復列
  不等連接 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值這些
  運算符包括>>=<=<!>!<和<>
  自然連接在連接條件中使用等於(=)運算符比較被連接列
From:http://tw.wingwit.com/Article/program/SQLServer/201311/21994.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.