MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)令哟,由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)神年,在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中霉旗,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性简僧。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言啦逆。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版沟蔑,由于其體積小、速度快朗和、總體擁有成本低憔儿,尤其是開放源碼這一特點(diǎn)唱逢,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫劫樟。由于其社區(qū)版的性能卓越奶陈,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。
一僻肖、排序檢索數(shù)據(jù)
如果不排序,數(shù)據(jù)一般將以它在底層表中出現(xiàn)的順序顯示秒啦。這可以是數(shù)據(jù)最初添加到表中的順序巷怜。但是,如果數(shù)據(jù)后來進(jìn)行過更新或刪除,則此順序?qū)?huì)受到MySQL重用回收存儲(chǔ)空間的影響。關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論認(rèn)為磨总,如果不明確規(guī)定排序順序馆纳,則不應(yīng)該假定檢索出的數(shù)據(jù)的順序有意義。
1.排序數(shù)據(jù)
子句:SQL語句由子句構(gòu)成,有些子句是必需的,而有的是可選的。一個(gè)子句通常由一個(gè)關(guān)鍵字和所提供的數(shù)據(jù)組成菠红。子句的例子有SELECT語句的FROM子句。
為了明確的排序用SELECT語句檢索出的數(shù)據(jù),可用ORDER BY子句摹闽。ORDER BY子句取一個(gè)或多個(gè)列的名字舵匾,據(jù)此對(duì)輸出進(jìn)行排序坐梯。
SELECT prod_name FROM products ORDER BY prod_name;
這條語句除了指示MySQL對(duì)prod_name列以字母順序排序數(shù)據(jù)的ORDER BY子句外,與前面的語句相同拍谐。此語句的輸出如下圖所示:
2.按多個(gè)列排序
下面的代碼檢索3個(gè)列烛缔,并按其中兩個(gè)列對(duì)結(jié)果進(jìn)行排序——首先按價(jià)格,然后再按名稱排序轩拨。
SELECT prod_id,prod_price, prod_name FROM products ORDER BY prod_price,prod_name;
此語句的輸出如下圖所示:
3.指定排序方向
數(shù)據(jù)排序不限于升序排序亡蓉,這只是默認(rèn)的排序順序砍濒。還可以使用ORDER BY子句以降序順序排序杠河。為了進(jìn)行降序排序叹坦,必須指定DESC關(guān)鍵字文捶。
SELECT prod_id,prod_price, prod_name FROM products ORDER BY prod_price DESC;
此語句的輸出如下圖所示:
在降序排列的基礎(chǔ)上再按照產(chǎn)品名排序。
SELECT prod_id,prod_price, prod_name FROM products ORDER BY prod_price DESC,prod_name;
此語句的輸出如下圖所示:
注:使用ORDER BY 和LIMIT的組合射富,能找出一個(gè)列中最高或者最低的值膝迎。下面的例子演示如何找到最貴的物品。
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
此語句的輸出如下圖所示:
二胰耗、過濾數(shù)據(jù)
1.使用WHERE子句
在SELECT語句中限次,數(shù)據(jù)根據(jù)WHERE子句中指定的搜索條件進(jìn)行過濾。WHERE子句在表名(FROM子句)之后給出柴灯。下面這條語句從products表中檢索兩個(gè)列卖漫,但不返回所有行,只返回prod_price值為2.50的行赠群。
SELECT prod_name ,prod_price FROM products WHERE prod_price =2.50;
此語句的輸出如下圖所示:
2.檢查單個(gè)值
(1)示例如下:
SELECT prod_name ,prod_price FROM products WHERE prod_name='fuses';
此語句的輸出如下圖所示:
(2)示例如下:
SELECT prod_name ,prod_price FROM products WHERE prod_price<10;
此語句的輸出如下圖所示:
(3)示例如下:
SELECT prod_name ,prod_price FROM products WHERE prod_price<=10;
此語句的輸出如下圖所示:
3.不匹配檢查
以下例子是列出不是由供應(yīng)商1003制造的所有產(chǎn)品羊始。
SELECT vend_id,prod_name FROM products WHERE vend_id<>1003;
SELECT vend_id,prod_name FROM products WHERE vend_id!=1003;
此語句的輸出如下圖所示:
4.范圍值檢查
使用BETWEEN操作符,檢索價(jià)格在5美元到10美元之間的所有產(chǎn)品查描。
SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10 ;
此語句的輸出如下圖所示:
5.空值檢查
在創(chuàng)建表時(shí)突委,表設(shè)計(jì)人員可以指定其中的列是否可以不包含值速警。在一個(gè)列不包含值時(shí),稱其為包含空值NULL鸯两。
SELECT cust_id FROM customers WHERE cust_email IS NULL ;
此語句的輸出如下圖所示: