MySQL培訓教程:select選擇數據命令
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢MySQL培訓教程:select選擇數據命令,現在本書已為每個表添加了一行數據,下面我們來做一些查詢操作。本書將使用SELECT語句查詢所需數據。輸入如下內容,可以得到books表中所有行列的數據:
- SELECT * FROM books;
星號作為通配符,表示選擇了所有列。我們沒有指定選擇行的限定條件,因此結果將會列出books表中所有行。如果想查找特定的列,則需要列出所需的列名。在SELECT語句的結尾處添加一個WHERE子句,可以選擇指定的行:
- SELECT book_id, title, description
- FROM books
- WHERE genre = 'novel';
該語句列出了books表中genre列的值為nove的所有圖書的標識號、標題、描述信息。當然,當數據庫中有更多的圖書數據時,結果將會更加有意義。因此,我們假設已經輸入了許多圖書數據信息,然后再執行。
如果我們想從數據庫中得到小說及其作者全名的列表,我們需要將books表和authors表關聯起來。這可以通過JOIN子句按如下所示將二個表關聯起來:
- SELECT book_id, title, pub_year,
- CONCAT(author_?rst, ' ', author_last) AS author
- FROM books
- JOIN authors USING(author_id)
- WHERE author_last = 'Greene';
在FROM子句中,我們通過author_id列將books表和authors表關聯起來。如果二個表中的列名不同,我們還需要在JOIN子句中使用其他的子句或方法來連接這二個表(例如:ON(author_id=writer_id))。需要注意SQL語句中的第二行,本書使用了一個字符串函數CONCAT()。使用此函數,可以將取出的數據連接起來形成更有意義的輸出內容。既然如此,我們取出作者的名字,并在其后添加一個帶引號的空格,緊接著是作者的姓。結果將顯示在列標題為author的列中。關鍵字AS根據我們指定的名稱創建了列標題,我們稱這個列標題為別名。
在WHERE子句中,本書使用姓Greene指定了我們所需的Greene的作品信息。如果books表中沒有Greene的作品信息,則將不會有任何結果顯示。下面顯示了前面的查詢結果:
- +---------+-----------------------+----------+---------------+
- | book_id | title | pub_year | author |
- +---------+-----------------------+----------+---------------+
- | 1 | The End of the Affair | 1951 | Graham Greene |
- | 2 | Brighton Rock | 1937 | Graham Greene |
- +---------+-----------------------+----------+---------------+
正如你所看到的,GrahamGreene的二本作品都列舉出來了。列標題也已經變成了AS子句后面指定的名稱。我們也可以使用關鍵字AS將顯示的列標題改成其他名稱。在SELECT語句中可以使用別名author,遺憾的是,在WHERE子句中不能使用這個別名。