MySQL 二 基础

1、 共享表空间:指的是数据库的所有的表数据、索引文件全部放在一个文件中
    独立表空间:每一个表都将会生成以一个独立的文件的方式来存储 
    两者最大的区别是:共享表空间即使表删除了空间也不会删除,所以表依然很大,而独立表空间删除表就会清除空间
2、 内存表:是指使用 Memory 引擎的表,建表语法是 create table … engine=memory。这种表的数据都保存在内存里,系统重启的时候会被清空,但是表结构还在
    临时表:可以使用各种引擎类型
3、 MySQL 有三种删除方式: 
    1)删除表数据:delete from t;
        delete 可以有条件的删除,也可以回滚数据,删除数据时进行两个动作:删除与备份,所以速度很慢
    2)删除数据,保留表结构:truncate table t;
        truncate 删除所有数据,无条件选择删除,不可回滚,保留表结构
    3)删数据和表结构:drop table t;
        drop:删除数据和表结构 删除速度最快。
4、 delete 与 truncate
    1)delete
        可以使用 where 条件删除部分数据
        删除信息会在 MySQL 的日志中记录,因此 detele 的信息可以被找回
    2)truncate
        不能使用 where 条件,只能删除整张表
        删除信息不被记录在 MySQL 的日志中,truncate 的信息无法被找回
        因为不记录日志所以执行效率比 delete 快
5、 limit 3,2 的含义:    去除前三条数据之后查询两条信息
6、 去重计算总条数 select count(distinct f) from t
7、 CHAR 和 VARCHAR 的区别:
    1)CHAR 固定长度,CHAR 的取值范围为1-255,VARCHAR 是长度可变的,可能会造成存储碎片
    2)CHAR 比较适合长度较短或固定长度的字段,如身份证号、手机号等,反之则适合使用 VARCHAR
8、 CHAR_LENGTH 和 LENGTH 的区别
    CHAR_LENGTH 是字符数,而 LENGTH 是字节数。在不同编码下值是不相同的,如 UTF-8 编码下,一个中文字的 LENGTH 为 1,而 CHAR_LENGTH 通常等于 3
9、 UNION 和 UNION ALL 都是用于合并数据集的,区别如下:
    1)去重:UNION 会对结果进行去重,UNION ALL 则不会进行去重操作
    2)排序:UNION 会对结果根据字段进行排序,而 UNION ALL 则不会进行排序
    3)性能:UNION ALL 的性能要高于 UNION
10、空值和 NULL 的区别是什么
    1)空值表示字段的值为空,不占用空间,空值判断使用 ='' 或 <>'' 来判断
    2)NULL 表示字段没有值,未知的占用空间,使用 IS NULL 或 IS NOT NULL 来判断
    使用 COUNT 统计某字段时,如果是 NULL 则会忽略不统计,而空值则会算入统计之内
11、MySQL 中支持两种模糊查询:
    1)regexp 支持正则表达式的匹配方式,提供比 like 更多的匹配方式
        select * from person where uname regexp '.SQL*.';
    2)like 对任意多字符匹配或任意单字符进行模糊匹配
        select * from person where uname like '%SQL%';
12、MySQL自增主键
    优点:1)数据存储空间很小 2)性能最好 3)减少页分裂
    缺点:1)数据量过大,可能会超出自增长取值范围    2)无法满足分布式存储,分库分表的情况下无法合并表    3)主键有自增规律,容易被破解
13、MySQL 官方建议使用自增主键作为表的主键,因为自增主键是连续的,在插入过程中尽量减少页分裂,即使要进行页分裂,也只会分裂很少一部分;
    并且自增主键也能减少数据的移动,每次插入都是插入到最后,所以自增主键作为表的主键,对于表的操作来说性能是最高的。
14、导致MySQL 自增主键不能连续的两种情况:1)唯一主键冲突会导致自增主键不连续 2)事务回滚也会导致自增主键不连续    
15、InnoDB 中自增主键能不能被持久化,说的是 MySQL 重启之后 InnoDB 能不能恢复重启之前的自增列,InnoDB 在 8.0 之前是没有持久化能力的,但 MySQL 8.0 之后就把自增主键保存到 redo log(一种日志类型)中,当 MySQL 重启之后就会从 redo log 日志中恢复。
16、查询语句的优化方案:
    1)不使用 select * 查询
    2)or 查询改写成 in 查询
    3)避免 %xx 查询
    4)少用 join 查询
    5)使用同类型比较,比如 '123' 和 '123'、123 和 123
    6)尽量避免在 where 子句中使用 != 或者 \<> 操作符,查询引用会放弃索引而进行全表扫描
    7)不做列运算,把计算都放入各个业务系统实现
    8)尽可能简单,大语句拆小语句,减少锁时间
    9)不用函数和触发器
    10)列表数据使用分页查询,每页数据量不要太大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值