- DDL(Data Definition Language)用来定义数据库对象;
DML(Data Manipulation Language)用来对数据库中的表进行增删改操作;
DQL(Data Query Language)用来查询数据库中表的记录; DCL(Data Control Language)用来定义数据库的访问控制权限和安全级别; - 位于用户和操作系统之间的一层数据管理软件指的是DBMS(数据库管理系统,database management system)
- 数据库系统DBS(database system)由
操作系统
、数据库管理系统
和主语言系统
、应用开发工具软件
和应用系统
及数据库
组成。 - DML和DQL完成对数据库数据的查询与更新。
- 数据库模糊查询的通配符:
%
、_
- 聚集函数不能直接出现在WHERE子句中
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
-
数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件> -
数据操纵语言DML
数据操纵语言DML主要有三种形式:- 插入:INSERT
- 更新:UPDATE
- 删除:DELETE
-
数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE / VIEW / INDEX / SYN / CLUSTER| 表 视图 索引 同义词 簇。DDL操作是隐性提交的!不能rollback -
数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:- GRANT:授权。
- ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚—ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
- COMMIT [WORK]:提交。在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。
触发器
- 不属于触发事件的是(
AFTER
)AFTER触发器又称后触发器,在执行了INSERT、UPDATE、DELETE语句操作之后执行AFTER触发器。
存储
需查看stu表中索引的索引信息时,应使用的存储过程是(sp_helpindex
)
报告有关数据库对象的信息,语法及应用错误:sp_help
返回指定数据库或者全部数据库的信息:sp_helpdb
显示规则、默认、存储过程、触发器、视图等对象的未加密的文本定义信息:sp_helptext
窗口函数
- 写一段SQL,已知衬衫表SHIRTABLE,请你实现通过
窗口函数
实现,根据不同的衬衫种类shirt_type,按照销售单价shirt_price从低到高的顺序创建排序表()
SELECT shirt_name, shirt_type, shirt_price,
RANK() OVER (PARTITION BY shirt _type
ORDER BY shirt_price) AS ranking
FROM SHIRTABLE
-
窗口函数:
over()窗口函数
中包括三个函数:分区partition by 列名
、排序order by 列名
、指定窗口范围rows between 开始位置 and 结束位置
(可用\可以不用)
若over()函数中不使用这三个函数,窗口大小是针对查询产生的所有数据
,如果指定了分区,窗口大小是针对每个分区的数据。- partition by
partition by可理解为group by 分组。over(partition by 列名)
搭配分析函数时,分析函数按照每一组每一组的数据进行计算的。 - rows between 开始位置 and 结束位置
是指定窗口范围,比如第一行到当前行。而这个范围是随着数据变化的。over(rows between 开始位置 and 结束位置)搭配分析函数时,分析函数按照这个范围进行计算的。
- partition by
-
常与over()一起使用的分析函数:
-
聚合类
avg()、sum()、max()、min() -
排名类
rank()
按照值排序时产生一个自增编号,值相等时会重复,会产生空位(如:1、3、3、6、9)dense_rank()
按照值排序时产生一个自增编号,值相等时会重复,不会产生空位(如:1、2、2、3、3、4)row_number()
按照值排序时产生一个自增编号,不会重复(如:1、2、3、4、5、6)
-
事务
-
事务是数据库操作的基本工作单位。如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的全部更新被恢复原状,好像整个事务从未有过这些更新。这样保持了
数据库
处于一致性
状态。【即原子性
】事务
的特性ACID:
1.原子性(Atomicity)
:事务包含的操作全部成功或者全部失败。
2.一致性(Consistency)
:数据库从一个一致性状态变到另一个一致性状态。
(1)一系列操作后,所有的操作和更新全部提交成功,数据库只包含全部成功后的数据就是数据的一致性。
(2)由于系统异常或数据库系统出现故障导致只有部分数据更新成功,但是这不是我们需要的最终数据,这就是数据的不一致。
3.隔离性(Isolation)
:事务互相隔离互不干扰。
(1)事务内部操作的数据对其它事务是隔离的,在一个事务执行完之前不会被其他事务影响和操作)
事务的隔离级别:读未提交、读提交、可重复读、序列化(串行化)。
4.持久性(Durability)
:事务提交后数据应该被永久的保存下来,出现宕机等故障后可以恢复数据 -
并发访问数据库时,各并发事务之间数据库是
独立的
。【隔离性】 -
事务是最小的执行单位,不允许分割。
-
执行事务
前后
,数据保持一致
,对同一数据读取的结果相同。 -
一个事务被提交后对数据库中数据的改变是
持久的
。
锁
- 可以用于数据修改操作,确保不会同时对同一资源进行多重更新的是:
排他锁
- 用于不更改或不更新数据的读取操作,如SELECT语句:
共享锁
- 用于可更新的资源中,防止当多个会话在读取、锁定以及随后可能进行的资源更换时发生常见形式的死锁:
更新锁
- 在执行依赖于表架构的操作时使用:
架构锁
常识
-
某学院包含多个专业如计算机科学、信息管理、软件工程、网络工程。每个专业每年都招收一个班级的学生。在招生过程中就已明确规定,一个学生只能就读于该学院的一个班级,但是一个班级可以招收不超过60个学生。那么,班级和学生之间是____
多对一
____的关系。一个学生只能对应一个班级,但一个班级能对应多个学生。所以是多对一
如果限定条件改变:一个学生可以读不同的班级,那么就是多对多 -
@@ERROR:返回执行的上一个 Transact-SQLTransact-SQL 语句的错误号。
@@IDENTITY:返回自增id。
@@ROWCOUNT:返回受上一个SQL语句影响的行数。
@@MAX_CONNECTIONS:返回最大用户连接数。 -
若系统在运行过程中,由于某种硬件故障使存储在外存上的数据部分损失或全部损失,这种情况称为
介质故障
。常见的四种故障
(1)事务内部的故障
:事务内部故障可分为预期的和非预期的,其中大部分的故障都是非预期的。预期的事务内部故障是指可以通过事务程序本身发现的事务内部故障;非预期的事务内部故障是不能由事务程序处理的,如运算溢出故障、并发事务死锁故障、违反了某些完整性限制而导致的故障等。
(2)系统故障
:系统故障也称为软故障,是指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电灯情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。这类事务不破坏数据库,但是影响正在运行的所有事务。
(3)介质故障
:介质故障也称为硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等情况,使得数据库中的数据部分或全部丢失的一类故障。
(4)计算机病毒故障
:计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以数据库文件为主)。
区别系统故障还是介质故障就看有没有破坏数据库中的数据,题中破坏了数据库的数据,所以应是介质故障。 -
一个关系可以有多个主属性。
-
关系数据模型
的逻辑结构是关系
。 -
数据
的逻辑结构是二维表
。 -
层次模型
的数据结构是树
。 -
在关系数据库设计中,关系模式是用来记录用户数据的
二维表
。 -
在数据库的非关系模型中,基本层次联系是
两个记录型以及它们之间的一对多联系
。 -
候选关键字中的属性称为
主属性
。 -
关系模型中,表示实体间n:m联系是通过增加一个
关系实现
。 -
当B属性函数依赖于A属性时【B是主键】,属性A与B的联系是
多对一
。 -
非关系型数据库:
redis
、mongoDB
。 -
in与not in,exists与not exists的区别?
exist会针对子查询的表使用索引
not exist会对主子查询都会使用索引
in与子查询一起使用的时候,只针对主查询使用索引
not in则不会使用任何索引
如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in,所以无论哪个表大,用not exists都比not in 要快
SQL基础题|drop、delete 与 truncate 三者的区别?文章来源:https://www.toymoban.com/news/detail-414071.htmldelete 用来删除表的全部或者一部分数据行,执行delete 之后,用户需要提交 (commmit) 或者回滚(rollback) 来执行删除或者撤销删除, delete 命令会触发这个表上所有delete 触发器
truncate 删除表中的所有数据,这个操作不能回滚,也不会触发这个表上的触发器,truncate 比 delete 更快,占用的空间更小
drop 命令从数据库中删除表,所有的数据行,索引和权限也会被删除,所有的 DML 触发器也不会被触发,这个命令也不能回滚。
因此,在不再需要一张表的时候,用 drop。在想删除部分数据行时候,用 delete。在保留表而删除所有数据的时候用 truncate文章来源地址https://www.toymoban.com/news/detail-414071.html
到了这里,关于MySQL刷题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!