掌握MySQL SELECT語(yǔ)句的巧妙方法
以下的文章主要向大家推薦的是掌握MySQL SELECT語(yǔ)句的巧妙方法,我們大家都知道MySQL SELECT語(yǔ)句隨著MySQL 數(shù)據(jù)庫(kù)的廣泛應(yīng)用而變得越來(lái)越受人歡迎,以下的文章就是對(duì)掌握MySQL SELECT語(yǔ)句的巧妙方法的具體描述。
圖解MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)的安裝和操作
如何實(shí)現(xiàn)MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)的備份與恢復(fù)
MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)接口的VC實(shí)現(xiàn)與應(yīng)用(2)
如何備份MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)
MySQL(和PHP搭配之***組合):用Java來(lái)測(cè)試MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)的最
MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)技術(shù)(01)
如何在ASP中連接MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)
最簡(jiǎn)便的MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)備份的方法
MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)備份與恢復(fù)
MySQL(和PHP搭配之***組合)數(shù)據(jù)庫(kù)連接過(guò)多的錯(cuò)誤,可能的原
本文針對(duì)MySQL SELECT語(yǔ)句快速精細(xì)掌握。
MySQL(和PHP搭配之***組合)中SELECT語(yǔ)句的基本語(yǔ)法是:
以下是引用片段:
- SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT]
- [SQL_BIG_RESULT] [HIGH_PRIORITY]
- [DISTINCT|DISTINCTROW|ALL]
- select_list
- [INTO {OUTFILE|DUMPFILE} 'file_name' export_options]
- [FROM table_references [WHERE where_definition]
- [GROUP BY col_name,...] [HAVING where_definition]
- [ORDER BY {unsighed_integer|col_name|formura} [ASC|DESC],...]
- [LIMIT [offset,] rows] [PROCEDURE procedure_name]]
從這個(gè)基本語(yǔ)法可以看出,最簡(jiǎn)單的SELECT語(yǔ)句是SELECT select_list,實(shí)際上利用這個(gè)最簡(jiǎn)單的SELECT語(yǔ)句,你也可以完成許多你期待的功能,首先你能利用它進(jìn)行MySQL(和PHP搭配之***組合)所支持的任何運(yùn)算,例如:SELECT 1+1,它將返回2;其次,你也能利用它給變量賦值,而在PHP中,運(yùn)用SELECT語(yǔ)句的這種功能,你就可以自由地運(yùn)用MySQL(和PHP搭配之***組合)的函數(shù)為PHP程序進(jìn)行各種運(yùn)算,并賦值給變量。
在很多的時(shí)候,你會(huì)發(fā)現(xiàn)MySQL(和PHP搭配之***組合)擁有許多比PHP更為功能強(qiáng)大的函數(shù)。
STRAIGHT_JOIN、SQL_SMALL_RESULT、SQL_BIG_RESULT、HIGH_PRIORITY是MySQL(和PHP搭配之***組合)對(duì)ANSI SQL92的擴(kuò)展。如果優(yōu)化器以非***次序聯(lián)結(jié)表,使用STRAIGHT_JOIN可以加快查詢。
SQL_SMALL_RESULT和SQL_BIG_RESULT是一組相對(duì)的關(guān)鍵詞。它們必須與GROUP BY、DISTINCT或DISTINCTROW一起使用。SQL_SMALL_RESULT告知優(yōu)化器結(jié)果會(huì)很小,要求MySQL(和PHP搭配之***組合)使用臨時(shí)表存儲(chǔ)最終的表而不是使用排序;反之,SQL_BIG_RESULT告知優(yōu)化器結(jié)果會(huì)很小,要求MySQL(和PHP搭配之***組合)使用排序而不是做臨時(shí)表。
HIGH_PRIORITY將賦予MySQL SELECT比一個(gè)更新表的語(yǔ)句更高的優(yōu)先級(jí),使之可以進(jìn)行一次優(yōu)先的快速的查詢。
以上四個(gè)關(guān)鍵詞的使用方法的確比較晦澀。幸運(yùn)的是,在絕大多數(shù)情況下,在MySQL(和PHP搭配之***組合)中我們完全可以選擇不使用這四個(gè)關(guān)鍵詞。
DISTINCT、DISTINCTROW對(duì)查詢返回的結(jié)果集提供了一個(gè)最基本但是很有用的過(guò)濾。那就是結(jié)果集中只含非重復(fù)行。在這里要注意的是,對(duì)關(guān)鍵詞DISTINCT、DISTINCTROW來(lái)說(shuō),空值都是相等的,無(wú)論有多少NULL值,只選擇一個(gè)。而ALL的用法就有畫(huà)蛇添足之嫌了。它對(duì)結(jié)果集的產(chǎn)生沒(méi)有任何影響。
INTO {OUTFILE|DUMPFILE} 'file_name' export_options,將結(jié)果集寫(xiě)入一個(gè)文件。文件在服務(wù)器主機(jī)上被創(chuàng)建,并且不能是已經(jīng)存在的。語(yǔ)句中的export_options部分的語(yǔ)法與用在LOAD DATAINFILE語(yǔ)句中的FIELDS和LINES子句中的相同,我們將在MySQL(和PHP搭配之***組合)進(jìn)階_LOAD DATA篇中詳細(xì)討論它。而OUTFILE與DUMPFILE的關(guān)鍵字的區(qū)別是:后前只寫(xiě)一行到文件,并沒(méi)有任何列或行結(jié)束。
select list:其中可以包含一項(xiàng)或多項(xiàng)下列內(nèi)容:
1、“*”,表示按照create table的順序排列的所有列。
2、按照用戶所需順序排列的列名的清單。
3、可以使用別名取代列名,形式如下:column name as column_heading。
4、表達(dá)式(列名、常量、函數(shù),或以算術(shù)或逐位運(yùn)算符連接的列名、常量和函數(shù)的任何組合)。
5、內(nèi)部函數(shù)或集合函數(shù)。
6、上述各項(xiàng)的任何一種組合。
FROM:決定SELECT命令中使用哪些表。一般都要求有此項(xiàng),除非select_list中不含列名(例如,只有常量、算術(shù)表達(dá)式等)。如果表項(xiàng)中有多個(gè)表,用逗號(hào)將之分開(kāi)。在關(guān)鍵詞FROM后面的表的順序不影響結(jié)果。
表名可以給出相關(guān)別名,以便使表達(dá)清晰。這里的語(yǔ)法是tbl_name [AS] alias_name。例如:
select t1.name,t2.salary from employee as t1,info as t2 where t1.name=t2.name與select t1.name,t2.salary from employee t1,info t2 where t1.name=t2.name是完全等價(jià)的。
所有對(duì)該表的其他引用,例如在where子句和having子句中,都要用別名,別名不能以數(shù)字開(kāi)頭。
where子句設(shè)置了搜索條件,它在insert,update,delete語(yǔ)句中的應(yīng)用方法也與在MySQL select語(yǔ)句中的應(yīng)用方法完全相同。搜索條件緊跟在關(guān)鍵詞where的后面。
如果用戶要在語(yǔ)句中使用多個(gè)搜索條件,則可用and或or連接。
搜索條件的基本語(yǔ)法是[not] expression comparison_operator expression;[not] expression [not] like “match_string”;[not] expression is [not] null;[not] expression [not] between expression and expression;[not] column_name join_operator column_name;[not] boolean_expression。
and:用來(lái)聯(lián)結(jié)兩個(gè)條件,并在兩個(gè)條件都是TRUE的時(shí)候返回結(jié)果。當(dāng)在同一語(yǔ)句中使用多個(gè)邏輯運(yùn)算符時(shí),and運(yùn)算符總是***先,除非用戶用括號(hào)改變了運(yùn)算順序。
or:用來(lái)聯(lián)結(jié)兩個(gè)條件,當(dāng)兩個(gè)條件中有任一條件是TRUE的時(shí)候返回結(jié)果。當(dāng)在同一語(yǔ)句中使用多個(gè)邏輯運(yùn)算符時(shí),運(yùn)算符or通常在運(yùn)算符and之后進(jìn)行運(yùn)算。當(dāng)然用戶可以使用括號(hào)改變運(yùn)算的順序。
between:用來(lái)標(biāo)識(shí)范圍下限的關(guān)鍵詞,and后面跟范圍上限的值。范圍where @val between x and y包含首尾值。如果between后面指定的***個(gè)值大于第二個(gè)值,則該查詢不返回任何行。
column_name:在比較中使用的列名。在會(huì)產(chǎn)生歧義時(shí),一定要指明列所在的表名。
comparison_operator:比較運(yùn)算符。見(jiàn)下表:
以下是引用片段:
符號(hào) 意義
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
<> 不等于
在比較char,varchar型數(shù)據(jù)時(shí),“<”的意思是更接近字母表頭部,“>”代表更接近字母表尾部。一般來(lái)說(shuō),小寫(xiě)字母大于大寫(xiě)字母,大寫(xiě)字母大于數(shù)字,但是這可能依賴于服務(wù)器上操作系統(tǒng)的比較順序。
在比較時(shí),末尾的空格是被忽略的。例如,“Dirk”等于“Dirk ”。
在比較日期時(shí),“<”表示早于,“>”表示晚于。
在使用比較運(yùn)算符比較character和datetime數(shù)據(jù)時(shí),需用引號(hào)將所有數(shù)據(jù)引起來(lái)。
expression:可能是列名、常數(shù)、函數(shù)或者是列名或常數(shù)的任意組合,以及以算術(shù)運(yùn)算符或逐位運(yùn)算符連接的函數(shù)。算術(shù)運(yùn)算符如下表所示:
以下是引用片段:
符號(hào) 意義
+ 加號(hào)
- 減號(hào)
* 乘號(hào)
/ 除號(hào)
以上的相關(guān)內(nèi)容就是對(duì)快速掌握MySQL SELECT語(yǔ)句的介紹,望你能有所收獲。
【編輯推薦】
- 對(duì)Apache PHP MySQL的安裝在Ubuntu 7.04上
- MySQL數(shù)據(jù)庫(kù)進(jìn)行備份在Linux異構(gòu)網(wǎng)絡(luò)里
- 卸載MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)需要哪些項(xiàng)目?
- 圖解MySQL數(shù)據(jù)庫(kù)安裝與實(shí)際操作
- 從MySQL數(shù)據(jù)庫(kù)表中來(lái)檢索數(shù)據(jù)并不難