• 数据库面试题汇总


    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. 数据库分表、分区、分库

  • 相关阅读:
    js_阶乘
    python 最新方案-解决编码错误问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position
    RabbitMQ Python端发送消息给Java端 接受消息全数字问题
    【Hadoop】第六天 Hive
    【Hadoop 】第五天 Hadoop-HA 搭建
    Redis面试常问点
    python md5 salt 摘要算法
    【Hadoop】第四天 Shuffle MapReduce组件全貌
    【Hadoop】第三天 mapreduce的原理和编程
    【Hadoop 】第二天 hdfs的原理和使用操作、编程
  • 原文地址:https://www.cnblogs.com/zpblogs/p/16172696.html
Copyright © 2020-2023  润新知