Mysql面试常考知识点

三个常见存储引擎的区别
分组函数(sum avg max min count)不能直接使用在 where 关键字后面。下面写法是错误的
mysql> select ename,sal from emp where sal > avg(sal);
查询emp表的所有记录数:
select count(*) from emp;
分组查询主要涉及到两个子句,分别是: group by having
取得每个工作岗位的工资合计,要求显示岗位名称和工资合计
select job, sum(sal) from emp group by job;
如果想对分组数据再进行过滤需要使用 having 子句
取得每个岗位的平均工资大于 2000
select job, avg(sal) from emp group by job having avg(sal) >2000;
sql执行顺序
1. 首先执行 where 语句过滤原始数据
2. 执行 group by 进行分组
3. 执行 having 对分组数据进行操作
4. 执行 select 选出数据
5. 执行 order by 排序
原则:能在 where 中过滤的数据,尽量在 where 中过滤,效率较高。 having 的过滤是专门对分组之后的数据进行过滤
的。
内连接与外连接的区别:
  • 内连接(inner join):取出两张表中匹配到的数据,匹配不到的不保留
  • select e.ename, e.sal, d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000
  • 外连接(outer join):取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL
  • 左连接以左面的表为准和右边的表比较,和左表相等的不相等都会显示出来,右表符合条件的显示 , 不符合条件的不显示
  • select e.ename, e.sal, d.dname from dept d left outer join emp e on e.deptno=d.deptno;
    右连接相反
    约束的作用:保证表中的数据有效性 完整性
    常见的约束
    a) 非空约束, not null
    b) 唯一约束, unique
    c) 主键约束, primary key
    d) 外键约束, foreign key
    e) 自定义检查约束, check (不建议使用) ( mysql 中现在还不支持 )
    事务具有四个特征 ACID
    a) 原子性( Atomicity
    整个事务中的所有操作,必须作为一个单元全部完成(或全部取消)。
    b) 一致性( Consistency
    在事务开始之前与结束之后,数据库都保持一致状态。
    c) 隔离性 (Isolation)
    一个事务不会影响其他事务的运行。
    d) 持久性 (Durability)
    在事务完成以后,该事务对数据库所作的更改将持久地保存在数据库之中,并不会被回滚。
    InnoDB 实现了四个隔离级别,用以控制事务所做的修改,并将修改通告至其它并发的事务:
    读未提交 READ UMCOMMITTED ) 
    允许一个事务可以看到其他事务未提交的修改。
    读已提交 READ COMMITTED
    允许一个事务只能看到其他事务已经提交的修改,未提交的修改是不可见的。
    可重复读 REPEATABLE READ
    确保如果在一个事务中执行两次相同的 SELECT 语句,都能得到相同的结果,不管其他事务是否提交这些修改。
    (银行总账)
    该隔离级别为 InnoDB 的缺省设置。
    串行化 SERIALIZABLE ) 【序列化】
    将一个事务与其他事务完全地隔离

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值