Java面试必备MySQL知识(一)

查看MySQL提供的所有存储引擎命令:show engines

运行截图
MySQL的默认存储引擎是InnoDB,它是事务性存储引擎

MyISAM与InnoDB的区别

  • 是否支持行级锁:MyISAM只具有表级锁,而InnoDB既具有行级锁也有表级锁
  • 是否支持事务和崩溃后的安全恢复:MyISAM强调性能,不支持事务

索引

MySQL使用的索引:BTree索引和哈希索引。需求为单条记录查询时,使用哈希索引

事务

  • 事务是逻辑上的一组操作,要么全都执行,要么都不执行
  • 事务的四大特性:原子性、一致性、隔离性、持久性
  • 并发事务带来的问题:脏读、丢失数据、不可重复读、幻读
  • 事务隔离级别:
脏读不可重复读幻读
读未提交会发生会发生会发生
读已提交不会发生会发生会发生
可重复读不会发生不会发生会发生
序列化不会发生不会发生不会发生

MySQL的默认隔离级别是可重复读

大表优化

当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施:

  • 限定数据范围:查询要带限定条件
  • 读写分离
  • 重复分区:将一个表竖着分成多张表
  • 水平分区

表的操作

1.DELET与DROP

  • DROP主要用于删除结构。如库、表;DELET用于删除数据
  • 二者都会释放空间

列属性(列约束)

Primary Key(主键):能唯一标识记录的字段,作为主键

特性:
  • 一个表只能有一个主键
  • 主键具有唯一性
声明方式:
  • 在声明字段时用primary key标识
  • 在字段列表之后声明:
create table tablename(
	id,
	name,
	...
	primary key(id)
	)

UNIQUE唯一约束(唯一索引):使某个字段的值不可以重复

特性
  • UNIQUE约束唯一标识数据库的每条记录
  • 每个表可以有多个UNIQUE约束,但只能有一个主键
使用方式

创建表时指定UNIQUE

create table tablename(
	id,
	name,
	...
	unique(id)
	)

NULL约束

comment:注释字段(comment “注释内容")

建表规范

Normal Format(NF)
  • 每个表保存一个实体信息
  • 每个具有一个ID字段作为主键
  • ID主键+原子表
1NF:字段不可再分,就满足第一范式
2NF:
  • 满足1NF的前提下,不能出现部份依赖
  • 消除复合主键可避免部分依赖
3NF:
  • 满足2NF的前提下,不能出现传递依赖
  • 传递依赖概念:某字段依赖主键,而其他字段依赖该字段

Select

select
  • 可用*表示所有字段
  • 可以使用表达式(计算公式、函数调用、字段也是表达式)
  • 可以用别名表示列名
where
  • 单筛选条件:使用运算符=、<、>、<>等
  • 多筛选条件:使用and、or等逻辑连词
having
  • 作用与where相同,但机制不同
having与where的区别
  • where是一个约束声明,使用where来约束来自数据库的数据
  • where是在结果返回之前起作用的
  • where中不能使用聚合函数
  • having是一个过滤声明,在查询到结果后对结果进行过滤
group by子句、分组子句

使用方式:

group by 字段/别名

特性:

  • 聚合函数要配合group by使用
  • 可以去除重复列
DISTINCT:去除重复列,返回不重复的列

使用方式:

select distinct 列名
order by子句:排序子句

使用方式:

order by 排序字段/别名  DES/ANS [排序字段/别名]
limit子句:限制结果数量子句

仅对处理好的结果进行数量限制
使用方式:

limit A,B
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

倪华川

赏杯可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值