校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > SQL查詢入門(上篇) 推薦收藏

SQL查詢入門(上篇) 推薦收藏

熱門標簽:沒聽見電話機器人幫你接 數字匠心電銷機器人 陜西電銷外呼系統好用嗎 蘭州語音外呼系統運營商 銀川高頻外呼回撥系統多少錢 成都電話外呼系統一般多少錢 最新人工智能電銷機器人 al智能電話機器人 如何做地圖標注圖鋪

SQL語言是一門簡單易學卻又功能強大的語言,它能讓你快速上手并寫出比較復雜的查詢語句。但對于大多數開發者來說,使用SQL查詢數據庫并沒有一個抽象的過程和一個合理的步驟,這很可能會使在寫一些特定的SQL查詢語句來解決特定問題時被”卡”住,本系列文章主要講述SQL查詢時一些基本的理論,以及寫查詢語句的抽象思路。

SQL查詢簡介
SQL語言起源于1970年E.J.Codd發表的關系數據庫理論,所以SQL是為關系數據庫服務的。而對于SQL查詢,是指從數據庫中取得數據的子集,這句話貌似聽著有些晦澀是吧,下面通過幾張圖片簡單說明一下:
假如一個數據庫中只有一個表,再假如所有數據如下圖(取自AdventureWork示例數據庫):
  1

 

     而對于子集的概念,look下圖:

 

2       

     最后,子集如下:

 

3

    其實,SQL中無論多復雜的查詢,都可以抽象成如上面的過程.

精確查詢的前置條件
對于正確取得所需要的數據子集.除了需要思路正確并將思路正確轉變為對應SQL查詢語句之外。還有很重要的一點是需要數據庫有著良好的設計.這里的良好設計我所指的是數據庫的設計符合業務邏輯并至少實現第三范式,對于實現第三范式,這只是我個人觀點,對于范式的簡單介紹,請看我的博客:數據庫范式那些事.如果數據庫設計很糟糕,存在很多冗余,數據庫中信息存在大量異常,則即使SQL寫的正確,也無法取得精確的結果。
兩種方式,同一種結果
在SQL中,取得相同的數據子集可以用不同的思路或不同的SQL語句,因為SQL源于關系數據庫理論,而關系數據庫理論又源于數學,思考如何構建查詢語句時,都可以抽象為兩種方法:
1.關系代數法
關系代數法的思路是對數據庫進行分步操作,最后取得想要的結果.
比如如下語句:

復制代碼 代碼如下:

Select Name,Department,Age
From Employee
where Age>20

關系代數的思路描述上面語句為:對表Employee表進行投影(選擇列)操作,然后對結果進行篩選,只取得年齡大于20的結果.
2.關系演算法
相比較關系代數法而言,關系演算法更多關注的是取得數據所滿足的條件.上面SQL可以用關系演算法被描述為:我想得到所有年齡大于20的員工的姓名,部門和年齡。
為什么需要兩種方法
對于簡單的查詢語句來說,上面兩種方法都不需要.用腳就可以想出來了。問題在于很多查詢語句都會非常復雜。對于關系演算法來說更多的是關注的是所取出信息所滿足的條件,而對于關系代數法來說,更多關注的是如何取出特定的信息.簡單的說,關系演算法表示的是”what”,而關系代數法表達的是”how”.SQL語句中所透漏的思路,有些時候是關系代數法,有些時候是關系演算法,還有些是兩種思路的混合.
對于某些查詢情況,關系代數法可能會更簡單,而對于另外一些情況,關系演算法則會顯得更直接.還有一些情況.我們需要混合兩種思路。所以這兩種思維方式在寫SQL查詢時都是必須的.
單表查詢
單表查詢是所有查詢的中間狀態,既是多個表的復雜查詢在最終進行這種連接后都能夠被抽象成單表查詢。所以先從單表查詢開始。
選擇列的子集
根據上面數據子集的說法,選擇列是通過在select語句后面添加所要選擇的列名實現的:
比如下面數據庫中通過在select后面選擇相應的列名實現選擇列的子集.

    5

   相應sql語句如下:

復制代碼 代碼如下:

SELECT [Name]
,[GroupName]
FROM [AdventureWorks].[HumanResources].[Department]

選擇行的子集
選擇行的子集是在Sql語句的where子句后面加上相應的限制條件,當where子句后面的表達式為“真”時,也就是滿足所謂的“條件”時,相應的行的子集被返回。

where子句后面的運算符分為兩類,分別是比較運算符和邏輯運算符.

比較運算符是將兩個相同類型的數據進行比較,進而返回布爾類型(bool)的運算符,在SQL中,比較運算符一共有六種,分別為等于(=),小于(),大于(>),小于或等于(=),大于或等于(>=)以及不等于(>),其中小于或等于和大于或等于可以看成是比較運算符和邏輯運算符的結合體。

而邏輯運算符是將兩個布爾類型進行連接,并返回一個新的布爾類型的運算符,在SQL中,邏輯運算符通常是將比較運算符返回的布爾類型相連接以最終確定where子句后面滿足條件的真假。邏輯運算符一種有三種,與(AND),或(OR),非(NOT). 
   6

   比如上面,我想選擇第二條和第六條,為了說明比較運算符和邏輯運算符,可以使用如下Sql語句:

復制代碼 代碼如下:

SELECT [Name]
,[GroupName]
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>1 and DepartmentID3 or DepartmentID>5 and DepartmentID7

由此我們可以看出,這幾種運算符是有優先級的,優先級由大到小排列是比較運算符>于(And)>非(Or)

   當然,運算符也可以通過小括號來改變優先級,對于上面那個表

   8

   對于不加括號時:

復制代碼 代碼如下:

SELECT *
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>=1 and DepartmentID=3 and DepartmentID>=5 or DepartmentID=7

9
加了括號改變運算順序后:
復制代碼 代碼如下:

SELECT *
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>=1 and DepartmentID=3 and (DepartmentID>=5 or DepartmentID=7)

10
很特別的NULL
假如在一個用戶注冊的表中,一些選填信息并不需要用戶必須填寫,則在數據庫中保存為null,這些null值在利用上面where子句后的運算符時,有可能造成數據丟失,比如一個選填信息是性別(Gender),假設下面兩條條件子句:
復制代碼 代碼如下:

where Gender="M"
where NOT (Gender="M")

由于null值的存在,這兩條語句返回的數據行加起來并不是整個表中的所有數據。所以,當將null值考慮在內時,where后面的條件子句擁有可能的值從真和假,增加為真,假,以及未知(null)。這些是我們在現實世界中想一些問題的時候可能的答案--真的,假的,我不知道。

所以我們如何在這種情況下不丟失數據呢,對于上面的例子來說,如何才能讓整個表的數據不被丟失呢,這里必須將除了“真”,“假”以外的“未知”這個選項包含在內,SQL提供了IS NULL來表明未知這個選項:
where Gender IS NULL 將上面語句加入進去,則不會再丟失數據。

排序結果
上面的那些方法都是關于取出數據,而下面是關于將取出的子集進行排序。SQL通過Order by子句來進行排序,Order by子句是Sql查詢語句的最后一個子句,也就是說Order by子句之后不能再加任何的子句了。

Order By子句分為升序(ASC)和降序(DESC),如果不指定升序或者降序,則默認為升序(由小到大),而Order by是根據排序依據的數據類型決定,分別為3種數據類型可以進行排序:
字符
數字
時間日期
字符按照字母表進行排序,數字根據數字大小排序,時間日期根據時間的先后進行排序。

其它一些有關的
視圖
視圖可以看作是一個保存的虛擬表,也可以簡單看做是保存的一個查詢語句。視圖的好處是視圖可以根據視圖所查詢表的內容的改變而改變,打個比方來理解這句話是:
12

     使用視圖的優點是可以對查詢進行加密以及便于管理,據說還可以優化性能(我不認可這點).

防止重復
有時候我們對于取出的數據子集不想重復,比如你想知道一些特定的員工一共屬于幾個部門

復制代碼 代碼如下:

SELECT [EmployeeID]
,[DepartmentID]
FROM [AdventureWorks].[HumanResources].[EmployeeDepartmentHistory]

15 
這樣的結果是沒有意義的,SQL提供了Distinct關鍵字來實現這點:

復制代碼 代碼如下:

SELECT distinct DepartmentID
FROM [AdventureWorks].[HumanResources].[EmployeeDepartmentHistory]

16 
聚合函數
所謂聚合函數,是為了一些特定目的,將同一列多個值聚合為一個,比如我想知道一群人中最大年齡是多少可以利用MAX(Age),比如我想知道一個班級平均測驗成績是多少可以用AVG(Result)……
總結
文章簡單概述了SQL查詢的原理以及簡單的單表查詢,這些都是數據庫查詢的基礎概念,對于進行復雜查詢來說,弄明白這些概念是必不可少的。

標簽:邢臺 本溪 巴彥淖爾 遼源 宜春 通化 朔州 鹽城

巨人網絡通訊聲明:本文標題《SQL查詢入門(上篇) 推薦收藏》,本文關鍵詞  SQL,查詢,入門,上篇,推薦,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL查詢入門(上篇) 推薦收藏》相關的同類信息!
  • 本頁收集關于SQL查詢入門(上篇) 推薦收藏的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲午夜在线观看视频在线| 欧美一区午夜精品| 国产三级三级三级精品8ⅰ区| 日韩成人伦理电影在线观看| 欧美军同video69gay| 亚洲va欧美va天堂v国产综合| 欧美日韩国产综合一区二区| 日韩福利视频导航| 久久久久久久久一| av电影一区二区| 亚洲日韩欧美一区二区在线| 欧美视频一区二| 美腿丝袜在线亚洲一区| 国产亚洲综合性久久久影院| 不卡区在线中文字幕| 亚洲五码中文字幕| 精品免费99久久| 97久久精品人人做人人爽50路| 亚洲午夜久久久久中文字幕久| 91麻豆精品国产91久久久更新时间| 久久99日本精品| 最新国产精品久久精品| 欧美一卡在线观看| 国产成人精品午夜视频免费 | 欧美大片国产精品| 懂色av一区二区在线播放| 亚洲精品大片www| 日韩精品中文字幕一区二区三区| 成人精品在线视频观看| 一区二区三区精品| 久久亚洲欧美国产精品乐播| 日韩欧美国产综合| 97精品电影院| 毛片基地黄久久久久久天堂| 亚洲三级免费电影| 精品日韩99亚洲| 欧美色窝79yyyycom| 国产精品91一区二区| 亚洲一区二区三区影院| 国产午夜精品一区二区三区嫩草| 欧美日韩三级在线| av激情成人网| 国产精品一区二区在线观看网站| 亚洲风情在线资源站| 国产精品国产a| 日韩美女视频一区二区在线观看| 91黄色激情网站| 国产1区2区3区精品美女| 亚洲第一主播视频| 日韩美女视频一区二区| 亚洲精品在线网站| 欧美精品一级二级三级| 97久久精品人人做人人爽| 国产乱码一区二区三区| 日韩国产精品91| 亚洲午夜激情av| 一区二区三区在线观看国产| 国产精品热久久久久夜色精品三区| 日韩欧美精品在线视频| 欧美人动与zoxxxx乱| 91免费视频网| 粉嫩一区二区三区性色av| 韩国v欧美v亚洲v日本v| 免费xxxx性欧美18vr| 日日摸夜夜添夜夜添精品视频| 亚洲毛片av在线| 中文字幕亚洲一区二区av在线| 久久九九久精品国产免费直播| 日韩美女一区二区三区四区| 日韩一级片在线观看| 欧美精品一级二级三级| 在线电影欧美成精品| 欧美日韩一二三区| 欧美军同video69gay| 欧美年轻男男videosbes| 在线观看www91| 欧美四级电影网| 欧美伊人久久大香线蕉综合69| 日本韩国精品在线| 一本色道综合亚洲| 欧美在线高清视频| 欧美日韩免费视频| 欧美一区欧美二区| 欧美电影免费观看高清完整版在线| 日韩三级精品电影久久久 | eeuss国产一区二区三区| 高清shemale亚洲人妖| 成人h动漫精品一区二区| 99re这里只有精品6| 色综合 综合色| 欧美日韩一区二区三区视频| 欧美二区在线观看| 欧美成人艳星乳罩| 中文字幕免费观看一区| 国产精品福利在线播放| 亚洲蜜臀av乱码久久精品| 乱一区二区av| 国产精品1024| 91蜜桃在线观看| 欧美裸体bbwbbwbbw| 精品国产91亚洲一区二区三区婷婷| 欧美电影免费观看高清完整版在| 国产亚洲视频系列| 亚洲精品视频免费观看| 日韩精品成人一区二区三区| 精品影视av免费| 99久久精品免费| 欧洲精品在线观看| 日韩欧美久久久| 亚洲视频电影在线| 青青草精品视频| 波波电影院一区二区三区| 欧美日韩免费高清一区色橹橹| 精品女同一区二区| 一区二区三区在线观看网站| 久久电影网站中文字幕| 91丨九色丨蝌蚪丨老版| 日韩欧美成人一区二区| 亚洲精品中文字幕乱码三区| 免费视频一区二区| 91一区二区三区在线观看| 91精品国产综合久久久久| 国产精品短视频| 久久激情五月婷婷| 色婷婷激情久久| 国产欧美一区二区精品性色| 亚洲国产日韩一级| 丁香婷婷深情五月亚洲| 欧美色窝79yyyycom| 欧美韩国日本综合| 日本不卡不码高清免费观看| 色综合av在线| 欧美高清在线精品一区| 久久国产精品99久久人人澡| 欧美在线播放高清精品| 国产精品久久久久久久久果冻传媒 | 日韩欧美国产成人一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 国内久久精品视频| 欧美三级午夜理伦三级中视频| 日本一区二区不卡视频| 国产麻豆午夜三级精品| 欧美中文字幕一区二区三区亚洲| 国产调教视频一区| 国内成人免费视频| 日韩欧美一级片| 日韩专区在线视频| 欧美日韩一本到| 亚洲综合成人在线视频| 99久久夜色精品国产网站| 国产日韩欧美一区二区三区乱码 | 成人永久aaa| 精品国产乱码久久久久久闺蜜| 亚洲一区在线观看视频| 99久久精品免费| 国产精品女主播av| 国产a级毛片一区| 国产无人区一区二区三区| 韩国视频一区二区| 欧美电影精品一区二区| 久久av老司机精品网站导航| 日韩亚洲欧美一区二区三区| 午夜不卡在线视频| 91精品欧美久久久久久动漫| 日产国产欧美视频一区精品| 欧美一二区视频| 美女视频免费一区| 日韩午夜中文字幕| 色哟哟精品一区| 一区二区三区四区在线免费观看| 91在线一区二区| 亚洲精品福利视频网站| 91激情在线视频| 婷婷开心激情综合| 欧美成人三级在线| 国产成人午夜99999| 国产精品久久久久四虎| 色成人在线视频| 午夜精品久久久久久久久久| 51精品国自产在线| 久久国产精品第一页| 国产人久久人人人人爽| www.亚洲人| 亚洲超碰97人人做人人爱| 日韩欧美在线网站| 激情av综合网| 国产精品久久久久久久久果冻传媒| 97国产一区二区| 日韩国产精品久久| 国产欧美日韩在线观看| 色天使色偷偷av一区二区| 丝袜美腿亚洲综合| 久久一日本道色综合| 91在线播放网址| 日日夜夜免费精品视频| 国产欧美日韩精品a在线观看| 色悠悠亚洲一区二区| 免费在线欧美视频| 国产精品视频一二三| 欧美午夜一区二区三区|