sql基础学习

排序

关键字order by desc降序 asc升序(默认)

  • 示例:select * from user order by money desc

注意order by只能通过阿拉伯数字英文字母排序

聚合函数

  1. 关键字count()
  • count(*)表示表的行数不忽略有值为null和0的行数
  • count(列名),表示这个列有多少行忽略这个列行数值为null的行


image-20200923205751802
语句
select count(*) 行数 from student select count(name) 行数 from student
结果

image-20200923210048519 image-20200923210456334

  1. count与sum区别

    count计算的是列的行数,如果指定某一列,则计算这列有几行,这列的行值为null不计算

    sum计算的是列中行内的数值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7SWo8Qr3-1600930825315)(https://i.loli.net/2020/09/23/uwBLRIlVPHTKa4f.png)]

分组

关键字group by having(类似where)这两个配合使用

  • 将一个表根据group by条件分成多个表
  • 如果group by后有两个列名,如select count(*) from user group by dep,job则根据job分表是原表依据dep分好的表的基础上再分一次表

分页

关键字:limit

当查询记录时可能会有大量记录,这时可以通过limit来限制一次的查询数量,这样可以减少查询的数据库压力

语法SELECT 字段1,字段2… FROM 表名 LIMIT M,N
(M:表示从哪一行的索引(从0开始)开始显示,N表示要显示几行)
第1页: N*(1-1) 第2页: N*(2-1) 第page页: N(page-1)*

连接

关键字:inner join、left join、right join(加不加outer一样)
语句格式:select * from A left join B on condition

内连接inner join,返回两张表都满足的部分
左连接left join,以左表为主,让右表一行行匹配左表,不满足则右表结果为null
右连接right join,以右表为主,让左表一行行匹配右表,不满足则左表结果为null

连接和笛卡尔积的区别

  • 笛卡尔积不管条件是否满足,每一行都匹配
  • 连接会先判断条件,再与之匹配,不满足条件的置为null

语句

创建表时创建外键

create table actor_privilege(
    FK_aid int not null,
    FK_pid int not null, 	#constraint表示约束,后面的是这个约束的名字,方便以后删除约束
    constraint actor_privilege_FK_aid foreign key(FK_aid) references actor(aid),
    constraint actor_privilege_FK_pid foreign key(FK_pid) references privilege(pid)
)

通过alter添加外键(注意add)

alter table actor_privilege add foreign key(FK_aid) references actor(aid)

删除表

drop table name

题目

查询价格大于200商品的总条数和商品名

  • NOT操作符:查询姓名**第二个字母不是”A”**且薪水大于800元的员工信息,按年薪降序排列 not()取反

    select * from emp where NOT(ename like '_A%') and sal > 800 ORDER BY (sal * 12) desc

  • group by分表:求每个部门每个岗位的最高薪水(分两次表)

    select deptno,job, max(sal) from emp group by deptno,job ORDER BY deptno

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值