MySQL基础教程:选择数据-select语句
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子句中不能使用这个别名。
-
标签错误:<!-- #Label#
labelId=20160707140604
moduleId=1
classId=12231768634
orderby=2
fields=url,title,u_info
attribute=
datatypeId=22192428132
recordCount=3
pageSize=
<htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate>
-->
- 我要参加技术沙龙