目录

一,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的查询语句相关推荐

  1. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

  2. MySQL高级查询语句——超详细,一篇就够了

    MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...

  3. mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...

    mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...

  4. Mysql高级查询语句练习

    Mysql高级查询语句练习 DROP TABLE IF EXISTS `tblcourse`; CREATE TABLE `tblcourse` ( `CourseId` varchar(3) NOT ...

  5. MySQL 基本查询语句

    MySQL基本查询语句 表示例 id name price author stock img_path 1 java从入门到放弃 80.00 国哥 7 static/img/default.jpg 2 ...

  6. 为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快

    为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快 为什么MySQL的查询事务第一次执行会很慢,第二次,第三次就会快很多呢? 在国外,有个老外这么提问 Hi, I have an ...

  7. 【SQL】MySQL的查询语句

    文章目录 SELECT语句 WHERE子句 JOIN语句 GROUP BY和HAVING ORDER BY LIMIT 其他关键字 MySQL是一种广泛使用的关系型数据库管理系统,它被广泛地应用于各种 ...

  8. MySQL数据查询语句

    MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...

  9. mysql命令查询语句

    1.单表查询 select * from student; 采用*效率低,不推荐,多用列名 一.单表查询的语法:SELECT 字段1,字段2... FROM 表名WHERE 条件GROUP BY fi ...

  10. mysql 查询语句_SQL语言mysql基础查询语句

    单表查询.条件查询.查询并排序.限制结果查询.查询并排名.分组聚合查询.······ -- DQL操作,数据基本查询语言使用-------------------------------------- ...

最新文章

  1. 十九、二叉树的最近的公共祖先
  2. Windows系统编程之进程间通信
  3. 有一种爱情叫永不改变_设计就像爱情一样,总是在寻找一种方式
  4. 解决 wamp网站访问慢的问题
  5. 程序员都在用的IDEA插件(不断更新)
  6. input type=checkbox 前面有个可供打钩的小方框 HTML DOM Checkbox 对象
  7. Copy Constructor与赋值运算符
  8. java 交集怎么写_Java里面如何求两个集合的交集
  9. python基础之函数介绍进阶操作、全局变量局部变量
  10. 小学计算机教师德育工作计划,小学教师个人德育工作计划
  11. 如果你的开发板上STM32采用外部晶振,那么就不能选择BYPASS Clock Source (旁路时钟源)模式,否则STM32将会工作不正常。
  12. 预装WIN8的电脑是GPT分区模式,无法安装WIN7
  13. html与css笔记(旧)
  14. classpath根目录
  15. 模仿开发H5游戏,看你有多色
  16. linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等
  17. 算法模型---树相关---决策树
  18. 【概率论】一种非常巧妙的随机抽样算法
  19. 电视剧《天道》观后感
  20. 【ASP.NET Core】配置应用程序地址的N多种方法

热门文章

  1. Java实现基于Socket的负载均衡代理服务器(含六种负载均衡算法)
  2. 信号处理之宽带的匹配滤波
  3. 三步恢复Mysql数据库误操作数据
  4. 电商解读:为什么聚美优品一直在盈利?
  5. 经销商、代理商、分销商的关系
  6. Unity 重新加载场景报错:MissingReferenceException
  7. Linux 基础指令英文全称
  8. SAP ABAP 学习总结(1):初始SAP ABAP
  9. Linux C编程一些函数汇总
  10. matlab解方程x 2-x-2=0,matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t)是单位阶跃函数,初始状态为0...