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.%' 了。 


JOIN子句的用法 
  JOIN是很好用的一个SELECT查询的子句,虽然有了它以后你的查询语句变得非常的长,写错的概率也增大了;可是四分之一柱香以后,你就会彻底的爱上它,因为我决定把它的优点全部展示给你! 
  为了便于读者接受,我们还是先来建一个数据库吧。 

#货物表 
create table goods ( 
id int auto_increment, 
code varchar(10) not null, 
name varchar(20), 
spec varchar(40), 
grade varchar(10), 
primary key(id) ); 

#业务员表 
create table staff ( 
id int auto_increment, 
name varchar(20), 
depart int not null, 
primary key(id) ); 

#部门表 
create table depart ( 
id int auto_increment, 
name varchar(20), 
primary key(id) ); 

#客户表 
create table customer ( 
id int auto_increment, 
name varchar(60) not null, 
association varchar(20), 
tel varchar(30), 
fax varchar(30), 
addr varchar(80), 
postcode varchar(10), 
email varchar(40), 
primary key(id) ); 

#销售记录表 
create table sales ( 
id int auto_increment, 
inputime datetime not null, 
staff int not null, 
customer int not null, 
good_code varchar(10) not null, 
amount decimal(10,2) not null default 0.00, 
price decimal(8,2) not null default 0.00, 
memo text, 
primary key(id) ); 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值