数据库面试题汇总

2022-05-09 17:28:55 浏览数 (1)

1、左连接和右连接的区别?

含义不同;使用方法不同;运行空值不同。 1.含义不同

左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来。

右连接:右连接是只要右边表中有记录,数据就能检索出来。

2.使用方法不同

右连接与左连接相反,左连接A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有。右连接A INNER JOIN B,在A中也有,在B中也有的数据才能查询出来。

3.运行空值不同

左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。右联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

2、数据库优化的几种方式

第一个方法:选取最适用的字段属性。MySQL可以支持大数据量的存取,但是数据库中的表越小,在上面执行的查询就越快。所以可以将表中的字段宽度设置的尽可能小。图示为此方法的例子。

第二个方法:使用连接来代替子查询(Sub-Queries)。可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中

第三个方法:使用联合(UNION)来代替手动创建的临时表。MySQL可以把需要使用临时表的两条或者更多的select查询合并到一个查询中。

第四个方法:事务。不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。可以保持数据库中数据的完整性和一致性

第五个方法:锁定表。由于在事务执行的过程中,数据库将会被锁定,因此其他的用户请求只能暂时等待直到该事务结束。有些情况下我们可以通过锁定表的放大来获得更好的性能。

第六个方法:使用外键。锁定表的方法可以保护数据的完整性,但是却不能保证数据的关联性。此时我们可以使用外键。

3、写出一条SQL语句:取出Student表中第31到第40条数据(以自动增长的ID作为主键,主键可能不连续)

Select Top(10) * from Student where id not in(Select Top(30) id from Student)

4、事务的四大特性?

原子性: 事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部取消,如果某条语句执行失败,那么所有语句全部回滚;

一致性:完成事务时,所有数据必须一致;

隔离性:由事务所做的修改必须与其他事务修改隔离;

持久性:提交事务后,对数据库所做的修改就会永久性的保存下来。

5、SQL Server是什么类型数据库,保证数据库的完整性都有什么?

常见的数据类型:网状模型、层次模型、关系模型

SQL Server是一种关系型数据库;

保证数据库完整性:实体完整性、区域完整性、参照完整性

6、SQL Server数据库中的基本约束及其作用?

主键约束:确定表中的标识列,必须是非空唯一,一个表只有一个主键;

唯一约束:确定这个字段的数据必须是唯一的,如果添加内容,内容不能重复;

外键约束:确定表与表之间的联系;

检查约束:确定这个字段中的数据特性;

非空约束:确定这个字段的数据不能为空;

默认约束:确定这个字段数据的默认值

7、叙述索引、视图、触发器、事务、存储过程?

索引:索引像书的目录,它提供了数据的逻辑,合理划分索引能够大大提高数据库性能;

视图:视图是一种虚拟表,可对虚拟表进行增改查操作;

触发器:触发器是一种特殊类型的存储过程,主要通过事件触发而被执行;

事务:事务是指一个工作单元,它包含了一组数据操作命令,这组命令要么执行,要么不执行;

存储过程:是指一组编译的SQL语句

8、SQL Server的聚合函数都有哪些?

Min():最小值

Max():最大值

Sum():总和

Avg():平均值

Count():总数

distinct():去重

Having():重复记录

9、什么是SQL注入?应如何防止?

利用SQL关键字对网站进行攻击;

防止:①通过存储过程执行所有查询;

​ ②限制表单或查询字符串输入的长度

10、数据库访问量很大时,如何做优化?

SQL查询语句优化:

  1. 使用索引
  2. 任何地方都不要使用SELECT * FROM语句
  3. 数据库分表、分区、分库

0 人点赞