SELECT查询的应用(一)

select

比如我们要从很多文章的标题中找到所有包含"MySQL"这个字眼的文章。这就应该在 WHERE 子句中用到 "LIKE",就是模糊查询。
  首先交待一下SQL语言中的统配符,统配符就是用一个字符统一匹配任何字符,SQL中,一个字符"_"匹配单个的任何字符;一个字符"%"匹配任何零个到多个字符。举例来说,"A_" 可以匹配诸如 "AA"、"AB"、"A2"、"A$"……等等;而 "A%" 可以匹配 "ABCD"、"A"、"AG$Bng0"、"An apple is just an apple."……等等。
  怎么用呢?还是举个实际的例子:工厂仓库里的东东,很多、很杂,要分成几大类来管理:比如A类代表机配件,B类代表工具,C类代表包装材料……等等,每一类下面的东东再分别编号,如"A0001"、"A1065"、"B1014"等。在管理这个数据库的时候,编号作为一个字段,这个字段不仅作为该物品的代号,同时也表明了它的类别。当你要查询所有的工具时,可以这样:

SELECT * FROM goods WHERE code LIKE 'B%' ORDER BY code'

这样就是查询code这个字段(就是编号)为字母B打头的所有记录。注意这里'B%'表示字母B是出现在字段的开头,与下一个例子不同:查找文章标题中含有"MySQL"这个字眼的所有文章,因为要查找的目标"MySQL"不一定出现在文章标题的什么位置上,所以应该:

SELECT * FROM articles WHERE title LIKE '%MySQL%'

'%MySQL%'的意思是"MySQL"这个字眼出现在标题中,它的前面可能有文字,后面也可能有文字。
  既然查"MySQL"可以,查别的字眼未尝不可以。可以让浏览者自己输入他要搜索的关键字,就是这样:

<!--input.php:-->
<form method="get" action="search.php">
关键字:<input type="text" size=10 name="key"> <input type="submit" value="查询">
</form>

<!--search.php:-->
<?
...
$query="select * from article where title like '%$key%'";
$result=$mysql_query($query,$db);
...
?>

  注意在使用模糊查询时,有一种情况应该小心,就是当一个字段是类似 '2,13,25,33' 这样的值时,若要查询它其中是否包含'2'这一项,就不能简单的用 '%2%' 来查询。因为如果这样,一个这样的值也会被查询到:'1,6,21,27'。这并不是我们所希望的。所以在处理这样的问题时,应该将该字段存为 '.2.13.25.33.' 的形式。这样当需要查询包含'2'这一项的记录,就可以放心的用 '%.2.%' 了。

  时间仓促,草草成稿;如有不确,务请指正。

时间: 2024-10-02 06:36:04

SELECT查询的应用(一)的相关文章

SELECT查询的应用(三)

select 分类汇总 结构化查询(SQL)的另一个强大的功能是分类汇总,也就是GROUP子句:MySQL当然也提供这个功能.现在还以我在<SELECT查询的应用(二)JOIN子句的用法>中的数据库为例说说GROUP子句的用法. 一.查询每个客户的交易次数.COUNT()是一个与GROUP子句一起使用的函数,它的作用是计数: SELECT customer,COUNT(*) AS sale_count FROM sales GROUP BY customer 返回的查询可能结果为: +----

SELECT查询的应用(二)

select JOIN子句的用法 JOIN是很好用的一个SELECT查询的子句,虽然有了它以后你的查询语句变得非常的长,写错的概率也增大了:可是四分之一柱香以后,你就会彻底的爱上它,因为我决定把它的优点全部展示给你! 为了便于读者接受,我们还是先来建一个数据库吧. #货物表 create table goods ( id int auto_increment, code varchar(10) not null, name varchar(20), spec varchar(40), grade

Php中使用Select 查询语句的实例

 php中要查询mysql数据库中的内容我们必须先连接mysql数据库,然后再利用sql语句进行查询,下面我们来看一些例子吧 sql有许多对数据库操作的语句.但是常见和比较需要的是这么几个语句 .SELECT 语句用于从数据库中选取数据.    那么我们先来介绍第一种 SELECT语句 语句1:SELECT *  FROM table_name 解说:意思就是读取整个表table_name里面的数据显示出来 语句1:SELECT * FROM table_name Where x = 1 解说:

zf框架的db类select查询器join链表使用示例

 这篇文章主要介绍了zf框架的Db类select查询器join链表使用示例,需要的朋友可以参考下 zend框架的查询器join()链表使用示例    代码如下: <?php //引入Loader类(自动加载类) require_once("Zend/Loader.php"); //使用Loader类引入一个Db类 Zend_Loader::loadClass("Zend_Db"); //引入Zend_Db的状态器 Zend_Loader::loadClass(

为什么忘记commit也会造成select查询的性能问题

今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后,发现事情的真相有点让人哭笑不得,但是也是非常有意思的.我们先简单构造一下类似的案例,当然只是简单模拟.   假设一个同事A,创建了一个表并初始化了数据(实际环境数据量较大,有1G多的数据),但是他忘记提交了.我们简单模拟如下: SQL> create table test_uncommit   2

[NHibernate]N+1 Select查询问题分析

目录 写在前面 文档与系列文章 N+1 Select查询问题分析 总结 写在前面 在前面的文章(延迟加载,立即加载)中都提到了N+1 Select的问题,总觉得理解的很不到位,也请大家原谅,这也是为什么单独将该问题拿出来做分析的原因.nhibernate的默认Lazy加载方式是解决N+1 select问题的一种方案,而我自身的理解是立即加载可以解决,完全的背道而驰了.写出那篇文章后,对这个问题,一直念念不忘,总觉得哪地方不对劲.由于我对问题的理解很不透彻,也同样造成你的误解,真的很抱歉. 文档与

sql中select查询的一个简单问题

问题描述 sql中select查询的一个简单问题 表A结构如下: 设备编号 预检日期 A01 2014-1-2 A02 2014-6-7 A01 2015-3-2 A02 2015-9-1 怎样写SQL语句会得到下面的结果集,注意,得到3列,表中原来两列 设备编号 2014预检日期 2015预检日期 A01 2014-1-2 2015-3-2 A02 2014-6-7 2015-9-1 各位大侠,困扰我一下午了.... 解决方案 这是SQL Server的写法. SELECT ISNULL(a1

mysql data列表数据和select查询数据不符

问题描述 mysql data列表数据和select查询数据不符 通过data列表插入的数据和在查询select到的数据不符,data列表不能刷新,请大神解答一下= = 解决方案 要么你插入语句有问题,要么你查询语句有问题 解决方案二: 挨个排除呗,先插入一条,自己去数据库看看有没有插入进去,有的话说明你插入语句没问题:然后再查询,如果和数据库里面的不符,肯定是你查询语句的问题了 解决方案三: 是没是还没有提交 (commit)

SQL 基础--&amp;gt;SELECT 查询

--================================ --SQL 基础-->SELECT 查询 --================================= /* 一.SQL 结构化查询语言     包括DDL(数据定义语言).DCL(数据控制语言).     DQL(数据查询语言).DML(数据操纵语言)   二.SQL的特点     SQL 语句不区分大小写     SQL 语句能输入一行或多行     关键字不能整行缩写或分离     子句通常被放置在分开的行上

mysql 的select 查询问题

问题描述 mysql 的select 查询问题 SELECT t.* FROM deviceloginfo t houses h where t.HouseId = h.ID and h.HousePurpose = '企业用房' order by t.createDate desc;可以查询出来 但换成:SELECT count(t.*) FROM deviceloginfo t houses h where t.HouseId = h.ID and h.HousePurpose = '企业用