SQL语句

在这里插入图片描述

update

改哪张表?需要改哪几列的值?分别改为什么值?在哪些生效?

update 表明  set  列1 = 新值1, 列2 = 新值2  where  expr  

delete

删除哪张表的数据?哪些行?

删除指定行?
delete from 表明  where expr

删除所有行(慎用)
delete from 表明

select

查哪张表的数据? 选择哪些列?哪些行?

select 列1, 列2..,列n from 表明 where expr
  • select 比较运算符
    在这里插入图片描述

  • select 逻辑运算符
    在这里插入图片描述

  • 模糊查询like
    在这里插入图片描述

  • 统计函数

在这里插入图片描述

    select max(列名) from  表名  where   expr
    select min(列名) from  表名  where   expr
    select sum(列名) from  表名  where   expr
    select avg(列名) from  表名  where   expr
    select count(*) from  表名  where   expr
  • 分组函数

在这里插入图片描述

查询每种商品类型的平均价格
select  id, avg(price)  from  goods  group  by  cat_id;
  • 筛选
    在这里插入图片描述

     where   筛选条件产生结果集
     having  是对结果集进一步的筛选(放在where后面)
     
     查询超市贵于商店200元的商品
     select good_name, (market_price-shop_price)  as a  from goods where 1  having a > 200;
    

在这里插入图片描述

  1. 查询所有人平均分查出来

    select name, avg(core) as a from result group by name;
    在这里插入图片描述

  2. 把挂科两名以上的筛选出来

    select name,subject,score, score < 60 from result group;

在这里插入图片描述

  1. 求出挂科数与平均分

    select name,sum(score<60) as a,  avg(score) as b  from  result  group  by  name;
    

    在这里插入图片描述

  2. 两门以上的不及格平均成绩

    select name,sum(score<60) as a,  avg(score) as b  from  result  group  by  name;
    

在这里插入图片描述

  • 排序
    在这里插入图片描述
    按价格排序

     select  * from  from goods  order by price  desc;
    

先按商品分类排序,分类一样则按价格倒序排序

    select  * from  from goods  order by cat_id asc,  price  desc;
  • 分页limit

在这里插入图片描述

查询价格最高的三名商品(参数1偏移量;参数2取得条数数)
select * from goods  order by  price desc  limit   0, 3;在这里插入代码片

子查询书写顺序:where, group by, having, order by, limit

where子查询内层的查询的结果,作为外层的条件

查询最大商品
select * from goods where goods_id=(select max(goods_id) from goods);

每组id最大的商品
select good_id, goods_name from where goods_id in (select max(goods_id) from goods group by cat_id);

from子查询 先定义一个子查询为一个临时表,在对临时表进行查询。

每组id最大的商品
select goods_id, goods_name from (
		select * from goods where 1 order by cat_id asc, goods_id desc
	) tmp group by cat_id;

exists子查询 查询子查询存在的,存在取出,无不存在

查询栏目表,查询cat_id对应的goods的cat_id是否存在,如存在外层就要,不存在不要
select * from category  where exist(
				from * from goods where goods.cat_id = category.cat_id
				)

关联查询

inner join 内连接

select xxxx  from table1 inner join table1.xx = table2.xx

left jion 左连接

  select xxxx  from table1 left join table1.xx = table2.xx
    以左表为主,查询右边相关数据,查不到的为null

l jion 左连接

  select xxxx  from table1 left join table1.xx = table2.xx
    以左表为主,查询右边相关数据,查不到的为null

在这里插入图片描述

select m.*,  t.name  from m inner  join t on m.hid=t.tid

在这里插入图片描述
union 查询把2条或者多条SQL的查询结果,合并成1个结果集

sql1  N行
sql2  M行
sql1 union   sql2,   N +  M

union 语句满足条件:各语句取出的列数相同, 
列名未必要一致,列名会使用第一条sql的列名为准

注意:使用union时,完全相等的行会合并,合并是比较耗时的
一般不让union进行合并, 使用union all 可以避免合并

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风华浪浪

讨个老婆本呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值