MySQL学习笔记——4.CURD
1.增
insert into 表名 [(字段)] values (值);
2.删
删除数据:delete from 表名 where exp;
清空数据:truncate 表名;
3.改
update 表名 set 字段=新值,... where exp;
4.查
①where精确查询
select 字段1.. from 表名 where id = n;
查询字段可为多个,使用*则表示所有字段
id = n 为表达式,表达式为真,则取出数据,为假,则不取
例:商城中商品是否为新品/精品/热卖,就在于字段值为0/1
而在前台查询时,只需要select语句后加where is_new = 1;
表达式中还可使用的符号有:
!= <> 不等于 < 小于 <= 小于等于 >= 大于等于 > 大于
in 在某集合内 between 在某范围内
not ! 非 or || 或 and && 与
优先级为:not->and->or
②where模糊查询
select 字段1.. from 表名 where 字段名 like ‘字符串%‘;
取出字段名以‘字符串‘开头的数据
%为通配符,匹配任意字符
_用于匹配任意单个字符
③group与统计函数
select max(字段) from 表名 group by 分组字段; //查找组中最大数据
其他统计函数:
min 最小 sum 求和 avg 平均 count 总行数
④having筛选
select 字段1,(字段2-字段3) as 命名字段 from 表名 having exp;
此时的exp表达式前就不能使用where了,where查找的是数据库中的原始数据
而原始数据中,是没有‘命名字段的‘,此时是需要在被提取出的原始数据中
再进行筛选,需要使用having
⑤order by 排序
排序是在取出结果集后,再进行的
select 字段1.. from 表名 where exp order by 排序字段 desc;
desc => 由高到低 降序
asc => 由低到高 升序
⑥limit
用于限制取出的数据数量
... limit 0,3;
0 为offset 即从偏移多少条开始取
3 为N 即取出的条目数
⑦.where 子查询
select 字段1.. from 表名 where id = (select max(字段) from 表名);
⑧.from 子查询
select * from (select 字段 from 表名 order by 排序字段 asc)
as 命名字段 group by 分组字段;
⑨.连接查询
select 字段1,字段2 from 表1,表2 where 表1.字段 = 表2.字段;
上述为两表全连接查询(两表相乘,信息量过大,效率太低)
左连接:
假设A表在左侧且不动,B表在右侧进行竖向滑动
A表与B表通过一个关系来筛选B表的行
例:A表 left join B表 on exp;
当exp为真时,则将B表中的这一行数据取出
作者:@zhnoah
出处:http://www.cnblogs.com/zhnoah/
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连
接,否则保留追究法律责任的权利。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。