当前位置: 首页 > news >正文

专项练习-数据库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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • cmake命令交叉编译opencv
  • linux高级学习9
  • NAT技术+代理服务器+内网穿透
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • ASP.Net Core 因集成WebSocket导致Swagger UI显示错误
  • 11. MyBatis的一级缓存和二级缓存有什么区别?如何配置和使用二级缓存?
  • redis之缓存淘汰策略
  • 『功能项目』项目优化 - 默认管线转URP【31】
  • vue如何实现路由缓存
  • 7.统一网关-Gateway
  • 解决Pynput不能在Ubuntu22.04上正常使用问题
  • 百度飞将 paddle ,实现贝叶斯神经网络 bayesue neure network bnn,aistudio公开项目 复现效果不好
  • Oracle SQL和PL/SQL中SQL%ROWCOUNT和SQL%FOUND属性
  • STM32
  • 【Linux】冯诺依曼概念以及操作系统基础概念
  • ----------
  • [笔记] php常见简单功能及函数
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS居中完全指南——构建CSS居中决策树
  • GitUp, 你不可错过的秀外慧中的git工具
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Puppeteer:浏览器控制器
  • Redis字符串类型内部编码剖析
  • Spring Cloud中负载均衡器概览
  • ubuntu 下nginx安装 并支持https协议
  • Vue.js-Day01
  • yii2中session跨域名的问题
  • 初识MongoDB分片
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 批量截取pdf文件
  • -- 数据结构 顺序表 --Java
  • 学习HTTP相关知识笔记
  • 一道面试题引发的“血案”
  • 1.Ext JS 建立web开发工程
  • const的用法,特别是用在函数前面与后面的区别
  • 积累各种好的链接
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #{}和${}的区别是什么 -- java面试
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./configure,make,make install的作用(转)
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core WebAPI中封装Swagger配置
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .net程序集学习心得