数据库面试——数据库管理等

mysql权限

https://blog.csdn.net/yihuliunian/article/details/108202928

  1. 关于MySQL权限的几点常识:
    (1)MySQL的权限系统主要用来验证用户的操作权限。
    (2)在MySQL内部,权限信息存放在MySQL数据库的granttable里。当mysql启动后,granttable里的信息会写入内存。
    (3)MySQL使用user name加host name来作为标识符。通过这种标识符,可以用来区分不同host上的相同的user name。
    (4)MySQL 权限控制有2种策略:
    ① 根据密码是否正确来控制客户端的连接。
    ② 假设可以正常connect,server还可以检查每个satement是否有权限去执行。如果只有某张表的select权限,就不能进行drop 操作。
    (5)如果用户的权限改变,当前已连接的会话用户不会受影响,下次登录才会生效。
  2. 关于MySQL的几个有关权限的表:
    (1)user(用户账号、全局权限):记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
    (2)db(库级别权限):记录各个帐号在各个数据库上的操作权限。
    (3)host(已废弃):配合db权限表对给定主机上数据库级操作权限作更细致的控制;MySQL5.6.7开始废弃了这个表。
    (4)tables_priv(表级别权限):记录数据表级的操作权限。
    (5)columns_priv(列级别权限):记录数据列级的操作权限。
    (6)procs_priv存储过程和存储函数相关的权限。
    (7)proxies_priv代理用户权限。

完整性约束

https://baike.baidu.com/item/数据完整性约束/10256513?fr=aladdin

数据完整性约束指的是为了防止不符合规范的数据进入数据库,在进行插入、修改、删除数据等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容

完整性

数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)

分为以下四类:

  1. 实体完整性:规定表的每一行在表中是惟一的实体。指关系的主码不能重复也不能取空值,因为空值是不确定。
  2. 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。
  3. 参照完整性:是指两个表的主码和外码的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
  4. 用户定义的完整性:即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

约束

  1. not null(非空):列上的取值非空。
  2. unique(惟一):列上的取值必须惟一。
    (1)一个表中可定义多个unique约束。
    (2)对于unique所约束的惟一键,最多允许有一个null值
  3. primary key(主键):定义主键,起惟一标识作用。
    (1)一个表中只能定义一个primary key约束。
    (2)其值不能为null,也不能重复,以此来保证实体完整性
  4. foreign key(外键):指定某一个列或一组列作为外部键。
    (1)包含外部键的表称为子表,包含外部键所引用的主键的表称为父表
    (2)外部键上的取值是父表中某一主键值,或者空值,以此保证两个表之间的连接,确保了实体的参照完整性
  5. check(校验):用来检查字段值所允许的范围。

索引

MySQL索引种类

https://zhuanlan.zhihu.com/p/115060806

  1. 普通索引(index):最基本的索引,没有任何限制,用于加速查询。
  2. 唯一索引(unique index):索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
  3. 主键索引(primary key):是一种特殊的唯一索引,一般是在建表的时候同时创建主键索引。
  4. 组合索引(index):指多个字段上创建的索引。
    (1)只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。但是与where语句中字段出现的顺序无关;另外,其他字段不是索引字段也会使用到索引
    (2)遵循最左前缀集合
  5. 全文索引(fulltext index):主要用来查找文本中的关键字,而不是直接与索引中的值相比较。
    (1)和其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。
    (2)配合match against操作使用,而不是一般的where语句加like。
    (3)目前只有char、varchar,text列上可以创建全文索引。

索引的实现方式(按结构划分的类型)

https://www.jianshu.com/p/b55126bf656c
https://blog.csdn.net/summer_sy/article/details/105099145
https://blog.csdn.net/t18112925650/article/details/109229337

在MySQL中,索引是在存储引擎层而不是服务器层实现的。

  1. B-Tree索引(B-Tree index)
    (1)目前大部分数据库系统及文件系统都采用B-Tree索引(技术上说B+Tree)。
    (2)各种数据库在存放B-Tree 索引的时候会对存储结构稍作改造。如 Innodb 存储引擎的 B-Tree 索引实际使用的存储结构实际上是B+Tree,也就是在 B-Tree 数据结构的基础上做了很小的改造,在每一个Leaf Node上面除了存放索引键的相关信息之外,还存储了指向与该Leaf Node相邻的后一个LeafNode 的指针信息(增加了顺序访问指针),这主要是为了加快检索多个相邻Leaf Node的效率考虑。
    (3)B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子到根的距离相同
    (4)B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索。
  2. 位图索引(bitmap index)
    (1)是一类特殊的数据库索引技术,其索引使用bit数组(或称bitmap、bit set、bit string、bit vector)进行存储与计算操作。
    (2)B树索引是一对一的,一个索引条目指向一行,而位图索引中索引条目非常少,每个条目指向多行
    (3)从Oracle7.3 版本开始引入的。目前Oracle 企业版和个人版都支持位图索引,但标准版不支持。
    (4)在OLTP系统中比较少见,但是在OLAP系统中比较常见。
    (5)以下特定情况下,位图索引比B 树索引更有优势:
    ① 表具有数百万行且键列的基数较低时(即列的不同值极少);
    ② 经常使用包含OR运算符的多个WHERE条件组合进行查询时;
    ③ 键列上的活动为只读或少量更新时(OLAP系统的特点)。
    在这里插入图片描述
  3. 哈希索引(hash index)
    (1)基于哈希表实现,只有精确匹配索引所有列的查询才有效。
    (2)优点:因为索引自身只需存储对应的哈希值,所以索引的结构十分紧凑,查找的速度非常快
    (3)缺点:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值