首页 > 数据库 >专项练习-数据库SQL-177题(下)

专项练习-数据库SQL-177题(下)

时间:2024-09-05 18:55:53浏览次数:10  
标签:事务 数据库 视图 索引 SQL 177 备份

 ※食用指南:文章内容为牛客网《专项练习-数据库SQL》177道选择题,重点笔记,用于重复思考错题,加深印象

练习传送门:专项练习-数据库SQL-177题

目录:

1、维护参照完整性约束的策略

2、数据库事务的特性(ACID)

3、DQL、DML、DDL、DCL,提交数据的类型

4、视图的概念

5、索引的描述

6、各类查询

7、对表进行修改

8、SQL Server中使用存储过程的优缺点

9、数据库系统三级模式结构

10、截取、删除、提取字符

11、最可能会导致SQL注入的字符

12、游标

13、事务和并发控制

14、各类存储过程

15、锁

16、解决事务的脏读、幻读的方法

17、事务隔离级别

18、批处理的规则

19、授权依据

20、数据库备份类型

21、语句顺序

22、数据类型的函数

23、主键


1、维护参照完整性约束的策略

①对于任何违反了参照完整性约束的数据更新,系统一概拒绝执行

②当删除被参照表的一个元组造成了与参照表的不一致,则删除参照表中的所有造成不一致的元组

③当删除或修改被参照表的一个元组造成了不一致,则将参照表中的所有造成和不一致的元组的对应属性设置为空值

2、数据库事务的特性(ACID)

原子性事务是最小的执行单位,不允许分割
一致性执行事务前后,数据保持一致,对同一数据读取的结果相同
隔离性并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的
持久性一个事务被提交后对数据库中数据的改变是持久的

3、DQL、DML、DDL、DCL,提交数据的类型

类型

用途涉及语句
数据查询语言DQLSELECT、FROM、WHERE

数据操纵语言DML

对数据库里的数据进行操作INSERT、UPDATE、DELETE
数据定义语言DDL大多在建立表时使用CREATE、ALTER、DROP
数据控制语言DCL用于对事务的提交、回收和设置保存点GRANT、ROLLBACK、COMMIT 

DDL操作对象:TABLE、VIEW、INDEX、SYN、CLUSTER(隐性提交,无法ROLLBACK)


提交数据的三种类型

显式提交COMMIT
隐式提交ALTER、AUDIT、COMMENT、CONNECT、CREATE、DISCONNECT、DROP、EXIT、GRANT、NOAUDIT、QUIT、REVOKE、RENAME
自动提交SET AUTOCOMMIT ON

4、视图的概念

①可以解决检索数据时一个表中得不到一个实体所有信息的问题

②视图是虚拟表,视图所引用的表称为视图的基表

③若基表的数据发生变化,则变化也会自动反映到视图中

④数据库存储的是视图的定义,不存放视图对应的数据

5、索引的描述

①可通过索引快速查找数据,减少查询执行时间

②数据库索引采用B+树,因为B+树在提高了磁盘IO性能的同时解决了元素遍历效率低下的问题

③如果WHERE子句中使用了索引,那么ORDER BY子句中不会使用索引

④索引提高了查询速度,但索引滥用会降低更新表的速度

⑤为提高效率可建立组合索引,遵循“最左前缀”原则

6、各类查询

①单列单值嵌套查询:结果集为一个值,一般使用=、<、>等运算符

②单列多值嵌套查询:子查询中,父查询中一般使用IN运算符

③多列多值嵌套查询:结果类似于一张虚拟表,父查询中只能使用EXISTS或NOT EXISTS

④集合查询:通常是利用UNION、EXCEPT、INTERSECT集合运算符实现两个表之间的数据查询

7、对表进行修改

ADD COLUMN增加列
CHANGE修改列名或类型
ALTER/DROP DEFAULT修改/删除列的默认值
MODIFY修改列类型
DROP删除列
RENAME TO 修改表名
CHARACTER SET修改字符集
COLLATE修改校对规则(比较和排序时用到)

8、SQL Server中使用存储过程的优缺点

SQL Server中使用存储过程的优缺点
优点执行速度快存储过程只在创造时进行编译,已经通过语法检查和性能优化,以后每次执行存储过程都不需再重新编译
允许组件式编程

当对数据库进行复杂操作时(如对多个表进行UPDATE、INSERT、QUERY、DELETE),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用

可多次调用该过程,提高代码的优化率和可读性

减少网络流量

当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句

减轻了网络流量,降低了网络负载

提高系统安全性

可将存储过程作为用户存取数据的管道,限制用户对数据表的存取权限,建立特定的存储过程供用户使用

避免非授权用户对数据的访问,保证数据的安全

缺点移植性差依赖于数据库厂商,难以移植(当一个小系统发展到大系统时,对数据库的要求也会发生改变)
难以调试、维护业务逻辑大的时候,封装性不够,难调试难以维护
服务器不能负载均衡

复杂的应用用存储过程来实现,就把业务处理的负担压在数据库服务器上了

无法通过中间层来灵活分担负载和压力.均衡负载等

9、数据库系统三级模式结构

①外模式是面向数据库用户或应用程序的局部数据视图

②索引的组织方式是B+树索引,还是Hash索引与数据库的内模式有关

③模式并不涉及数据的物理存储细节

④模式/内模式映像保证了数据库具有较高的物理独立性

10、截取、删除、提取字符

CHARINDEX返回指定字符串中指定子字符串出现的起始位置的函数
SUBSTRING截取指定字符串的方法
STUFF删除指定长度的字符,并在删除的位置插入新的字符
SOUNDEX返回指定字符串的SOUNDEX值

11、最可能会导致SQL注入的字符

‘单引号作为MySQL中的字段值封装方式,最容易被用作注入攻击,可以执行恶意SQL语句,数据库中的数据都会被盗取

防止SQL注入的方法:

①机密信息必须加密或者HASH掉密码和敏感的信息

②正则表达式对用户的输入进行校验,限制长度,对单双引号进行转换

③直使用存储过程进行数据查询存取、使用参数化的SQL

④减少应用的异常信息的提示,最好使用自定义的错误信息对原始错误信息进行包装

⑥使用辅助软件或网站平台来检测是否有SQL注入(常见的检测工具JSKY、MDCSOFT SCAN、MDCSOFT-IPS)

12、游标

游标:从包括多条数据记录的结果集中每次提取一条记录以便处理的机制,可以看做是查询结果的记录指针

①游标允许定位在结果集的特定行

②从结果集的当前位置检索一行或一部分行

③支持对结果集中当前位置的行进行数据修改

④为由其他用户对显示在结果集中的数据所做的更改提供不同级别的可见性支持

13、事务和并发控制

①并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一

②可串行性是判断并发事务是否正确的准则

SQL Server中每一条SELECT、INSERT、UPDATE、DELETE语句都是隐形事务的一部分,显性事务用BEGIN TRANSACTION明确指定事务

④事务的隔离级别越高,并发能力也就越低

14、各类存储过程

sp_helpindex查看表中的索引信息
sp_help查看有关数据库对象的摘要信息
sp_helpdb查看指定数据库或全部数据库信息
sp_helptext查看存储过程、视图、触发器等文本信息,用于获取自定义视图创建的T_SQL文本
sp_refreshview更新视图数据

15、锁

排它锁X用于数据修改操作,其他人不能读也不能写,确保不会同时对同一资源进行多重更新
共享锁S共享锁锁定的资源可以被其他用户读取,但是其他用户无法修改,用于不更改或不更新数据的读取操作,如SELECT语句;
更新锁U用于可更新的资源中,防止当多个会话在读取、锁定以及随后可能进行的资源更换时发生常见形式的死锁;
架构锁在执行依赖于表架构的操作时使用(类型为:架构修改 Sch-M)、架构稳定性 Sch-S)

16、解决事务的脏读、幻读的方法

脏读的解决方法:

①修改时加排他锁,直到事务提交后释放,读取时加共享锁

不可重复读或幻读的解决方法

②读取数据时加共享锁,写数据时加排他锁,都是事务提交才释放锁

17、事务隔离级别

Read uncommitted读未提交是事务隔离级别的最低级别
Read committed读已提交,可避免脏读情况发生
Repeatable Read确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新
Serializable最严格的事务隔离级别,要求所有事物被串行执行,不能并发执行,可避免脏读、不可重复读,幻读情况的发生

(15、16、17的详细内容具体可看本人笔记:MySQL数据分析进阶(十)事务

18、批处理的规则

批处理:指包含一条或多条T-SQL语句的语句组

①修改一个表中的字段名后,不可以在同一个批处理中引用这个新字段

②不能定义一个check约束后,立即在同一个批处理中使用

③Create default,Create rule,Create trigger,Create procedure,Create view等语句同一个批处理中只能提交一个

④不能把规则和默认值绑定到表字段或自定义字段上之后,立即在同一个批处理中使用

19、授权依据

某IT公司人事管理采用专门的人事管理系统来实现,后台数据库名为LF。

新人事部经理在访问员工信息表EMPL里的工资和奖金字段的时被拒绝,只能查看该表其他字段

解决方法:仅授予对表EMPL里的工资列和奖金列的SELECT权限,只给相应字段查询权限即可

db_accessadmin可以添加、删除用户的用户
db_datareader可以查看所有数据库中用户表内数据的用户

20、数据库备份类型

类型概述频率
完整数据库备份可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象

花费更多的时间和空间

一周做一次

事务日志备份并不备份数据库本身,只记录事务日志内容,备份的时候只需要复制自上次备份以来对数据库所做的改变

只需要很少的时间

每小时甚至更频繁

差异数据库备份只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库

存储和恢复速度快

每天做一次

文件和文件组备份如果在创建数据库时,为数据库创建了多个数据库文件或文件组,可以使用该备份方式,如果这个数据库非常大,可以使用文件备份数据库的一部分

不是很常用

21、语句顺序

写法顺序:SELECT--FROM--WHERE--GROUP BY--HAVING--ORDER BY

执行顺序:FROM--WHERE--GROUP BY--HAVING--SELECT--ORDER BY

22、数据类型的函数

CAST将某种数据类型的表达式显式转换为另一种数据类型
CONCAT将两个字符串连接起来,形成一个单一的字符串
ISNUMERIC测试有效数字的数值函数
CHANGE修改字段名

23、主键

①一个数据列只能有一个主键,且不能为空值(NULL)

②主键一定是唯一性索引,唯一性索引并不一定就是主键

③一个表中可以有多个唯一性索引,但只能有一个主键

————END

标签:事务,数据库,视图,索引,SQL,177,备份
From: https://blog.csdn.net/2401_86505958/article/details/141813054

相关文章

  • SQL——DQL用来查询数据库表中的记录(MySQL)
    DQL英文全称是DataQueryLanguage(数据查询语言),用来查询数据库表中的记录。关键字:select一、前言select  字段列表  from表名列表 --基本查询where  条件列表-----条件查询(where)groupby 分组字段列表 having分组后条件列表--分组查询(groupby......
  • 填坑 Plugin 'mysql_native_password' is not loaded
    数据库从mysql5.7升级到mysql8.4,部分场景出现以下错误提示:Plugin'mysql_native_password'isnotloaded原因是:mysql_native_password插件(模式)在新版本中被弃用了,新模式为caching_sha2_password,需要启用一下旧模式。解决步骤:1.连接到数据库后,用命令SHOWPLUGINS查看插......
  • MySQL索引与事务(详细解析)
    目录1.索引作用 优势:2.索引的使用 2.1查看索引 2.2创建索引2.3删除索引 3.索引的数据结构4.事务 4.1事务的概念 4.2事务的使用 1.索引作用 优势: --索引类似一本书的目录,加快提高的查询的效率 --索引会额外的占用磁盘的空间,可能会拖慢插入......
  • MySQL 数据类型详解
    MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字......
  • Java项目: 基于SpringBoot+mysql蜗牛兼职网兼职平台管理系统(含源码+数据库+答辩PPT+
    一、项目简介本项目是一套基于SpringBoot+mysql蜗牛兼职网兼职平台管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用......
  • 20240907_004551 mysql 视图 创建视图
    很幸苦的获取数据SELECTstudent.id,student.nameASsname,class.nameAScname,class.detailFROMstudentINNERJOINclassONstudent.cid=class.id存在的问题下次要再拿这样的数据重写语句很麻烦希望上面的查询结果直接就作为虚拟表的本体创建视图语法createvi......
  • MysqlHelper
    #来源:https://blog.csdn.net/YZL40514131/article/details/127170427frompymysqlimport*classMysqlHelper:#todo数据库连接参数,可以定义多个,比如conn_params1,conn_params2,用于连接多个数据库,在类实例化时指定conn_params={'host':'localhost',......
  • 使用 Terraform 在 AWS 上创建 MySQL RDS 实例:自动化基础设施管理
    在如今的云计算时代,自动化基础设施管理成为了企业高效运维的关键。而Terraform作为一款强大的基础设施即代码(InfrastructureasCode,IaC)工具,可以帮助我们轻松实现云资源的自动化管理。本文将围绕如何使用Terraform在AWS上创建MySQLRDS实例展开,带你体验自动化管理带来的便......
  • 使用 MySQL 创建直方图:数据分析与可视化技巧,mysql创建视图表
    在数据分析和可视化过程中,直方图是一种常见的工具,用来显示数据的分布情况。使用MySQL创建直方图,可以帮助我们快速理解数据的整体趋势和分布特征。本文将介绍如何使用MySQL来创建直方图,并结合数据分析与可视化的技巧,让数据分析更加直观易懂。什么是直方图?直方图是一种用于展......
  • MySQL(四)日期函数 NULL函数 字符串函数
    日期函数函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()提取日期或日期/时间表达式的日期部分EXTRACT()返回日期/时间的单独部分DATE_ADD()向日期添加指定的时间间隔DATE_SUB()从日期减去指定的时间......