mysql 高级语法 - 前端笔记-一,高级查询 select 子句 子句的顺序和概念 [from 子句] ...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>mysql 高级语法 - 前端笔记
2020-3-7
分类: web后端

mysql 高级语法

文章作者:痴迷

一,高级查询     select 子句         子句的顺序和概念 [from 子句]  &nbs......

一,高级查询

    select 子句         子句的顺序和概念

[from 子句]            选中表

[where 子句]          条件

[group by子句]        分组

[having子句]            条件和where差不多

[order by子句]            排序

[limit 子句]                查询数量

    ①mysql运算符
  

distinct关键字的使用:
它能消除“重复行”
select distinct user_name, user_pass from user3;

-- like查询:
-- 找出产品名称中包含“电视”的产品
select * from product where pro_name like '%电视%';

-- between范围限定运算符:
-- 找出product表中商品价格在5000-10000之间的商品
select * from product where price between 5000 and 10000;
-- 其实,它相当于:
select * from product where price>=5000 and price<=10000;

-- in运算符:
-- 找出产地为天津或北京的所有商品
select * from product where chandi in('天津','北京');
-- 其也相当于:
select * from product where chandi ='天津' or chandi='北京';

-- is运算符:
-- 只用于两个情况: is null ,  is  not  null
select * from shuxing_test1 where f4 is null;
-- 注意:
--  不能写成: f4 = null
select * from shuxing_test1 where f4 is not null;

    ②where子句

1,查出价格大于5000的联想品牌的商品
select * from product where price > 5000 and pinpai = '联想';
2,查出天津产地的所有商品
select * from product where chandi = '天津';
3,查出类型id(protype_id)为3的并且价格大于等于3000小于等于10000的商品
select * from product where protype_id = 3 and price >=3000 and price <= 10000;

    ③分组
-- 分组的基本理解:
SELECT pinpai, count(*) as 数量, avg(price) as 平均价, max(price) as 最高价, 
  min(price), sum(price) as 价格之和 FROM `product` group by pinpai

示例1:
查询出各个品牌的产品的平均价。
select pinpai, avg(price)  from product  group by pinpai; 

示例2:
查询出各个产地的产品数量、平均价,最高价,最低价。
SELECT chandi, count(*) as 数量, avg(price) as 平均价, max(price) as 最高价, 
  min(price)  FROM `product` group by chandi

示例3:
查询出产品表中的产品总数。
select count(*) as 产品总数量 from product;

示例4:
查询出产品表中联想品牌的产品总数。
select count(*) as 总数 from product where pinpai = '联想';

多条件分组:
将product表中的所有商品以品牌和产地进行分组,并求出每一组的数量
select pinpai, chandi, count(*) as 数量 from product group by pinpai, chandi;
    ④having条件
-- 查询出品牌平均价超过5000的所有品牌的平均价,最高价,以及产品的数量。
select pinpai,avg(price) as 平均价, max(price) as 最高价, 
  count(*) as 数量 from product group by pinpai having avg(price) > 5000;

--查询出价格超过3000的所有产品的品牌平均价超过5000所有品牌的平均价,最高价,以及产品的数量
select pinpai, avg(price) as 平均价 from product where price > 3000 group by pinpai having 平均价>5000;

    ⑤排序 order by

排序方式有: 正序asc, 倒序desc,如果省略不写,就是asc

示例1: 对所有产品按价格从高到低进行排序;
select * from product order by price desc;

--对所有品牌的平均价按从高到低的顺序进行排序,并列出品牌名和平均价。
select pinpai, avg(price) as 平均价 from product group by pinpai order by 平均价 desc ;

    ⑥limit 限制查询数量
limit 演示:
示例1:取出商品表中价格最高的3个商品,并按倒序排列出来。
limit 应用:分页原理:
limit子句常常用于网页的“翻页功能”。
假设总的数据行数为9,每页显示2行(条),则:
查看第1页:  select  *  from  product  limit  0,  2;
查看第2页:  select  *  from  product  limit  2,  2;
查看第3页:  select  *  from  product  limit  4,  2;
.....
查看第n页:  select  *  from  product  limit  (n-1)*2,  2;

    
二,高级插入
    
    ①同时插入多行数据
--同时插入多行数据
insert into user3 (age,namevalues (18,'张三'),(19,'李四')

    ②插入查询语句
--insert into ... select 语句:插入查询结果
insert into user3 (user_name, user_pass) select name'456' as pass from user2;

      ③ set语法插入数据
insert 语句的set语法形式:
insert into user3 set user_name='user6', user_pass='123', edu=2, aihao=3 ;
    ④蠕虫复制     就是 无限   插入查询(是查询自身插入自身)
    ⑤插入主键冲突的解决办法   (主键冲突就是 key冲突)
        1.忽略     -- 终止插入 ,数据不改变

    insert  ignore  into  表名 ( 字段.... ) values (.....)

        2.替换    --删除原记录,插入新记录
            replace  into  into  表名 ( 字段.... ) values (.....)
        3.更新        -设置为去更新原有数据(而并不插入)
            
insert  into  表名 ( 字段.... ) values (.....)  on  duplicate  key  update  XX字段=新的值

三,高级删除

    ①.按指定顺序删除指定数量的数据            不能清空  主键(key)

delete  from  表名  where ...  [order  by 字段名, ...]  [limit  数量n]


    ②trancate(清空)                能清空  主键(key)
        trancate 表名;

四,高级更新
    

update  表名  set  字段名1=字段值1...   where ...  [order  by 字段名, ...]  [limit  数量n]














×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » mysql 高级语法

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)