重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、
成都创新互联公司于2013年成立,先为邵原等服务建站,邵原等地企业,进行企业商务咨询服务。为邵原企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
1)针对author这个字段中含有POST内容的所有列:select * from bookSystem where author LIKE '%".$_POST['search']."%'
2)针对bookName 这个字段中含有POST内容的所有列:
select * from bookSystem where bookName LIKE '%".$_POST['search']."%'
3)针对press 这个字段中含有POST内容的所有列:
select * from bookSystem where press LIKE '%".$_POST['search']."%'
二、WHERE 子句
1)如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
2)语法SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
1、where型子查询
(把内层查询结果当作外层查询的比较条件)
#不用order by 来查询最新的商品
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
#取出每个栏目下最新的产品(goods_id唯一)
select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);
2、from型子查询
(把内层的查询结果供外层再次查询)
#用子查询查出挂科两门及以上的同学的平均成绩
思路:
#先查出哪些同学挂科两门以上
select name,count(*) as gk from stu where score 60 having gk =2;
#以上查询结果,我们只要名字就可以了,所以再取一次名字
select name from (select name,count(*) as gk from stu having gk =2) as t;
#找出这些同学了,那么再计算他们的平均分
select name,avg(score) from stu where name in (select name from (select name,count(*) as gk from stu having gk =2) as t) group by name;
3、exists型子查询
(把外层查询结果拿到内层,看内层的查询是否成立)
#查询哪些栏目下有商品,栏目表category,商品表goods
select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);
前面介绍了如何对表数查询、更新、删除,本小节介绍如何在查询、更新、删除操作加上 WHERE 条件约束,使这些语句的操作更加准确,满足业务需求。WHERE 条件的操作符类型有如下:
以 teacher 表为例,查询年龄大于 18 的教师信息:
执行结果如下图:
再比如使用 LIKE 模糊查询身份证号以 020X 结尾的教师信息:
执行结果如下图:
[图片上传失败...(image-f53914-1648379120315)]
以 teacher 表为例,查询年龄大于 18 和 教师姓氏 王 的教师信息:
执行结果如下图:
[图片上传失败...(image-7dbeda-1648379120315)]
以 teacher 表为例,查询年龄大于 25 或 教师姓氏 王 的教师信息:
执行结果如下图:
以 teacher 表为例,将 age 在 20 和 30 之间的教师身份证设置为 无 :
为了演示方便,我们先给 teacher 表增加一个字段 email :
执行结果如下图:
清空表数据:
然后往 teacher 表插入几条测试数据:
然后查询 email 为 NULL 的教师信息结果集:
执行结果如下图:
本小节介绍了如果在查询、更新语句后面加上 WHERE 条件约束,需要注意的是当使用 、 、这样的操作符和空值比较的时候,NULL值与任何其它值的比较(即使是NULL)永远不会为 TRUE ,例如要查询 name 为 NULL 的结果集要写成 name IS NULL ,而不能使用 name=NULL 。
一使用SELECT子句进行多表查询
SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件
SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主外键约束来实现
二使用表的别名进行多表查询
如:SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id='$_POST[textid]'
SQL语言中,可以通过两种方式为表指定别名
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
例子:
select * from user where id=1
查询id为一的用户
select * from user where name like '章%'
查询姓张的用户
select * from user where age in (12,13,14) and sex='男'
查询年龄是12,13,14的男生用户
。。。。