MySql知识点汇总--笔经面经

MySql知识点汇总--笔经面经考过

  • 基本概念
    • 范式
    • 联结
    • 数据库事务
    • 数据库的隔离级别
      • 事物的并发
      • 事务的隔离级别
    • 数据库索引的优点
    • 存储引擎
    • 常用的命令语句
    • 权限修改命令

基本概念

  1. 数据库系统(DBS)由数据库(DB),数据库管理系统(DBMS),应用系统和数据库管理员(DBA)构成;
  2. 数据模型的组成元素包括数据结构数据操作完整性约束
  3. 关系模型的完整性约束包含实体完整性参照完整性用户自定义完整性
  4. SQL语言具有数据定义数据操纵数据控制;SQL的五种基本操作包括:选择,投影,并,差和笛卡尔积(选择和投影);
    数据库定义语言(DDL):CREATE, ALTER, DROP
    数据库控制语言(DCL):GRANT, REVOKE
    数据库操纵语言(DML):INSERT, REPLACE. UPDATE, DELETE
    数据库查询语言(DQL):SELECT, WHERE, ORDER BY, GROUP BY, HAVING
    事物处理语言:BEGIN, TRANSACTION, COMMIT
  5. 数据库的模式:对数据库中全体数据的逻辑结构和特征的描述。
    它的三级结构关系为:模式内模式的逻辑表示,内模式是模式的物理实现,外模式是模式的部分抽取,其中主要存在两种映射:模式与子模式(外模式–>局部逻辑结构),模式与内模式(存储模式);
  6. 网络协议的三个主要要素是语义语法定时
  7. 元组表示,用关键字来唯一标识,列表示属性
  8. E-R图为实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念设计的主要工具;
  9. 主键:能够唯一的标识一个元组的属性或属性组称为关键的键或候选键,有多个候选键时,可以选择其中一个作为主键;
  10. 数据库的索引一般为B+树哈希表来实现;
  11. 数据库设计的六个基本步骤:需求分析–>概念设计–>逻辑结构设计–>物理结构设计–>数据库实施–>,数据库运行和维护。
  12. SQL执行的顺序:from–>where–>group by–>having–>select–>order by -->limit;
  13. 视图是虚拟的表,不包含数据,是用来查看存储在别处数据的一种设施,在添加或更改这些表中的数据时,视图将返回改变过的数据,命名唯一,可以嵌套使用,需要足够的访问权限,禁止使用order by,不能索引

范式

符合某一级别的关系模式的集合:

1.1NF无重复的列,每一列都是不可分割的基本数据流,同一列中不能有多个值;
2. 2NF属性完全依赖于主键,每个实例或行必须可以被唯一的区分;
3. 3NF:属性不依赖于其它非主属性(消除传递依赖);
4. BCNF:关系模式的每一个决定因素都包含码;

联结

1.自联结:用来替代从相同表中检索数据的使用子查询语句

SELECT c1.cut_id, c1.cut_name, c2.cut_contact
FROM Customers AS c1, Customers AS c2
WHERE c1.cut_name = c2.cut_name AND c2.cut_contact = ‘JIM’;

2.自然联结:相同的列多次出现时,使每一列只返回一次

SELECT c.*, o.order_num, o.date
FROM customers as c , orders as o, orderitems as oi
where c.cust_id = o.cust_id AND oi.order_num = o.order_num

3.外联结:联结包含了在相关表中没有关联行的行

SELECT customers.cut_id, orders.ord_num
FROM customers RIGHT OUTER JOIN orders ON orders.cut_id = customers.cut_id;

INNER JOIN ON
LEFT JOIN ON

数据库事务

指用户定义的一种数据库操作序列,包含四种性质:
原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行,要么全部不执行;
一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态,也就是需要满足完整性约束;
隔离性:多个事务并发执行时,一个事务的执行不应该影响其它事务的执行;
持久性:已被提交的事务对数据库的修改应该永久保存在数据库中。

数据库的隔离级别

事物的并发

1.脏读:事务A读取了事务B更新的数据,随后事务B进行了回滚操作,那么A读到的就是脏数据
2.不可重复读:事务A多次读取同一数据,事务B在事务A多次提取的过程中,对数据进行更改并提交,导致事务A前后读取的数据不一致。
3.幻读:解决了不可重复读存在的问题,不可重复读侧重于修改,幻读侧重于增删
解决不可重复读的问题只需要锁住满足条件的行即可,而幻读需要锁住整个表

事务的隔离级别

读未提交(Read uncommitted):一个事务读取了另一个未提交事务的数据(脏读,不可重复读,幻读);
读提交(Read committed):一个事务修改的数据提交后才能被另一个事务读取(不可重复读,幻读);
可重复读(Repeatable read):(默认级别)一个事务开始读取数据时,另一个事务不允许进行修改操作,但可以插入或删除(幻读);
序列化(Serializable):最高级别,事务需要按顺序一个一个执行。

数据库索引的优点

1.可以保证数据库表中每行数据的唯一性
2.可以大大加快数据的检索速度
3.可以加快表与表之间的连接
4.在使用分组和排序子句进行数据检查时,可以显著减少查询中分组和排序的时间
5.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能

存储引擎

MySql存储引擎主要有两种方式:一种为MyISAM,另一种为InnoDB
区别
(1)存储结构:
MyISAM:每个MyISAM在磁盘上存储为三个文件,第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD(MYData),索引文件的扩展名为.MYI(MYIndex)。
InnoDB:所有的表都保存在同一个数据文件中,表的大小只受限于操作系统文件的大小,一般为2GB
(2)存储空间
MyISAM:可被压缩,存储空间小,支持三种不同的存储格式:静态表、动态表、压缩表
InnoDB:需要更多的内存和存储,会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
(3)全文索引
MyISAM支持,InnoDB支持
(4)外键
MyISAM支持,InnoDB支持
(5)表锁差异
MyISAM:只支持表级锁,用户在操作表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据
InnoDB:支持事务和行级锁,其中行锁提高了多用户并发操作的性能,但只是在where的主键是有效的。
(6)事务支持
MyISAM:具有原子性,执行速度快,但不提供事务支持。
InnoDB:提供事务支持,外部键等高级数据库功能,具有事务、回滚和崩溃修复能力的事务安全型表。
(7)表的具体行数
MyISAM: 保存,select时直接取出
InnoDB: 未保存,select时需要遍历
(8)主键
MyISAM:底层采用B+树结构,索引文件和数据文件是分离的,索引文件中仅保存数据记录的地址
InnoDB:底层也采用B+树结构,叶节点中包含完整的数据记录(聚集索引),文件不分离,必须有主键,没有时会选择一个唯一标识数据记录的列作为主键,仍不存在时创建一个字段长度为6字节的主键。

常用的命令语句

含义 命令
选择 SELECT NAME FROM TABLE
排序 ORDER BY GRADE(默认升序,降序使用DESC),多列排序时中间用“,”隔开,按时顺序依次排序,且必须为最后一句
分组 GROUP BY在WHERE语句之后,ORDER BY语句之前
过滤 HAVING
不同值 DISTINCT
指定行 LIMIT 5(前5行) 或 LIMIT 3 ,5(从第3行开始的5行)等价于LIMIT 5 OFFSET 3
变大写 UPPER()
变小写 LOWER()
长度 LENGTH()
插入数据 INSERT INTO
组合查询 UNION 例如:SELECT…WHERE…UNION SELECT…WHERE…
更新 UPDATE TABLE SET CLOWN WHERE NAME = ‘OK’
删除数据 DELETE FROM TABLE 或DROP TRIGGER(删除触发器)
创建表 CREATE TABLE STUDENT
指定默认值 DEFAULT
创建视图 CREATE VIEW viewname AS 删除用DROP
存储 EXECUTE
游标 CURSOR 打开游标 OPEN CURSOR
创建索引 CREATE UNIQUE(唯一) INDEX prod_name ON TABLE(id(列名))
聚集函数 AVG(),COUNT(),MAX(),MIN(),SUM() eg:SELECT AVG(GRADE) as g FROM TABLE
符号 >大于 <小于 !=不等于 <>不等于 !>不大于
通配符 LIKE eg:匹配以Fish开头的词:WHERE NAME LIKE ‘Fish%’ ,_匹配单个字符,%匹配0个字符或多个
注释 — — 或 /*…*/

权限修改命令

(1)将student和course表的全部权限授予所有用户
GRANT ALL PRIVILIGES ON TABLE student, course TO PUBLIC
(2)将对student表的查询权和姓名修改权授予用户U4
GRANT SELECT, UPDATE(Sname) ON TABLE student TO U4
(3)将对SC表的插入权限授予用户U5,并允许它传播该权限
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION
(4)将用户U5对SC表的INSERT权限收回,同时收回被他传播出去的授权
REVOKE INSERT ON TABLE SC FROM U5 CASCADE
(5)创建一个角色R1,并使其对student表具有数据查询和更新权限
CREATE ROLE R1;
GRANT SELECT, UPDATE ON TABLE student TO R1;
(6)对修改student表结构的操作进行审计
AUDIT ALTER ON student;

你可能感兴趣的:(数据库知识点)