亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
慕課專欄

目錄

索引目錄

10+年DBA老司機帶你輕松玩轉 SQL

原價 ¥ 48.00

立即訂閱
03 初探數據庫-簡單查詢語句的使用
更新時間:2020-08-19 09:42:47
耐心是一切聰明才智的基礎。——柏拉圖

在上一節,我們已經對數據庫、表和SQL語句的概念有了基本的了解,本節進一步和大家一起學習如何編寫和執行查詢語句。

3.1 客戶端工具

訪問數據庫(包括執行查詢語句)需要借助工具,就像從井里打水需要繩子和水桶一樣,在安裝好數據庫之后,數據庫服務器都自帶命令行工具,比如 Oracle 的 Sql*plus ,盡管這些命令行工具功能很強大,基本滿足了我們操作數據庫的需求,但為了更方便更友好的訪問數據庫,最好還是使用客戶端工具,值得推薦的幾款客戶端工具有:連接訪問 Oracle 的 PL/SQL Developer,連接訪問 SQLServer 的SQL Server Management Studio, 而 Navicat Premium 功能比較豐富,可以連接 Oracle、MySQL、SQLServer、PostgreSQL 和 SQLlite 等多種數據庫。

Navicat Premium 的官網地址為:http://www.navicat.com.cn,根據自己的計算機環境下載對應的軟件版本(32位或64位),下載軟件后雙擊按照提示一步步的安裝即可。

3.2 什么是查詢語句

查詢語句(帶 Select 關鍵字)也叫檢索語句,也可以更直觀的叫它 Select 語句,當我們想從數據庫中獲取一個或多個字段的結果集時,就需要使用到查詢語句,查詢語句是我們平時使用最多的 SQL 語句,簡單的查詢語句語法為:

Select 字段  From  表名  

Select 語句大小寫不敏感,就是說使用 SELECT STU_NAME FROM STUDENTselect stu_name from student 都能執行成功且結果相同。從以上查詢語句可以發現,關鍵字與字段表名之間需要保留空格,空格可以是一個或多個,如果沒有空格會導致執行錯誤。

值得說明的是,由于存在很多種數據庫產品,而且不同數據庫管理系統支持不同的 SQL 語法,但為了與 ANSI 標準相兼容,它們都以相似的方式支持一些關鍵字,比如:Select,Update,Insert,Delete,Drop,Where 等等。

ANSI是美國國家標準化組織的簡稱,它是一個核準多種行業標準的組織,該組織制定的SQL標準被稱為ANSI SQL。1987年,國際標準化組織把ANSI SQL作為國際標準,ANSI SQL標準先后在1992、1999進行了修訂,目前的標準為2011年修訂的SQL-2011。

3.3 檢索多個字段

上面例子中查詢語句是用來查詢學生表 ( student ) 中的姓名字段 ( stu_name ) ,如果希望同時返回學生表中的兩個或多個字段,就需要這樣來編寫 SQL:

select stu_name,sid,age from student

當然,有時我們希望返回學生表中的所有字段,可以這樣來編寫 SQL:

select  id,sid,stu_name,gender,age from student

當一個表中的字段很多時,比如十多個甚至幾十個字段,我們將所有字段都完全拼寫正確也不是件容易的事,數據庫開發者考慮到我們會遇到這種場景,所以查詢表中所有字段也可以這樣來編寫 SQL:

select  *  from student

帶上 * 號的查詢語句雖然給我們提供了很大的方便,但不建議經常使用,就像我們從箱子里取出乒乓球,一次取出所有的球肯定會比取出一只球要費力的多。

盡管數據庫系統功能很強大,獲取所有字段仍會消耗較多的資源,除非業務需要,盡量一次只取出必要的字段,并將字段名寫在 Select 關鍵字后面。

3.4 執行多條 SQL

當多個 SQL 語句放在一起執行時,SQL 結束時是否加上英文分號; 在不同數據庫系統中要求是不同的。在 SQLServer 中是可以不加的,數據庫可以自動識別一條 SQL 語句在哪里結束,但在 PostgreSQL,MySQL 和 Oracle 是必須要加分號的。

為了增加 SQL 的可移植性,養成良好的編程習慣,建議每條 SQL 后面都加上分號,做到“有始有終”。

在 Oracle 客戶端上執行多條 SQL 的例子:

圖片描述

最后那條 SQL 語句在這四種數據庫(SQLServer、PostgreSQL,MySQL 和 Oracle)中都是可以不加分號的。

3.5 SQL 語句的注釋

為了增加 SQL 語句的可讀性,我們經常在 SQL 語句前面添加注釋, ANSI 標準的注釋符 -- 用于單行注釋,格式為:--注釋內容

--查詢課程名和學分  

select  cname,credit from course ;  

多行注釋使用/* */。\* 用于注釋文字的開頭,*/用于注釋文字的結尾。

/*第一條SQL查詢課程編號,課程名和學分
  第二條SQL查選課學生編號和課程編號
*/
select  cid,cname,credit from course ;
select  cid,sid from elective ;

3.6 別名

與好朋友之間經常起綽號一樣,我們也可以給字段或表名起別名,有時我們在檢索數據時候,認為返回的字段名不夠見文知意,這時,就可以將字段名重新命名,即起一個別名。來看個例子:

select  a.cname  as  ‘Course_Name’   from course a ;

在上面的 SQL 語句中,表 course 的別名是 a ,字段 cname 被重新定義別名為 Course_Name。

字段的別名可以是中文也可以是字符串,來看個例子:

select  cname  as  ‘課程名’   from course ;

也可以對函數處理后的字段進行重新命名:

select count(cid)  AS ‘總課程數’ from course ;

盡管別名在 SQL 中可有可無,但為了增加可讀性,還是建議為表設置別名,

3.7 SQL 執行順序

在我們編寫 SQL 語句時一般是按照 select、from 、 where 、 group by、having 、order by 等關鍵字的順序,但數據庫在執行 SQL 的時候,并不是按照這個順序執行的,以查詢年齡大于 29 歲學生為例,讓我們進一步了解數據庫執行 SQL 語句的順序。

select sid,stu_name,age,gender from  student where  age > 29;

數據庫首先要知道從哪張表中獲取數據,即首先執行 from 關鍵字,得知從 Student(學生表) 獲取信息后,進一步查看我們希望得到哪些數據,這時就要執行 where 關鍵字,從而過濾掉年齡小于等于 29 歲的記錄數據,最后數據庫從 select 關鍵字那里獲取我們最終需要哪些字段的信息。

以上就是數據庫執行簡單 SQL 的大概順序,是否與我們平時從 Excel 獲取數據的操作順序類似(打開Excel–>找到Sheet->篩選數據–>獲取有效列)。然而數據庫實際執行過程中,比這要復雜的多,我們在后面章節中會進一步闡述。

3.8 總結

通過本小節,我們了解了簡單SQL的編寫和執行,對SQL語句中一些專業術語也有了初步的印象。小節最后對SQL的執行順序進行了說明,可能對于剛開始學習SQL的讀者對SQL執行順序還不能馬上理解,但這并不影響下面章節的學習,可以暫時忽略該部分內容,繼續下一小節的學習。

}
立即訂閱 ¥ 48.00

你正在閱讀課程試讀內容,訂閱后解鎖課程全部內容

千學不如一看,千看不如一練

手機
閱讀

掃一掃 手機閱讀

10+年DBA老司機帶你輕松玩轉 SQL
立即訂閱 ¥ 48.00

舉報

0/150
提交
取消