当前位置: Oracle DBA培训网-优技培训 >> MySQL培训 > MySQL培训教程 >

MySQL基础教程:选择数据-select语句

MySQL基础教程:选择数据-select语句

MySQL基础教程:选择数据-select语句,现在本书已为每个表添加了一行数据,下面我们来做一些查询操作。本书将使用SELECT语句查询所需数据。输入如下内容,可以得到books表中所有行列的数据:

  1. SELECT * FROM books;  

星号作为通配符,表示选择了所有列。我们没有指定选择行的限定条件,因此结果将会列出books表中所有行。如果想查找特定的列,则需要列出所需的列名。在SELECT语句的结尾处添加一个WHERE子句,可以选择指定的行:

  1. SELECT book_id, title, description  
  2. FROM books  
  3. WHERE genre = 'novel'

该语句列出了books表中genre列的值为nove的所有图书的标识号、标题、描述信息。当然,当数据库中有更多的图书数据时,结果将会更加有意义。因此,我们假设已经输入了许多图书数据信息,然后再执行。

如果我们想从数据库中得到小说及其作者全名的列表,我们需要将books表和authors表关联起来。这可以通过JOIN子句按如下所示将二个表关联起来:

  1. SELECT book_id, title, pub_year,  
  2. CONCAT(author_?rst, ' ', author_last) AS author  
  3. FROM books  
  4. JOIN authors USING(author_id)  
  5. WHERE author_last = 'Greene'

在FROM子句中,我们通过author_id列将books表和authors表关联起来。如果二个表中的列名不同,我们还需要在JOIN子句中使用其他的子句或方法来连接这二个表(例如:ON(author_id=writer_id))。需要注意SQL语句中的第二行,本书使用了一个字符串函数CONCAT()。使用此函数,可以将取出的数据连接起来形成更有意义的输出内容。既然如此,我们取出作者的名字,并在其后添加一个带引号的空格,紧接着是作者的姓。结果将显示在列标题为author的列中。关键字AS根据我们指定的名称创建了列标题,我们称这个列标题为别名。

在WHERE子句中,本书使用姓Greene指定了我们所需的Greene的作品信息。如果books表中没有Greene的作品信息,则将不会有任何结果显示。下面显示了前面的查询结果:

  1. +---------+-----------------------+----------+---------------+  
  2. | book_id | title | pub_year | author |  
  3. +---------+-----------------------+----------+---------------+  
  4. | 1 | The End of the Affair | 1951 | Graham Greene |  
  5. | 2 | Brighton Rock | 1937 | Graham Greene |  
  6. +---------+-----------------------+----------+---------------+ 

正如你所看到的,GrahamGreene的二本作品都列举出来了。列标题也已经变成了AS子句后面指定的名称。我们也可以使用关键字AS将显示的列标题改成其他名称。在SELECT语句中可以使用别名author,遗憾的是,在WHERE子句中不能使用这个别名。

技术沙龙MORE+

标签错误:<!-- #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> -->
我要参加技术沙龙