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子句中不能使用这个别名。