数据库 基础面试第一弹

news2024/11/20 7:10:42

1. SQL语句类型

1. DDL(Data Definition Language,数据定义语言):

DDL语句用于定义数据库对象(如表、索引、视图等)。常见的DDL语句包括:

  CREATE:用于创建数据库对象,如创建表、索引、视图等。

  ALTER:用于修改数据库对象的结构,如修改表的列、添加约束等。

  DROP:用于删除数据库对象,如删除表、索引、视图等。

  TRUNCATE:用于删除表中的所有数据,但保留表结构

DDL(数据定义语言)示例:

# 创建表

CREATE TABLE employees (

  id INT PRIMARY KEY,

  name VARCHAR(100),

  age INT,

  salary DECIMAL(10, 2)

);

# 修改表结构

ALTER TABLE employees ADD COLUMN department VARCHAR(50);

DROP TABLE employees; #删除表

2. DML(Data Manipulation Language,数据操作语言):

DML语句用于对数据库中的数据进行操作(插入、更新、删除)。常见的DML语句包括:

  • SELECT:用于从数据库中查询数据。
  • INSERT:用于向表中插入新的数据。
  • UPDATE:用于更新表中的数据。
  • DELETE:用于删除表中的数据。

DML(数据操作语言)示例:

1

2

3

4

5

6

7

INSERT INTO employees (id, name, age, salary)

VALUES (1, 'John Doe', 30, 5000);  # 插入数据

UPDATE employees SET salary = 6000 WHERE id = 1; #更新数据

DELETE FROM employees

WHERE id = 1;  # 删除数据

3. DQL(Data Query Language,数据查询语言):

DQL语句用于从数据库中查询数据。DQL语句的核心是SELECT语句,可以使用SELECT语句查询满足特定条件的数据,并对结果进行排序、分组等处理

DQL(数据查询语言)示例:

1

2

3

4

5

6

7

SELECT FROM employees;

SELECT FROM employees

WHERE age > 25;     # 查询特定条件的数据

SELECT name, salary FROM employees; # 查询特定列的数据

4. DCL(Data Control Language,数据控制语言)

DCL语句用于对数据库的访问权限进行管理。常见的DCL语句包括:

  • GRANT:用于授予用户访问权限。
  • REVOKE:用于撤销用户的访问权限。
  • DENY:用于拒绝用户的访问权限。

DCL(数据控制语言)示例:

1

2

3

4

5

GRANT SELECTINSERT ON employees TO user1;  #授予用户访问权限

REVOKE SELECTINSERT ON employees FROM user1; # 撤销用户的访问权限

DENY SELECTINSERT ON employees TO user1; # 拒绝用户的访问权限

2. 索引作用,底层结构及常见类型

索引在数据库中起着重要的作用,它可以提高数据库的查询性能和数据的检索速度。索引是一种数据结构,用于快速定位和访问数据库中的特定数据。

作用:

  • 提高查询性能:通过使用索引,可以减少数据库查询的数据量,从而提高查询速度。
  • 加速数据检索:索引可以帮助数据库快速定位和访问满足特定条件的数据,减少数据的扫描时间。

底层结构:
数据库索引的底层结构可以有多种实现方式,常见的包括以下几种:

  1. B-树(B-Tree)索引:B-树是一种平衡的多路搜索树,它的特点是可以自动调整树的结构以适应数据的插入和删除操作。B-树索引常用于磁盘存储的数据库,因为它可以减少磁盘访问次数,提高查询效率。

  2. B+树(B+Tree)索引:B+树是在B-树的基础上进行优化的一种数据结构。它与B-树类似,但在叶子节点上存储了所有的关键字和对应的数据指针,这样可以加快范围查询和顺序访问的速度。B+树索引是大多数关系型数据库中最常用的索引类型。

  3. 哈希(Hash)索引:哈希索引使用哈希函数将关键字映射到一个固定长度的哈希值,然后将哈希值与数据的存储位置关联起来。哈希索引适用于等值查询,但不适用于范围查询或排序操作。

  4. 全文(Full-Text)索引:全文索引用于对文本内容进行搜索,它可以对文本字段中的关键词进行索引和检索,支持全文搜索和模糊匹配。

常见类型:
在常见的关系型数据库中,常用的索引类型包括:

    1. 主键索引(Primary Key Index):用于唯一标识表中的记录,保证主键的唯一性和索引的快速访问。

    2. 唯一索引(Unique Index):用于保证某个列或列组合的唯一性,可以加速唯一性检查。

    3. 聚集索引(Clustered Index):指定表的物理顺序,表中的记录按照聚集索引的顺序存储。

    4. 非聚集索引(Non-Clustered Index):不指定表的物理顺序,独立存储索引的数据结构。

    5. 复合索引(Composite Index):使用多个列组合作为索引的键,支持多个列的联合查询。

    6. 全文索引(Full-Text Index):用于全文搜索和模糊匹配的索引类型,支持对文本内容进行搜索。

3. 事务的特性

  1. 原子性(Atomicity):事务是一个原子操作单元,要么全部执行成功,要么全部失败回滚。原子性确保事务中的所有操作要么全都执行,要么全都不执行,不会出现部分操作成功而部分操作失败的情况。

  2. 一致性(Consistency):事务在执行之前和执行之后,数据库的完整性约束没有被破坏。一致性确保数据库从一个一致的状态转移到另一个一致的状态,它定义了数据在事务执行过程中的合法变化。

  3. 隔离性(Isolation):事务的执行是相互隔离的,一个事务的操作不会被其他并发事务所干扰。隔离性确保事务在并发执行时,每个事务的操作都像是在独立执行,避免了并发读写操作导致的数据不一致问题。

  4. 持久性(Durability):一旦事务提交,其所做的修改将永久保存在数据库中,即使系统发生故障或重启。持久性确保事务提交后的修改是永久性的,不会因为系统故障而丢失。

4. 事务的隔离级别

  1. 读未提交(Read Uncommitted):

    • 最低的隔离级别,事务中的未提交修改对其他事务都是可见的。
    • 可能导致脏读(Dirty Read),即读取到其他事务尚未提交的数据,可能是不一致的数据。
    • 存在幻读(Phantom Read),即在同一个事务中多次执行同样的查询,结果集不一致。
  2. 读已提交(Read Committed):

    • 事务只能读取到已经提交的数据,未提交的数据对其他事务不可见。
    • 避免了脏读的问题,但仍可能导致幻读。
    • 大多数常见数据库的默认隔离级别。
  3. 可重复读(Repeatable Read):

    • 保证了在同一事务中多次读取同一数据时,结果保持一致。
    • 读取的数据是在事务开始时确定的快照,即使其他事务对数据进行修改也不可见。
    • 避免了脏读和幻读的问题。
  4. 序列化(Serializable):

    • 最高的隔离级别,通过强制事务串行执行来避免并发问题。
    • 保证了事务之间的完全隔离,避免了脏读、幻读和不可重复读的问题。
    • 性能较差,一般情况下只在特殊需求下使用。

5. 事务并发引起的三大问题

  1. 脏读(Dirty Read):

    • 脏读指的是一个事务读取了另一个事务尚未提交的数据。当一个事务读取到了被另一个事务修改但尚未提交的数据时,如果另一个事务最终回滚,则读取到的数据是无效的。
    • 脏读可能导致数据不一致性和错误的结果。
  2. 不可重复读(Non-repeatable Read):

    • 不可重复读指的是在同一个事务中,多次读取同一数据时,得到的结果不一致。这是因为在读取过程中,其他并发事务对该数据进行了修改或删除。
    • 不可重复读可能导致事务在多次读取同一数据时无法保持一致性,破坏了事务的隔离性。
  3. 幻读(Phantom Read):

    • 幻读是指在同一个事务中,多次执行同样的查询,得到的结果集不一致。这是因为在查询过程中,其他并发事务插入了新的数据行,导致结果集发生了变化。
    • 幻读可能导致事务在同一查询中读取到不同的数据行,无法保持一致性。

6. 死锁的原因及解决办法:

死锁是指两个或多个事务因为互相等待对方释放资源而无法继续执行的状态。死锁的发生是由于以下原因之一或多个原因共同作用:

  1. 互斥条件(Mutual Exclusion):资源只能同时被一个事务占用,当某个事务占用了一个资源后,其他事务无法同时占用该资源。

  2. 请求与保持条件(Hold and Wait):一个事务在持有资源的同时,又申请其他事务所占有的资源。

  3. 不可剥夺条件(No Preemption):资源只能由持有者显式释放,其他事务无法强制抢占。

  4. 循环等待条件(Circular Wait):多个事务形成一个循环等待资源的链,每个事务都在等待下一个事务所占有的资源。

为了解决死锁问题,可以采取以下几种常用的解决办法:

  1. 预防死锁(Deadlock Prevention):

    • 通过破坏死锁发生的四个必要条件中的一个或多个,来预防死锁的发生。
    • 可以在系统设计阶段采用资源分配策略、事务调度策略等方式来预防死锁。
  2. 避免死锁(Deadlock Avoidance):

    • 在运行时动态判断是否分配资源,避免可能导致死锁的资源分配情况。
    • 通过资源分配的安全性检查和资源请求的合理判断,避免进入可能导致死锁的状态。
  3. 检测与恢复(Deadlock Detection and Recovery):

    • 允许死锁发生,但通过周期性地检测系统中的死锁状态,并采取恢复措施来解除死锁。
    • 可以使用图算法(如资源分配图)来检测死锁,并通过回滚、抢占资源等方式进行恢复。
  4. 死锁忽略(Deadlock Ignorance):

    • 假设死锁很少发生或发生死锁的代价较低,可以忽略死锁问题,不采取专门的死锁处理措施。
    • 此方法适用于某些特定环境下,如批处理系统等。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1337823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos2.1.2改造适配达梦数据库7.0

出于业务需求,现将Nacos改造适配达梦数据库7.0,记录本次改造过程。 文章目录 一、前期准备二、适配流程1、项目初始化2、引入驱动3、源码修改 三、启动测试四、打包测试 一、前期准备 Nacos源码,版本:2.1.2:源码下载…

使用poi将pptx文件转为图片详解

目录 项目需求 后端接口实现 1、引入poi依赖 2、代码编写 1、controller 2、service层 测试出现的bug 小结 项目需求 前端需要上传pptx文件,后端保存为图片,并将图片地址保存数据库,最后大屏展示时显示之前上传的pptx的图片。需求看上…

Servlet见解2

4 创建servlet的三种方式 4.1 实现Servlet接口的方式 import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException;WebServlet("/test1") public class Servlet1 implements Servlet {Overridepublic void init(ServletConf…

alertmanage调用企业微信告警(k8s内部署)

一、前言 alertmanage调用企业微信应用告警会比直接使用钉钉告警更麻烦一点,调用企业微信应用告警需要在应用内配置企业可信ip,不然调用企业微信接口就会报错,提示ip地址有风险 二、部署 先自行创建企业微信,再使用管理后台创建应…

视频遥测终端机的设计需求

目录 1.目的 2.参考文件 3.总体描述 4.硬件资源描述 4.1微控制单元 4.2视频处理单元 4.3性能指标 5.功能要求 5.1系统参数要求 5.1.1系统管理 5.1.2系统配置 5.1.2.1一般参数 5.1.2.2编码参数 5.1.2.3网络参数 5.1.2.4网络服务 5.1.2.5OSD参数 5.1.2.6抓拍 5.…

MYSQL一一约束

概述: ①概念约束是作用于表中字段的规则,用于限制存储在表中的数据 ②目的:保证数据库中的数据的正确性,有效性和完整性 ③分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表的时候…

【C语言】指针详解(四)

目录 1.assert断言 2.指针的使用和传址调用 2.1strlen的模拟使用 2.2传值调用和传址调用 1.assert断言 assert.h头文件定义了宏 assert(),用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行。这个宏常常被称为“断言”。 例如…

主流级显卡的新选择,Sparkle(撼与科技)Intel Arc A750兽人体验分享

▼前言 对于玩家而言,英特尔独显的出现不仅打破了NVIDIA与AMD双雄天下的局面,而且旗下的Arc A系列显卡还拥有不俗的做工性能以及颇具优势的价格,无论是升级或者是装新机都非常合适。如果要在Arc A系列当中选一个性能不俗,能够满足…

从AMI镜像恢复AWS Amazon Linux 2实例碰到的VNC服务以及Chrome浏览器无法启动的问题

文章目录 小结问题及解决VNC服务无法启动Chrome浏览器无法启动 参考 小结 将Amazon Linux 2保存为AMI (Amazon Machine Images)后,恢复成EC2 Instance (实例)后,VNC服务以及Chrome浏览器无法启动,进行了解决。 问题及解决 如果要将一个EC2…

算法训练第四十八天|198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

198. 打家劫舍: 题目链接 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报…

LSTM中文新闻分类源码详解

LSTM中文新闻分类 一、导包二、读取数据三、数据预处理1.分词、去掉停用词和数字、字母转换成小写等2.新闻文本标签数值化 三、创建词汇表/词典1.data.Field()2.空格切分等3.构建词汇表/词典使用训练集构建单词表,vectorsNone:没有使用预训练好的词向量,而是使用的是…

PyTorch深度学习实战(27)——变分自编码器(Variational Autoencoder, VAE)

PyTorch深度学习实战(27)——变分自编码器 0. 前言1. 变分自编码器1.1 自编码器的局限性1.2 VAE 工作原理1.3 VAE 构建策略1.4 KL 散度1.5 重参数化技巧 2. 构建 VAE小结系列链接 0. 前言 变分自编码器 (Variational Autoencoder, VAE) 是一种生成模型&…

华为ipv6配置之ospf案例

R1 ipv6 ospfv3 1 router-id 1.1.1.1 //必须要手动配置ospf id,它不会自动生成 interface GigabitEthernet0/0/0 ipv6 enable ipv6 address 2000::2/96 ospfv3 1 area 0.0.0.0 interface LoopBack0 ipv6 enable ipv6 address 2001::1/96 ospfv3 1 area 0.0.0.0 R2…

腾讯云4核8G服务器三年优惠价格表

腾讯云轻量服务器4核8G12M有三年优惠价吗?有,但是不怎么优势,相对于云轻量2核2G4M带宽三年价格是540元、2核4G5M带宽3年优惠价756元,4核8G12M轻量应用服务器三年价格是5292元,怎么样?还想买吗?阿…

文件夹共享功能的配置 以及Windows server2012防火墙的配置

目录 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 1.2 配置文件夹共享 1.3 访问共享文件夹 1.4 配置取消 用户名和密码认证 二. windows server 2012防火墙配置 思维导图 一. 配置文件夹共享功能 1.1 为什么需要配置文件夹共享功能 我们在工作和生活中经…

设计模式-单例模式(结合JVM基础知识)

1.定义介绍 所谓单例模式,是指在程序运行时,整个JVM中只有一个该类的实例对象 2. 单例模式的优点 复用性高,节省内存资源。类的加载、连接、初始化、使用都要占用虚拟机内存空间,因此,频繁创建对象会造成资源浪费&a…

【Linux基础】6. 进程管理工具

文章目录 【 1. 查询进程 】【 2. 终止进程 】【 3. top 进程监控 】【 4. pmap 分析线程栈 】【 5. 综合运用 】 任何进程都与文件关联;我们会用到 lsof 工具(list opened files),作用是列举系统中已经被打开的文件。在 linux环境…

TG7050CKN,TG7050SKN ,TG7050CMN,TG7050SMN

爱普生推出的温补晶振型号:TG7050CKN,TG7050SKN ,TG7050CMN,TG7050SMN频率范围为 10mhz ~ 54mhz 适用于广泛的频率需求。这几款的特点就是耐高温,温度可达105℃高温,而且都是高稳定性温补晶振,&…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00 - 数学知识基础

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Ch00 - 数学知识基础 1. Ch0-1矩阵的导数运算1.1标量向量方程对向量求导,分母布局,分子布局1.1.1 标量方程对向量的导数1.1.2 向量方程对向量的导数 1.2 案例分析&#xf…

目标检测-Two Stage-SPP Net

文章目录 前言一、SPP Net 的网络结构和流程二、SPP的创新点总结 前言 SPP Net:Spatial Pyramid Pooling Net(空间金字塔池化网络) SPP-Net是出自何凯明教授于2015年发表在IEEE上的论文-《Spatial Pyramid Pooling in Deep ConvolutionalNetw…