MySQL培訓教程:查詢數據命令
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢MySQL培訓教程:查詢數據命令,當數據庫中存放了大量數據時,在SELECT語句的結果中分屏查找數據是非常麻煩的一件事情。有時,我們也不清楚所查詢列的精確完整值是什么。這種情況下,可以使用LIKE操作符。假設books表中已經輸入了數千條記錄,一名顧客說他想查詢某本書,但他并不記得書的作者名或標題,而只記得標題中的關鍵字traveler和winter。我們可以基于這些僅有的信息,通過如下SQL語句查詢數據庫:
- SELECT book_id, title,
- CONCAT(author_?rst, ' ', author_last) AS author
- FROM books
- JOIN authors USING(author_id)
- WHERE title LIKE '%traveler%'
- AND title LIKE '%winter%';
- +---------+-----------------------------------+---------------+
- | book_id | title | author |
- +---------+-----------------------------------+---------------+
- | 1400 | If on a winter's night a traveler | Italo Calvino |
- +---------+-----------------------------------+---------------+
在LIKE操作符后,我們使用了二次通配符%表示我們將查詢這些行,該行的title列的值包含字符串traveler,traveler前可以有零個或多個字符(前一個%),traveler后也可跟著零個或更多的字符(結尾處的%)。換種說法,單詞traveler必須包含在列的值中。子句的下一部分表示winter也要包含在同一列的值中。另外,LIKE關鍵字與等號一樣,它們都是操作符。
如果另一顧客要求我們在數據庫中查詢GrahamGreene的作品中標題包含單詞Stamboul或Orient的圖書信息,可以按照如下所示,在表達式中使用OR操作符:
- SELECT book_id, title
- FROM books
- WHERE author_id = 1
- AND title LIKE '%Stamboul%'
- OR author_id = 1
- AND title LIKE '%Orient%';
既然我們已經知道了作者的標識碼,上面的語句就變得更簡潔了,只對一個表操作就可以。值得注意的是,在每個表達式中都要指定author_id的值,否則我們可能會得到其他作者的作品名中包含查詢字符的圖書信息。關于操作符的更多信息,可參見附錄B。在第6章中可以看到更多的示例以及搜索數據的可行方法。