2019-11-12

1.外键foreign key
顺序要求:
删数据,先删子表
添数据,先加父表
创建表,先创父表
删除表。先删子表

2.foreign key语法:
例如:foreign key(no)references t_class(cno)
其中no表示当前表字段, references代表引用的意思,cno表示父表字段

3.外键值可以为null
foreign key 需要注意的是:被引用字段至少具有unique约束

4.存储引擎(engine)
MYISAM:(1).不支持事务
(2).三个文件组成一张表 frm(存储格式)MYD(存储数据)MYI(索引文件)
优点:可被压缩,节省存储空间,可转为只读表,提高检索效率

            InnoDB(默认)
                   优点:支持事务,行级锁等,安全。服务器崩了会自动恢复
                    缺点:不能被压缩

              MEMORY    
                      优点:查询速度最快
                      缺点:不支持事务,数据易丢失

5.和事务transaction相关的语句只有:DML语句insert delete update(多条联合)
transaction存在是为了保证数据完整,安全

6.start transaction 开启事务,(开始)
执行insert(执行记录一下历史操作,不会修改硬盘数据)
执行update(如上)
执行delete(如上)
提交(commit 提交成功 文件改变,且清空历史记录)回滚(rollback 清空历史记录)事务(结束)

7.transaction事务的4大特性
1.原子性:transaction为最小工作单元,不可再分
2.一致性:多条DML语句同时成功或失败
3.隔离性:transaction A 与 transaction B之间有隔离
4.持久性:数据库必须要保证有一条数据永久地存放在磁盘中,transaction事务才算结束

8.事务的隔离性级别
一:读未提交(read uncommitted)
对方事务还未提交,当前事务可读取到对方事务为提交的数据(Dirty Read脏读现象)
二:读已提交(read committed)
对方提交后,我方事务才可读取到数据(解决了Dirty Read,但不可重复读)
三:可重复读:(repeatable read)
解决了:不可重复读问题。存在问题:读取到的数据是幻象
四:序列化/串行化读
解决所有问题但是效率低,事务需要排队

9.mysql中的事务时支持自动提交的(start transaction关闭自动提交)

10.设置事务的全局隔离级别
set global transaction isolation level (后面跟级别)read uncommitted (读未提交)
查看级别
select @@global.tx_isolation;(5.0)
.transaction_isolation(8.0)

11.啥时候添加索引?
(1).数据量庞大
(2).该字段很少的DML操作(因为字段进行修改操作,索引也需要维护)
(3).该字段经常出现在where子句中

12.主键(primary key)和具有unique约束的字段会自动添加索引(根据primary key查询效率较高)

13.select ename, sal from emp where ename='smith'
当ename字段无索引的时候,会进行全表扫描。加索引的时候,语句会根据索引扫描,快速定位。

14.查看sql的执行计划
explain (后面跟查询语句 select ename,sal from emp where sal=5000)

15.创建索引的语法
create index sal_index on emp(sal) 在emp表的sal字段加sal_index索引

16.删除索引的语法
drop index 索引名 on 表名; (mysql中)

17.索引的实现原理
通过B Tree 缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的物理地址,最终通过索引检索到
数据后,获取到关联的物理地址,通过物理地址定位表中的数据,效率最高。

18.索引什么时候失效?
当模糊查询的时候,第一个通配符使用的是%

19.索引分类
单一索引:单字段加索引
复合索引:多字段加索引
主键:primary key自动加索引
唯一:unique约束会自动加索引

20.view视图就是同一张表的数据,通过不同角度去看待

21.创建视图(只有dql才可以用视图对象创建)
create view myView as select empno,ename from emp;
删除
drop view myView;

22.对视图进行增删改查,会影响到原表数据

23.视图(view)可隐藏表的实现细节,适合保密级别高的系统。数据库只对外提供相关的视图

24.设计三范式(不会出现数据冗余)空间浪费
(1)第一范式:任何一张表都应该有主键,且每个字段原子性不可再分

  (2)第二范式:建立在第一范式的基础上,且所有的非主键字段完全依赖主键,不能产生部分依赖。(多对多,三张表,关系表两个外键)

   (3)第三范式:建立在第二范式的基础上,所有非主键字段直接依赖主键,不可产生传递依赖。(一对多,两张表,多的表加外键)

25.实际开发中,为了满足客户需求,会拿冗余换执行速度

26.一对一有两种设计方案:外键唯一(foreign key),主键共享(primary key)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,859评论 0 9
  • Java String 面试题以及答案 1.判定定义为String类型的st1和st2是否相等,为什么 packa...
    攻城狮阿犯阅读 660评论 0 1
  • 服务器是一种比普通计算机运行速度更快的计算机。、负载更高、价格更昂贵。该服务器在网络中为其他客户端(例如PC、智能...
    _卓璘阅读 689评论 0 0
  • 黎明十分,我从梦中醒来,听着窗外。 此刻,大地沉浸在一片静谧的黑暗中,希望在蔓延,雨在淅淅沥沥地下个不停,鸟而开始...
    昨日的纪念阅读 171评论 0 1
  • 继《富爸爸穷爸爸》之后,作者罗伯特又写了这本《富爸爸财富自由之路》,紧跟时代的脚步,用更加强的实践指导为广大普通读...
    用心生活的丸子阅读 1,697评论 0 1

友情链接更多精彩内容