1.什么是存储过程?优点是什么?
存储过程是一些预编译的SQL语句。
优点:1.更加容易理解
2.存储过程是一个预编译的代码模块,执行效率更高
2.索引是什么?有什么作用以及优缺点?
索引是对数据库表中一或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构
注意:所以需要占用物理和数据空间
作用:1.加快数据库检索速度
2.降低了插入、删除、修改等维护任务的速度
3.唯一索引可以确保每一行数据的唯一性
4.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
建立索引的原则:在使用最频繁的、需要排序的字段上建立索引
3.什么是事务?
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
事务的特性:
(1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。
(2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
(3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,
(4) 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
4.使用索引查询一定能提高查询的性能吗?为什么?
通常索引查询要比全表扫描速度要快,但是也存在特殊情况:
索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O,因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.
5.drop、delete与truncate的区别
1.效果上:delete和truncate只删除表的数据不删除表的结构
2.速度上:drop> truncate >delete
3.操作类型:delete是dml,这个操作要放到rollback segment中,事物提交后才生效,如果有相应的trigger,执行时将被触发。truncated、drop是ddl,操作立即生效,但不能进行回滚,操作不触发trigger
使用场景:
1.不需要一张表时,用drop
2.删除部分数据行时,用delete+where子句
3.保留表而删除所有数据时,用truncate
6.超键、候选键、主键、外键分别是什么?
超键:在关系中能唯一表示元组属性集称为关系模式的超键。一个属性获多个属性的组合都可以作为超键。超键包含候选键和主键。
候选键:最小的超键,没有冗余元素的超键。
主键:数据库表中对存储数据对象予以唯一完整标识的数据列或属性组合。一个数据列只能有一个主键,并且逐渐的值不能为NULL
外键:在一个表中存在另一个表的主键称为词表的外键。
7.什么是视图?以及视图的使用场景有哪些?
视图是一种由一个或多个真实表的行或者列组成的虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,对视图的修改不影响基本表。
使用场景:1.希望只暴露部分字段给访问者,可以使用视图
2.查询的数据来源于不同的表,而查询者希望以一种统一的方式查询,可以使用视图
8.乐观锁和悲观锁
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
9、说一说三个范式。
第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF):对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
第三范式(3NF):对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余
优势:
可以尽量减少冗余,使的更新更快、体积更小
10.什么是触发器(trigger)?Mysql中都有哪些触发器?
触发器是指一段代码,当触发某个事件时,自动执行这些代码,提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程。。
在mysql中一共有6中触发器:
1.Before Insert
2.After Insert
3.Before Update
4.After Update
5.Before Delete
6.After Delete
11.常见mysql表引擎
InnoDB、MyISAM、Memory
12.关系数据库和非关系型数据库
关系型数据库
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
代表:
Oracle、SQL Server、Access、Mysql
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
代表:
Hbase key-value形式
Redis key-value形式
MongodDB key-value形式
Neo4j 图形数据库
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
13.CHAR和VARCHAR的区别
1.char和varchar类型在存储和检索方面有所不同
2.char列长度固定为创建声明时生命的长度,长度范围是1到255,当char值被存储时,他们被用空格填充到指定长度,检索char值时要删除尾随空格
14.如果一个表有一列定义为TIMESTAMP,将发生什么?
每当行被更改时,时间戳字段都会获取当前时间戳
15.什么是内连接、外连接、自连接?
内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。
外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中
的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。
左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。右外连接,也称右连接,右表为主表,右表中的所有记录都会出现在结果集中。左连接和右连接可以互换,MySQL目前还不支持全外连接。
16.SQL语言包括哪几部分?每部分都有哪些操作关键字?
SQL语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等
数据操纵:Select ,insert,update,delete,
数据控制:grant,revoke
数据查询:select
17.完整性约束包括哪些?
数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。
分为以下四类:
1) 实体完整性:规定表的每一行在表中是惟一的实体。
2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。
3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
与表有关的约束:包括列约束(NOT NULL(非空约束))和表约束(PRIMARY KEY、foreign key、check、UNIQUE) 。
18.什么是锁?
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
基本锁类型:行级锁和表级锁