mysql的查询语句
目录
一,SQL语句查询全部
二,条件查询
三,聚合查询
四,排序查询
五,分组查询
六,内连接查询
七,外连接查询
八,子查询
九,自关联查询
十,SQL语句练习
一,SQL语句查询全部
查询全部数据
标准语法:
SELECT * FROM 表名;
-- 查询product表所有数据
SELECT * FROM product;
/*
查询指定列
标准语法:
SELECT 列名1,列名2,... FROM 表名;
*/
-- 查询名称、价格、品牌
SELECT `NAME`,price,price FROM product;
/*
去除重复查询
标准语法:
SELECT DISTINCT 列名1,列名2,... FROM 表名;
*/
-- 查询品牌
SELECT brand FROM product;
-- 查询品牌,去除重复
SELECT DISTINCT brand FROM product;
/*
计算列的值
标准语法:
SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名;
如果某一列为null,可以进行替换
ifnull(表达式1,表达式2)
表达式1:想替换的列
表达式2:想替换的值
*/
-- 查询商品名称和库存,库存数量在原有基础上加10
SELECT NAME,stock+10 FROM product;
-- 查询商品名称和库存,库存数量在原有基础上加10。进行null值判断
SELECT NAME,IFNULL(stock,0)+10 FROM product;
/*
起别名
标准语法:
SELECT 列名1,列名2,... AS 别名 FROM 表名;
*/
-- 查询商品名称和库存,库存数量在原有基础上加10。进行null值判断。起别名为getSum
SELECT `NAME`,IFNULL(stock,0)+10 AS getSum FROM product;
SELECT `NAME`,IFNULL(stock,0)+10 getSum FROM product;
二,条件查询
/*
条件查询
标准语法:
SELECT 列名列表 FROM 表名 WHERE 条件;
*/
-- 查询库存大于20的商品信息
SELECT * FROM product WHERE stock > 20;
-- 查询品牌为华为的商品信息
SELECT * FROM product WHERE brand = '华为';
-- 查询金额在4000 ~ 6000之间的商品信息
SELECT * FROM product WHERE price > 4000 AND price < 6000;
SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;
-- 查询库存为14、30、23的商品信息
SELECT * FROM product WHERE stock = 14 OR stock = 30 OR stock = 23;
SELECT * FROM product WHERE stock IN (14,30,23);
-- 查询库存为null的商品信息
SELECT * FROM product WHERE stock IS NULL;
-- 查询库存不为null的商品信息
SELECT * FROM product WHERE stock is NOT NULL;
-- 查询名称以小米为开头的商品信息,后面的名称迷糊查询用%
SELECT * FROM product WHERE `NAME` LIKE '小米%';
-- 查询名称第二个字是为的商品信息开头一个字就用一个_代替
SELECT * FROM product WHERE `NAME` LIKE '_为%';
-- 查询名称为四个字符的商品信息,四个字符就用四个_
SELECT * FROM product WHERE NAME LIKE '____';
-- 查询名称中包含电脑的商品信息
SELECT * FROM product WHERE NAME LIKE '%电脑%';
三,聚合查询
/*
聚合函数
标准语法:
SELECT 函数名(列名) FROM 表名 [WHERE 条件];
*/
-- 计算product表中总记录条数
SELECT COUNT(*) FROM product;
-- 获取最高价格
SELECT MAX(price) FROM product;
-- 获取最低库存
SELECT MIN(stock) FROM product;
-- 获取总库存数量
SELECT SUM(stock) FROM product;
-- 获取品牌为苹果的总库存数量
SELECT SUM(stock) FROM product WHERE brand = '苹果';
-- 获取品牌为小米的平均商品价格
SELECT AVG(price) FROM product WHERE brand = '小米';
注意 -- 聚合函数放在要查询的标前面!!!
四,排序查询
/*
排序查询
标准语法:
SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2;
*/
-- 按照库存升序排序
SELECT * FROM product ORDER BY stock ASC
-- 查询名称中包含手机的商品信息。按照金额降序排序
SELECT * FROM product WHERE `NAME` LIKE '%手机%' ORDER BY price DESC;
-- 按照金额升序排序,如果金额相同,按照库存降序排列
SELECT * FROM product ORDER BY price ASC,stock DESC;
五,分组查询
/*
分组查询
标准语法:
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式];
*/
-- 按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product GROUP BY brand;
-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product WHERE price > 4000 GROUP BY brand;
-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的
SELECT brand,SUM(price) getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000;
-- 对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的、并按照总金额的降序排列
SELECT brand,SUM(price) getSum FROM product
WHERE price > 4000
GROUP BY brand
HAVING getSum > 7000
ORDER BY getSum DESC;
六,分页查询
/*
分页查询
标准语法:
SELECT 列名 FROM 表名
[WHERE 条件]
[GROUP BY 分组列名]
[HAVING 分组后条件过滤]
[ORDER BY 排序列名 排序方式]
LIMIT 当前页数,每页显示的条数;
LIMIT 当前页数,每页显示的条数;
公式:当前页数 = (当前页数-1) * 每页显示的条数
*/
-- 每页显示3条数据
-- 第1页 当前页数=(1-1) * 3
SELECT * FROM product LIMIT 0,3;
-- 第2页 当前页数=(2-1) * 3
SELECT * FROM product LIMIT 3,3;
-- 第3页 当前页数=(3-1) * 3
SELECT * FROM product LIMIT 6,3;
六,内连接查询
/*
显示内连接
标准语法:
SELECT 列名 FROM 表名1 [INNER] JOIN 表名2 ON 关联条件;
*/
-- 查询用户信息和对应的订单信息
SELECT * FROM USER INNER JOIN orderlist ON orderlist.uid = user.id;
-- 查询用户信息和对应的订单信息,起别名
SELECT * FROM USER u INNER JOIN orderlist o ON o.uid=u.id;
-- 查询用户姓名,年龄。和订单编号
SELECT u.`NAME`,u.age,u.`NAME`
FROM `USER` u
INNER JOINorderlist o
ONu.id = o.uid;
/*
隐式内连接
标准语法:
SELECT 列名 FROM 表名1,表名2 WHERE 关联条件;
*/
-- 查询用户姓名,年龄。和订单编号
SELECT u.id,u.`NAME`,o.number
FROM`USER` u,orderlist o
WHERE
七,外连接查询
/*
左外连接
标准语法:
SELECT 列名 FROM 表名1 LEFT [OUTER] JOIN 表名2 ON 条件;
*/
-- 查询所有用户信息,以及用户对应的订单信息
SELECTu.`NAME`,u.id,u.age,o.number
FROM `USER` u
LEFT JOINorderlist o
ONu.id = o.uid;
/*
右外连接
标准语法:
SELECT 列名 FROM 表名1 RIGHT [OUTER] JOIN 表名2 ON 条件;
*/
-- 查询所有订单信息,以及订单所属的用户信息
SELECTu.`NAME`,u.id,u.age,o.number
FROM `USER` u
RIGHT JOINorderlist o
ONu.id = o.uid;
八,子查询
/*
结果是单行单列的
标准语法:
SELECT 列名 FROM 表名 WHERE 列名=(SELECT 列名 FROM 表名 [WHERE 条件]);
*/
-- 查询年龄最高的用户姓名
SELECT MAX(age) FROM USER;
SELECT `NAME`,age FROM `USER` WHERE age = (SELECT MAX(age) FROM `USER`);
/*
结果是多行单列的
标准语法:
SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 条件]);
*/
-- 查询张三和李四的订单信息
SELECT * FROM orderlist WHERE uid IN (1,2);
SELECT id FROM USER WHERE NAME IN ('张三','李四');
SELECT * FROM orderlist WHERE uid IN (SELECT id FROM USER WHERE NAME IN ('张三','李四'));
SELECT * FROM orderlist WHERE uid IN (SELECT id FROM `USER` WHERE `NAME` in ('张三','李四'));
/*
结果是多行多列的
标准语法:
SELECT 列名 FROM 表名 [别名],(SELECT 列名 FROM 表名 [WHERE 条件]) [别名] [WHERE 条件];
*/
-- 查询订单表中id大于4的订单信息和所属用户信息
SELECT * FROM orderlist WHERE id > 4;
SELECTu.`NAME`,u.age,u.id,
FROM`USER` u,(SELECT * FROM orderlist WHERE id > 4) o
WHEREu.id = o.uid;
九,自关联查询
-- 查询所有员工的姓名及其直接上级的姓名,没有上级的员工也需要查询
/*
分析
员工信息 employee表
条件:employee.mgr = employee.id
查询左表的全部数据,和左右两张表有交集部分数据,左外连接
*/
SELECT e1.id,
e1.`NAME` pName,
e1.mgr,
e2.`NAME` mName
FROMemployee e1
LEFT JOINemployee e2
ON-- e1.id = e2.mgr;e1.mgr = e2.id;
注意:mgr的数据去副表循环查询。
十,SQL语句练习
-- 1.查询用户的编号、姓名、年龄。订单编号
SELECTu.id,u.`NAME`,u.age,o.number
FROM`USER` u,orderlist o
WHEREu.id = o.uid;
-- 2.查询所有的用户。用户的编号、姓名、年龄。订单编号
-- 分析,所有用户用外连接,但是一般用左连接
SELECTu.id,u.`NAME`,u.age,o.numberFROM`USER` u
LEFT JOINorderlist o
ONu.id = o.uid;
-- 3.查询所有的订单。用户的编号、姓名、年龄。订单编号
SELECTo.number,u.id,u.`NAME`,u.age
FROMorderlist o
LEFT JOIN`USER` u
ONo.uid = u.id;
-- 4.查询用户年龄大于23岁的信息。显示用户的编号、姓名、年龄。订单编号
-- 利用子查询进行过滤id>23的年龄
-- 缺点 浪费性能
SELECTu.id,u.`NAME`,u.age,o.numberFROM(SELECT * FROM `USER` WHERE age > 23) u,orderlist oWHEREu.id = o.uid;
-- 方法二 连接查询 where进行判断
SELECTu.id,u.`NAME`,u.age,o.numberFROM`USER` u,orderlist oWHEREu.id = o.uidANDu.age>23;
-- 5.查询张三和李四用户的信息。显示用户的编号、姓名、年龄。订单编号
-- 利用子查询过滤张三和李四以外的人-- 缺点 浪费性能 SELECTu.id,u.`NAME`,u.age,o.numberFROM(SELECT * FROM `USER` WHERE `NAME` IN ('张三','李四')) u,orderlist oWHEREu.id = o.uid;-- 方法二 连接查询 where进行判断SELECTu.id,u.`NAME`,u.age,o.numberFROM`USER` u,orderlist oWHEREu.id = o.uidANDu.`NAME`in ('张三','李四');
-- 6.查询商品分类的编号、分类名称。分类下的商品名称
SELECTc.id,c.`NAME`,p.`NAME`FROMcategory cINNER JOINproduct pONp.cid = c.id;
-- 7.查询所有的商品分类。商品分类的编号、分类名称。分类下的商品名称
-- 左外连接SELECTc.id,c.`NAME`,p.`NAME`FROMcategory cLEFT JOINproduct pONp.cid = c.id;
-- 8.查询所有的商品信息。商品分类的编号、分类名称。分类下的商品名称
SELECTc.id,c.`NAME`,p.`NAME`FROMproduct pLEFT JOINcategory cONp.cid = c.id;
-- 9.查询所有的用户和该用户能查看的所有的商品。显示用户的编号、姓名、年龄。商品名称
SELECTu.id,u.`NAME`,u.age,p.`NAME`
FROM`USER` u,product p,us_pro up
WHEREup.uid = u.idANDup.pid = p.id;
-- 10.查询张三和李四这两个用户可以看到的商品。显示用户的编号、姓名、年龄。商品名称
SELECTu.id,u.`NAME`,u.age,p.`NAME`
FROM(SELECT * FROM `USER` WHERE `NAME` IN ('张三','李四')) u,product p,us_pro up
WHEREup.uid = u.idANDup.pid = p.id;
mysql的查询语句相关推荐
- mysql 查询语句 参数,mysql参数化查询语句有关问题
mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...
- MySQL高级查询语句——超详细,一篇就够了
MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...
- mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...
mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...
- Mysql高级查询语句练习
Mysql高级查询语句练习 DROP TABLE IF EXISTS `tblcourse`; CREATE TABLE `tblcourse` ( `CourseId` varchar(3) NOT ...
- MySQL 基本查询语句
MySQL基本查询语句 表示例 id name price author stock img_path 1 java从入门到放弃 80.00 国哥 7 static/img/default.jpg 2 ...
- 为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快
为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快 为什么MySQL的查询事务第一次执行会很慢,第二次,第三次就会快很多呢? 在国外,有个老外这么提问 Hi, I have an ...
- 【SQL】MySQL的查询语句
文章目录 SELECT语句 WHERE子句 JOIN语句 GROUP BY和HAVING ORDER BY LIMIT 其他关键字 MySQL是一种广泛使用的关系型数据库管理系统,它被广泛地应用于各种 ...
- MySQL数据查询语句
MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...
- mysql命令查询语句
1.单表查询 select * from student; 采用*效率低,不推荐,多用列名 一.单表查询的语法:SELECT 字段1,字段2... FROM 表名WHERE 条件GROUP BY fi ...
- mysql 查询语句_SQL语言mysql基础查询语句
单表查询.条件查询.查询并排序.限制结果查询.查询并排名.分组聚合查询.······ -- DQL操作,数据基本查询语言使用-------------------------------------- ...
最新文章
- 十九、二叉树的最近的公共祖先
- Windows系统编程之进程间通信
- 有一种爱情叫永不改变_设计就像爱情一样,总是在寻找一种方式
- 解决 wamp网站访问慢的问题
- 程序员都在用的IDEA插件(不断更新)
- input type=checkbox 前面有个可供打钩的小方框 HTML DOM Checkbox 对象
- Copy Constructor与赋值运算符
- java 交集怎么写_Java里面如何求两个集合的交集
- python基础之函数介绍进阶操作、全局变量局部变量
- 小学计算机教师德育工作计划,小学教师个人德育工作计划
- 如果你的开发板上STM32采用外部晶振,那么就不能选择BYPASS Clock Source (旁路时钟源)模式,否则STM32将会工作不正常。
- 预装WIN8的电脑是GPT分区模式,无法安装WIN7
- html与css笔记(旧)
- classpath根目录
- 模仿开发H5游戏,看你有多色
- linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等
- 算法模型---树相关---决策树
- 【概率论】一种非常巧妙的随机抽样算法
- 电视剧《天道》观后感
- 【ASP.NET Core】配置应用程序地址的N多种方法
热门文章
- Java实现基于Socket的负载均衡代理服务器(含六种负载均衡算法)
- 信号处理之宽带的匹配滤波
- 三步恢复Mysql数据库误操作数据
- 电商解读:为什么聚美优品一直在盈利?
- 经销商、代理商、分销商的关系
- Unity 重新加载场景报错:MissingReferenceException
- Linux 基础指令英文全称
- SAP ABAP 学习总结(1):初始SAP ABAP
- Linux C编程一些函数汇总
- matlab解方程x 2-x-2=0,matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t)是单位阶跃函数,初始状态为0...