目录
Java架构师面试最强总结100篇(2021) | https://libusi.blog.csdn.net/article/details/104268324 |
数据库:
你熟悉的数据库有哪些?
l Oracle:甲骨文;
l MySQL:甲骨文;
l DM:达梦数据库
l SQL Server:微软;
l DB2:IBM;
l Sybase:赛尔斯;
数据库中,我们对主键有哪些要求?
非空、唯一、可引用!
事务:
什么是事务?
答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。
原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
数据库内联与外联的区别?
内部联接(inner join)一个联接,返回两表的公共列都匹配的行
外部联接(outer join) 一个联接,该联接还包括那些和联接表中记录不相关的记录。您可以创建一个外部联接的三种变形来指定所包括的不匹配行:
左外部联接、右外部联接和完全外部联接。
u 左外部联接(left outer join) 左边的表是主表,列所有;右表无取null
u 右外部联接(right outer join) 右边的表是主表,列所有;左边表只列匹配的行,没有值置null
u 完全外部联接 列所有,没有值置null
分别说说DDL、DML、DCL、DQL分别指的是什么?
l DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;
删除数据库:DROP DATABASE [IF EXISTS] mydb1;
修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8;
l DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
插入数据:INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2)
修改数据:UPDATE 表名 SET 列名1=值1, … 列名n=值n [WHERE 条件]
删除数据:DELETE FROM 表名 [WHERE 条件]
l DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
创建用户:CREATE USER 用户名@地址 IDENTIFIED BY '密码';
授权用户:GRANT 权限1, … , 权限n ON 数据库.* TO 用户名;
撤销授权:REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名;
查看权限:SHOW GRANTS FOR 用户名
删除用户:DROP USER 用户名
修改密码:USE mysql;
UPDATE USER SET PASSWORD=PASSWORD(‘密码’) WHERE User=’用户名’ and Host=’IP’;
FLUSH PRIVILEGES;
l DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果分组*/
LIMIT offset_start, row_count /*结果限定*/