您的位置:首页 > 数据库 > MySQL

MySQL知识点整理

2018-03-06 16:07 190 查看
知识点
1. 关系数据库的规范化(面试重点):范式
(1) 第一范式:每一个属性不可以再分,不满足第一范式的数据库就不适关系型数据库。例如班级这个属性,其中包含了“系别”和“班级”两个属性信息,因此就不符合第一范式。
(2) 第二范式:表中的其他属性对于主关键字完全依赖,而不能只依赖于主关键字的一部分,如主关键字可能是由两部分组成的,其他的属性不能只依赖于其中的一个。
(3) 第三范式:不存在传递依赖。
2. 数据模型:由数据结构、数据操作和完整性约束三部分组成。
3. 常用的数据库模型主要有:层次模型、网状模型、关系模型。
4. MySQL存储引擎,MySQL中的数据用各种不同的拘束存储在文件或内存中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平来提供广泛地、不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。Mysql中提供了多种存储引擎。
(1) InnoDB存储引擎:支持自动增长。优势在于提供了良好的事务管理、崩溃修复能力和并发控制。缺点是其读写效率稍差,占用的数据空间相对比较大。
(2) MyISAM存储引擎:优势在于占用空间小,处理速度快;缺点是不支持事务的完整性和并发性。
(3) MEMORY存储引擎:它的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存,但安全性不高。此存储引擎对标的大小有要求,不能建太大的表。
5. 操作数据表:
(1) 创建
USE dbmin;
CREATE  TABLE tb_admin(
id int auto_increment primary key,
user varchar(30) not null,
passward varchar(30)not null,
createtime datatime);
(2) 查看表结构 DESC tb_admin;/DESC tb_admin user;
(3) 修改表结构 ALTER TABLE tb_admin ADD email varchar(50) not null; 也可以是DROP或者是 CHANGE COLUMN修改表项
(4) 复制表 CREATE TABLE tb_new LIKE tb_admin;
6. mysql基础
(1) 算术运算符
(2) 比较运算符 <>即!=  ;BETWEEN m AND n;IN(n1,n2,n3...);like用来匹配字符串
7. 增删改查
(1) INSERT dt_admin VALUES(1,’jack’);或者是添加select的结果,也可以添加表中的一部分字段。
(2) UPDATE dt_admin SET username=’pp’ where id=5
(3) DELETE  FROM dt_admin WHERE user=’pp’
(4) TRUNCATE db_min 会抹掉表中的所有数据
8. 数据查询
(1) DISTINCT 去除重复
(2) ORDER BY按*字段递增(ASC)递减(DESC)排序
(3) GROUP BY分组查询
(4) 聚合函数查询 COUNT()、SUM()。
(5) 连接查询
① 内连接:连接后的表中的某个字段与每个表中的都相同  where ..=..
② 外连接:LEFT JOIN、RIGHT JOIN不相等的部分用NULL值代替。
9. 索引是为了加快数据检索的速度而产生的,但是建立索引的过程也需要一定的时间。
10. 视图:一个优点是安全,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易理解数据。在很大的数据库中筛选出我们需要的字段。视图的作用类似于筛选
(1) 作用体现在简单性、安全性、逻辑数据独立性三个方面。
(2) create view scoreinfo as select sno,sname,yw,wy,sx from tb_admin where tb_student.id=tb_score.id;然后在数据库中可以将其检索出来 select * from scoreinfo
11. 数据完整性约束
(1) 实体完整性:关系的主属性不能为空,在MySQL中,实体完整性是通过主键约束和候选键约束来实现的。
(2) 参照完整性:定义外码和主码之间的引用规则,是对关系间引用数据的一种限制。
(3) 用户定义完整性:针对某一应用环境的完整性约束条件
前三个是定义完整性,其他还有命名完整性约束,就是在定义外键等的时候加上CONSTRAINT关键字。
12. 存储过程与存储函数
(1) 是为了保存数据的完整性、一致性以及提高应用性能而采用的一种技术
(2) 创建存储过程 create procedure,创建存储函数 create function
(3) 使用光标cursor 可以达到逐条读取结果集中的记录
(4) 调用存储过程用call,调用存储函数用select function_name(参数)
13.  触发器:由事件来触发某个操作,如INSERT语句、UPDATE语句和DELETE语句,当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
14.  事务:将一系列数据操作捆绑成为一个整体进行统一管理。
(1) 概念:在MySQL中,事务由单独单元的一条或多条SQL语句组成,在这个单元中,每条MySQL语句是相互依赖的。整个单独单元作为一个不可分割的整体,如果单元中一旦某条SQL语句执行失败或者发生错误,整个单元就会回滚,所有受到影响的数据将返回到事务开始以前的状态;如果单元中的所有SQL语句均执行成功,则事务被顺利执行。
(2) ACID:原子性(不可分割)、一致性(所有执行保持同步)、隔离性(并发执行的事务彼此无法看到对方的中间状态)、持久性(事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。)
(3) 语法:begin;/start transaction
15. 多个事务访问同一数据时,可能会存在5类问题,其中3类是数据读取问题(脏读、不可重复读和幻读),以及2类数据更新问题。(面试重点
(1) 脏读:事务A、B对同一账户进行操作,事务A读取了事务B尚未提交的数据并在此基础上进行操作,而事务B在这之后发生了回滚,这样事务A读取到的数据就是脏数据。
(2) 不可重复读:事务A、B对同一账户进行操作,事务A读取了事务B尚未提交的数据,待事务B进行操作再提交之后,事务A再次读取这个数据,发现该数据已经被事务B修改了。
(3) 幻读:事务A、B对同一账户进行操作,事务A重新执行一个查询,返回一系列符合条件的行,发现其中插入了被事务B提交的行。
(4) 第1类丢失更新:事务A撤销时,发现把已经提交的事务B的更新数据的操作覆盖了。
(5) 第2类丢失更新:事务A覆盖事务B已经提交的数据,造成事务B所做的操作丢失。
ANSI/ISO SQL 92标准定义了4个等级的事务隔离级别,如下表所示:
隔离级别
脏读
不可重复读
幻读
第一类丢失更新
第二类丢失更新
READ UNCOMMITED
允许
允许
允许
不允许
允许
READ COMMITTED
不允许
允许
允许
不允许
允许
REPEATABLE READ
不允许
不允许
允许
不允许
不允许
SERIALIZABLE
不允许
不允许
不允许
不允许
不允许
需要说明的是,事务隔离级别和数据访问的并发性是对立的,事务隔离级别越高并发性就越差。所以要根据具体的应用来确定合适的事务隔离级别,这个地方没有万能的原则。
16. 可采用以下方式优化MySQL性能:
使用索引、将字段很多的表分解成多个表、增加中间表、使用高速缓存等。
 
 
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
1. 数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>

2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE

3. 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 视图 索引 同义词 簇
(1) DDL操作是隐性提交的!不能rollback 
 
4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚---ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
3) COMMIT [WORK]:提交。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: