首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库面试常问的一些基本概念

事务:就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。...持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。 4、什么是视图? 视图是一种虚拟的表,具有和物理表相同的功能。...数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。...一般来说,应该在这些列上创建索引: (1)在经常需要搜索的列上,可以加快搜索的速度; (2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; (3)在经常用在连接的列上,这些列主要是一些外键...(1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。

50920

数据库索引

使用R-Tree作为数据结构的索引通常用来为空间问题提供帮助。例如,一个查询要求“查询出所有距离我两公里之内的星巴克”,如果数据库表使用R- Tree索引,这类查询的效率将会提高。    ...当这个SQL (SELECT * FROM Employee WHERE Employee_Name = ‘Jesus’ )运行时,数据库会检查在查询的列上是否有索引。...假设Employee_Name列上确实创建了索引,数据库会接着检查使用这个索引做查询是否合理 - 因为有些场景下,使用索引比起全表扫描会更加低效。 你能强制数据库使用索引吗?   ...同样的,就像一本书的索引包含页码一样,数据库的索引包含了指针,指向你在SQL中想要查询的值所在的行。 使用数据库索引会有什么代价?   那么,使用数据库索引有什么缺点呢?   ...记住:建立在某列(或多列)索引需要保存该列最新的数据。   基本原则是只如果表中某列在查询过程中使用的非常频繁,那就在该列上创建索引。 磁盘构造 ? 磁盘是一个扁平的圆盘。

1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL进阶三板斧(二)揭开“存储过程”的神秘面纱

    存储过程(具体参数解析) ---- 一、什么是存储过程 存储过程是存储在数据库目录中的一段声明性SQL语句。...如果要将此查询保存在数据库服务器上以供以后执行,执行此查询的一种方法是使用存储过程。...在此示例中,我们刚刚创建了一个名称为的存储过程GetStudents()。 保存存储过程后,可以使用以下CALL语句调用存储过程: CALL GetStudents(); #查询结果: ?...如图,该语句返回与查询相同的结果。 首次调用存储过程时,MySQL在数据库目录中查找名称,编译存储过程的代码,将其放置在称为缓存的存储区中,然后执行该存储过程。...使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。 说明在升级过程中,SQL Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。

    99320

    PostgreSQL中的查询简介

    有几种方法可以从数据库中检索信息,但最常用的方法之一是通过命令行提交查询来执行。 在关系数据库管理系统中,查询是用于从表中检索数据的任何命令。...我们还将使用PostgreSQL数据库中的一些示例数据来练习SQL查询。...创建示例数据库 在我们开始在SQL中进行查询之前,我们将首先创建一个数据库和几个表,然后使用一些示例数据填充这些表。这将使您在以后开始查询时获得一些实践经验。...您可以通过将其记录在PostgreSQL数据库中来决定练习数据库技能,而不是将此信息保存在物理分类帐中。...想象一下,你想给你的每个朋友买一双保龄球鞋作为生日礼物。由于有关您朋友的生日和鞋码的信息保存在单独的表中,您可以分别查询两个表,然后比较每个表的结果。

    12.4K52

    值得收藏:一份非常完整的 MySQL 规范

    ,会造成列上的索 引失效,导致查询效率降低) 二、数据库基本设计规范 1、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...4、数据库设计时,应该要对以后扩展进行考虑 5、程序连接不同的数据库使用不同的账号,进制跨库查询 · 为数据库迁移和分库分表留出余地 · 降低业务耦合度 · 避免权限过大而产生的安全风险 6、禁止使用SELECT...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。 · 不推荐: ? · 推荐: ?

    97330

    值得收藏:一份非常完整的 MySQL 规范

    (时间戳)为后缀 · 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索 引失效,导致查询效率降低) 二、数据库基本设计规范 1...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...4、数据库设计时,应该要对以后扩展进行考虑 5、程序连接不同的数据库使用不同的账号,进制跨库查询 · 为数据库迁移和分库分表留出余地 · 降低业务耦合度 · 避免权限过大而产生的安全风险 6、禁止使用SELECT...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。

    76230

    值得收藏:一份非常完整的 MySQL 规范

    (时间戳)为后缀 · 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索 引失效,导致查询效率降低) 二、数据库基本设计规范 1...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...4、数据库设计时,应该要对以后扩展进行考虑 5、程序连接不同的数据库使用不同的账号,进制跨库查询 · 为数据库迁移和分库分表留出余地 · 降低业务耦合度 · 避免权限过大而产生的安全风险 6、禁止使用SELECT...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。 · 不推荐: ? · 推荐: ?

    90130

    MySQL慢查询(下):问题解决,干货总结

    它主要包括以下几种情况: 3.1 重构查询方式 优化慢查询时,目标应该是找到一个更优的方案来达到我们获取结果数据的目的。...其中可以存在多样的权衡方案: 1)从数据库中查询计算直接获取到结果数据; 2)拆分多条子查询来逐步得到结果数据; 3)从数据库获取到基础数据,然后应用代码逻辑加工后获得结果数据。...3.2 让SQL尽量符合查询优化器的执行要求 MySQL 查询优化器并不是对所有查询都适用的,我们可以通过改写查询 SQL 来让数据库更高效的完成工作。...= 或 操作符,否则将导致引擎放弃使用索引而进行全表扫描; 对字段进行表达式、函数操作,这将导致引擎放弃使用索引而进行全表扫描; 3)尽量应用索引 使用索引字段作为条件时,如果是复合索引...数据结构优化、索引设计优化及应用查询优化犹如三叉戟一般,齐头并进,在高性能查询应用中缺一不可。 写在最后 全文总结一下,其实就是我们要学会用数据库的要求方式来执行SQL。

    51430

    mysql数据库面试题目及答案_java面试数据库常见问题

    优缺点 1)所有字段值都是不可分解的原子值。 2)在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 3)数据表中的每一列数据都和主键直接相关,而不能间接相关。...也就是说 在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。...,尽量返回少量数据 5.尽量用PreparedStatement 来查询,不要用 Statement 不要在列上使用函数和进行运算 不要在列上使用函数,这将导致索引失效而进行全表扫描。...= 或 not in或 等否定操作符 尽量避免使用 or 来连接条件 多个单列索引并不是最佳选择,复合索引的最左前缀原则 查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。...视图是一种虚拟的表,通常是有一个表或者多个表的行或列的子集,具有和物理表相同的功能 游标是对查询出来的结果集作为一个单元来有效的处理。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

    92030

    面试过程中Mysql数据库常被问到的问题详解

    (3)参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。...事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。 简单理解:在事务里的操作,要么全部成功,要么全部失败。 什么是锁?...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...存储过程是一个预编译的 SQL 语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次 SQL,使用存储过程比单纯 SQL 语句执行要快。...基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表 试述视图的优点?

    68730

    2019-PHP面试题大全【数据库部分】

    (3)参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。...事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。 简单理解:在事务里的操作,要么全部成功,要么全部失败。 5.什么是锁?...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表 试述视图的优点?

    51420

    MySQL 高性能优化规范建议

    ,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范 1....2、TEXT 或 BLOB 类型只能使用前缀索引 因为MySQL 对索引字段长度是有限制的,所以 TEXT 类型只能使用前缀索引,并且 TEXT 列上是不能有默认值的 3....禁止给表中的每一列都建立单独的索引 5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3....充分利用表上已经存在的索引 避免使用双%号的查询条件。如:a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的) 一个 SQL 只能利用到复合索引中的一列进行范围查询。...数据库设计时,应该要对以后扩展进行考虑 5. 程序连接不同的数据库使用不同的账号,禁止跨库查询 为数据库迁移和分库分表留出余地 降低业务耦合度 避免权限过大而产生的安全风险 6.

    49410

    今儿聊一聊Mysql的性能优化

    (一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范 1....2、TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的 3....禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3....充分利用表上已经存在的索引 避免使用双%号的查询条件。如:a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的) 一个SQL只能利用到复合索引中的一列进行范围查询。...数据库设计时,应该要对以后扩展进行考虑 5. 程序连接不同的数据库使用不同的账号,进制跨库查询 为数据库迁移和分库分表留出余地 降低业务耦合度 避免权限过大而产生的安全风险 6.

    63570

    11条MySQL规范,你知道的有几个?

    ,会造成列上的索 引失效,导致查询效率降低) 二、数据库基本设计规范 1、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用...· TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...4、数据库设计时,应该要对以后扩展进行考虑 5、程序连接不同的数据库使用不同的账号,进制跨库查询 · 为数据库迁移和分库分表留出余地 · 降低业务耦合度 · 避免权限过大而产生的安全风险 6、禁止使用SELECT...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。

    68740

    值得收藏:一份非常完整的MySQL规范

    ,会造成列上的索引失效,导致查询效率降低) 二、数据库基本设计规范 1、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用...TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...4、数据库设计时,应该要对以后扩展进行考虑 5、程序连接不同的数据库使用不同的账号,进制跨库查询 为数据库迁移和分库分表留出余地 降低业务耦合度 避免权限过大而产生的安全风险 6、禁止使用SELECT...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。

    36920

    面试官:你对MySQL高性能优化有什么规范建议?

    ,会造成列上的索引失效,导致查询效率降低) ---- 数据库基本设计规范 1....2、TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的 3....禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3....充分利用表上已经存在的索引 避免使用双%号的查询条件。如:a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的) 一个SQL只能利用到复合索引中的一列进行范围查询。...数据库设计时,应该要对以后扩展进行考虑 5. 程序连接不同的数据库使用不同的账号,进制跨库查询 为数据库迁移和分库分表留出余地 降低业务耦合度 避免权限过大而产生的安全风险 6.

    50210

    Mysql高性能优化规范建议

    ,会造成列上的索引失效,导致查询效率降低) ---- 数据库基本设计规范 1....2、TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的 3....禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3....充分利用表上已经存在的索引 避免使用双%号的查询条件。如:a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的) 一个SQL只能利用到复合索引中的一列进行范围查询。...数据库设计时,应该要对以后扩展进行考虑 5. 程序连接不同的数据库使用不同的账号,进制跨库查询 为数据库迁移和分库分表留出余地 降低业务耦合度 避免权限过大而产生的安全风险 6.

    1.1K30

    MySQL高性能优化规范建议,值得收藏

    bak_为前缀并以日期 (时间戳) 为后缀•所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) --...2、TEXT 或 BLOB 类型只能使用前缀索引 因为MySQL[1] 对索引字段长度是有限制的,所以 TEXT 类型只能使用前缀索引,并且 TEXT 列上是不能有默认值的 3....禁止给表中的每一列都建立单独的索引 5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3....充分利用表上已经存在的索引 避免使用双%号的查询条件。如:a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的) 一个 SQL 只能利用到复合索引中的一列进行范围查询。...数据库设计时,应该要对以后扩展进行考虑 5. 程序连接不同的数据库使用不同的账号,进制跨库查询 •为数据库迁移和分库分表留出余地•降低业务耦合度•避免权限过大而产生的安全风险 6.

    1.2K41

    史上最全的MySQL高性能优化规范建议

    ,会造成列上的索引失效,导致查询效率降低) 2、数据库基本设计规范 1)所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用...TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2)禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。...列放到联合索引的右侧 使用left join 或 not exists 来优化not in 操作 因为not in 也通常会使用索引失效 4)数据库设计时,应该要对以后扩展进行考虑 5)程序连接不同的数据库使用不同的账号...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式。 13)WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。

    1.6K20

    一份完整的 MySQL 开发规范,进大厂必看!

    bak_为前缀并以日期(时间戳)为后缀 5、所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) 二、数据库基本设计规范...TEXT或BLOB类型只能使用前缀索引 因为MySQL对索引字段长度是有限制的,所以TEXT类型只能使用前缀索引,并且TEXT列上是不能有默认值的。...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。...4、数据库设计时,应该要对以后扩展进行考虑 5、程序连接不同的数据库使用不同的账号,进制跨库查询 1、为数据库迁移和分库分表留出余地 2、降低业务耦合度 3、避免权限过大而产生的安全风险 6、禁止使用SELECT...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。

    1.4K20
    领券