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章中可以看到更多的示例以及搜索数据的可行方法。