MYSQL中的主要查询方法
#简单查询
#查询表中的所有数据
SELECT * FROM test;
#查询表中的指定列的数据
SELECT cid,cname FROM test;
#过滤重复的数据
SELECT DISTINCT category FROM test;
# 给表起别名(只是显示名改变实际名称未改变)
SELECT * FROM test AS te;
SELECT * FROM test te;
#给表中的字段起别名;若有想加入的数据有空格需引号引起来
SELECT cname AS 商品名称,cprice AS 商品价格 FROM test;
SELECT cname 商品名称1,cprice '商品 价格1' FROM test;
#查询 语句中 可以直接进行数据运算
SELECT (1+1);
#查询商品名称和商品的价格涨价 商品价格+1000
SELECT * FROM test;
SELECT cname,cprice+1000 AS cprice FROM test;
SELECT cid+1000 FROM test;
#分页查询
# 只要查询前6条
SELECT * FROM test LIMIT 6;
# 分页查询 每页显示五条 查询第一页
SELECT * FROM test LIMIT 0,5;
# 分页查询 每页显示五条 查询第二页
SELECT * FROM test LIMIT 5,5;
# 分页查询 每页显示五条 查询第二页
SELECT * FROM test LIMIT 10,5;
# 模糊查询
# 查询商品名称以‘海澜’开头的商品信息 %表示多个字符
SELECT * FROM test WHERE cname LIKE '海澜%';
# 查询商品名称以‘海澜’开头且后方有两个字符的商品信息
SELECT * FROM test WHERE cname LIKE '海澜__';
# 查询商品名称有三个字符的商品信息 _表示单个字符
SELECT * FROM test WHERE cname LIKE '___';
#若需查询带有%字符的信息,可以加转译字符\或者自定义转译字符
SELECT * FROM test WHERE cname LIKE '%:%%' ESCAPE ':';
#条件查询
#在查询语法中可以在后方加入 逻辑约束条件; 确定查询范围
#查询商品名称为海澜之家的商品的所有的信息
SELECT * FROM test WHERE cname='海澜之家';
#查询价格为5000的商品
SELECT * FROM test WHERE cprice=5000;
#查询价格不为5000的商品
SELECT * FROM test WHERE cprice!=5000;
SELECT * FROM test WHERE cprice<>5000;
#查询价格大于500的商品
SELECT * FROM test WHERE cprice>500;
#查询价格10-1000之间的商品
SELECT * FROM test WHERE cprice>=10 && cprice<=1000;
SELECT * FROM test WHERE cprice BETWEEN 10 AND 100;
#查询价格是10或者是46元的商品
SELECT * FROM test WHERE cprice IN(19,46);
SELECT * FROM test WHERE cprice=19 OR cprice=5000;
#按分类的不同查询
SELECT * FROM test WHERE category IS NULL;# 是空
SELECT * FROM test WHERE category IS NOT NULL;# 是不空
SELECT * FROM test WHERE NOT(category IS NULL);#与上一条效果相同
#查询某范围内的数可以用in
SELECT * FROM test WHERE cid IN(1,2,3,4);
#查询两种不同类型的限制可以用or,若需要同时满足两种用and即可
SELECT * FROM test WHERE cid IN(1,2,3,4) OR cname LIKE ('___');
#排序查询 ASC 升序 DESC 降序
#升序查询
SELECT * FROM product ORDER BY price ASC;
#默认排序查询,默认升序
SELECT * FROM product ORDER BY price;
#降序查询
SELECT * FROM product ORDER BY price DESC;
#显示价格 去掉重复的价格 并依照价格降序
SELECT DISTINCT price FROM product ORDER BY price DESC;
#对文本类型的分类也可以进行降序排序,不过规则不同
SELECT * FROM product ORDER BY category_id DESC;
#聚合(函数)查询
#count 统计指定列不为null 行数,不建议用COUNT(*),如果有需要用COUNT(1)效率高;
SELECT COUNT(cname) FROM test;
#sum 指定列的数值和 如果指定的列不是数值类型 结果为0
SELECT SUM(cprice) FROM test;
#max指定列的最大值 如果指定的列是字符串类型 使用字符串排序运算
SELECT MAX(cprice) FROM test;
#min指定列的最小值 如果指定的列是字符串类型 使用字符串排序运算
SELECT MIN(cprice) FROM test;
#avg 平均值 如果指定的列不是数值类型 那么计算结果为零
SELECT AVG(cprice) FROM test;
#查询分别满足条件的值
#select count(字段|*),sum(字段),max(字段),min(字段),avg(字段)from 表名;
SELECT COUNT(cprice),SUM(cprice),MAX(cprice),MIN(cprice),AVG(cprice) FROM test;
#分类查询
#按商品的类别进行分组 统计各个分类商品的个数
SELECT category_id,COUNT(*) FROM product GROUP BY category_id;
#按商品的类别进行分组 统计各个分类商品的平均价格
SELECT category_id,AVG(price) FROM product GROUP BY category_id;
#where 用于分组前进行条件过滤
#having 用于分组后 对分完组的数据进行过滤
# 先按商品的类别分组 统计各个分组商品的个数 只查询每组商品大于200的商品
SELECT category_id,COUNT(*) FROM product WHERE price>200 GROUP BY category_id;
# 先按商品的类别分组 统计各个分组商品的个数 只显示统计个数等于三的信息
SELECT category_id,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*)=3;
#连接查询
#内连接,查询的数据在多个有关联的表中
SELECT cgtable.cid,test.cname,test.category
FROM test INNER JOIN cgtable#确定连接方式,inner为内连接,outer为外连接
ON test.cid=cgtable.cid;#确定连接条件
#外连接,又分为(左)右连接查询方式与内相同但结果记录不同
SELECT cgtable.cid,test.cname,test.category
FROM test LEFT JOIN cgtable
ON test.cid=cgtable.cid;
#在内连接中不满足条件的数据不显示,外连接则可以显示
#不过依据左右连接的不同,保留的数据不同,没有的数据显示为null
#自连接,可视为对两个相同的表进行连接查询
SELECT t.cid,t.cname,s.category
FROM test AS t,test AS s
WHERE t.cid=s.cid;
#等值连接,效果与内连接相同
SELECT cgtable.cid,test.cname,test.category
FROM test,cgtable
WHERE test.cid=cgtable.cid;
#非等值连接,返回所有匹配记录,所得行数=表a的行数*表b的行数
SELECT cgtable.cid,test.cname,test.category
FROM test,cgtable;
#子查询,即在WHERE内部嵌套另一个查询条件
SELECT cgtable.cid,test.cname,test.category
FROM test,cgtable
WHERE test.cid=(SELECT cid FROM test WHERE cid=4);
MYSQL中的主要查询方法的更多相关文章
- sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...
- mysql中的模糊查询
转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...
- MySQL中的模糊查询和通配符转义
MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2 ...
- MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果
注:MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果: 如下所示: MySQL: select * from tableName where name li ...
- mysql中RAND()随便查询记录效率问题和解决的方法分享
在我们做开发的中效率一直是个问题,特别是对于非常多大数据量操作,今天我们碰到一个要随机查询数据,一開始我们可能想到最简单的order by rand() 来操作但效率不敢恭维啊 近期因为须要大概研究了 ...
- mysql中删除binlog的方法?mysql中如何删除binlog?
需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...
- 在MySQL中使用explain查询SQL的执行计划
1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...
- elasticsearch 7.x 如何满足mysql中的模糊查询功能(like)
业务场景:筛选项原功能是用mysql左模糊进行过滤查询,现业务要用es,怎么样才能满足原功能,又不损性能. elasticsearch中有关于模糊查询的操作:wildcard 文档:https://b ...
- 如何在MySQL中使用explain查询SQL的执行计划?
1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...
随机推荐
- redis 客户端工具 RedisDesktopManager
https://redisdesktop.com/download 可以查看到spring+redis 缓存的数据
- 题解报告:poj 3669 Meteor Shower(bfs)
Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...
- 转发:吐血总结,彻底明白 python3 编码原理
吐血总结,彻底明白 python3 编码原理 写的不错,转发学习一下,侵删.. 原文地址https://zhuanlan.zhihu.com/p/40834093 防止原文看不到了 这里粘贴复制一下: ...
- idea工程jdk设置问题
经常用idea的朋友,会遇到一个问题,那就是你在单测的时候,会报一个jdk的错,截图如下: 我的解决方案是在pom.xml里配置一个节点: <properties> <maven.c ...
- MySql数据库存储emoji表情报错解决办法
异常:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 解决: ...
- Python,报错NameError: name 'math' is not defined
1 #-*- coding : utf-8 -*- 2 import math 3 4 def move(x, y, step, angle=0): 5 nx = x + step * math.co ...
- React 篇 Comment Model
Model 原型 Comment Box <div className="commentBox"> <h1>Comments</h1> < ...
- 用rownum先排序后分页
今天突然想到rownum可以解决分页问题,于是做了各种实验,找个几个文章,最后有了一定成果. 现有表tablename,含有字段showorder,要求提取showorder的第11行到20行数据. ...
- R函数详解
字符串连接函数paste 1.字符串连接:paste(..., sep = " ", collapse = NULL)sep表示分隔符,默认为空格.collapse表示如果不指定值 ...
- vuex与redux,我们都一样
vuex与redux的主要区别: redux:生成的全局数据流是通过每个组件的props逐层传递到各个子组件的,通过@connect装饰器绑定在this.props上面. vuex :生成的全局数据则 ...