--------------------------------SQL------------------------------------
一、关系型数据库和非关系型数据库
1、关系型数据库(SQL)指用关系模型来组织数据的数据库。常见的关系型数据库有Oracle, MySQL,Microsoft SQL Server, PostgreSQL,SQLite,IBM DB2...
2、非关系型数据库(NoSQL),不仅仅是SQL,数据以对象的形式存储在系统中,对象之间的关系通过每个对象自身的属性来决定。通常用于存储非结构化数据。常见的NoSQL有:redis、HBase等。
二、drop、delete、truncate的区别?
drop用来删除表或数据库并将表所占用的空间全部释放。
delete只删除记录。
truncate会清除表数据并重置id从1开始。
三、数据库的分页是怎么做的?
参考资料:数据库的分页是怎么做的?-优快云博客
四、什么是子查询?
指在一个查询语句中使用另一个查询语句的过程。
五、数据库中的存储过程和函数
参考资料:数据库中的存储过程和函数-优快云博客
六、数据库中的锁
1、粒度锁
(1)全局锁:针对整个数据库的锁,全局锁的典型使用场景是,需要确保整个数据库一致性的操作,例如做全库逻辑备份。
# 全局锁,简称FTWRL
FLUSH TABLES WITH READ LOCK;
# 解锁命令
UNLOCK TABLES;
①读锁(共享锁):阻止其他用户更新数据,但允许读取数据。
②写锁(排他锁):阻止其他用户读取和更新数据
(2)表锁:典型应用场景:全表更新或删除
# 给表添加读锁或写锁
lock tables employee read/write;
# 解锁
unlock tables;
(3)行锁:主要由innoDB引擎提供,应用场景:高并发读取操作,单行操作。
七、视图与游标
1、视图:是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图
通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更
容易,相比多表查询。
2、游标:是对查询出来的结果集作为一个单元来有效的处理。游标能够对结果集中的每一条记录
进行定位,并对指向的记录中的数据进行操作的数据结构。一般不使用游标,但是需要逐条处理数
据的时候,游标显得十分重要。
八、where, on 和having有什么区别?
1、where和having的根本区别在于: where在group by和聚合函数之前对数据进行过滤; having在group by和聚合函数之后对数据进行过滤;
2、where和on的区别在于: 内连接中,on和where等价; 外连接,on中的过滤条件在连接操作之前执行,而where在连接操作之后执行。
在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。
九、SQL各子句的执行顺序。
先有表(from、on、join),才能过滤(where),再才能分组(group、having),再才能选择去重(sele