面试的公司是个小公司,暂时不透露。
一.自我介绍
二.实习经历和项目了解
面试官针对我简历上写的东西进行提问,大家一定要重视简历上所写的东西啊,真的要好好熟悉简历
三.考察mysq语句
因为我面试的运用到mysql,数据库的很多,而且面试官也不是主要学Java的,所以专门针对mysql进行提问。
-
第一范式、第二范式和第三范式的定义:
- 第一范式:要求数据库表中的每个字段都是不可分割的原子值。
- 第二范式:2NF 在 1NF 的基础之上,消除了非主属性对于码的部分函数依赖。
- 第三范式:在第二范式的基础上,消除了非主属性对于码的传递函数依赖
-
数据库的分类有几种? 关系型数据库和非关系型数据库的区别:关系型数据库是基于关系模型的数据库,主要通过表格的形式来存储数据,使用SQL作为查询语言。而非关系型数据库是一种不遵循关系模型的数据库,通常使用键值对、列族、文档、图等数据结构来存储数据。 接触过的关系型数据库:MySQL,Oracle。 接触过的非关系型数据库:Redis。
-
SQL命令类型:包括DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)等。
- DDL:用于定义、更改或删除数据库结构,例如CREATE、ALTER、DROP等。
- DML:用于操作数据库中的数据,例如SELECT、INSERT、UPDATE、DELETE等。
- DCL:用于管理数据库访问权限和事务控制,例如GRANT、REVOKE、COMMIT、ROLLBACK等。
-
有多少种事务管理? 事务管理可以大致分为两种类型:本地事务和全局(或分布式)事务。 本地事务涉及单一资源,如数据库,而全局事务涉及多个资源,如多个数据库或其他外部系统。 事务管理:事务是数据库管理系统执行过程中的一个逻辑单位,由一条或多条SQL语句组成。事务具有原子性、一致性、隔离性和持久性(ACID)特性。
-
数据库的数据类型?
数值类型 (Numeric Types):
- 整数类型(Integer Types):TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
- 浮点数类型(Floating-Point Types):FLOAT, DOUBLE
- 定点数类型(Fixed-Point Types):DECIMAL, NUMERIC
日期和时间类型 (Date and Time Types):
- DATE, TIME, DATETIME, TIMESTAMP, YEAR
字符串类型 (String Types):
- CHAR, VARCHAR
- BINARY, VARBINARY
- TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
- TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
- ENUM, SET
空间数据类型 (Spatial Data Types):
- GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION
6. 多表查询方法有?
多表查询方式:INNER JOIN、OUTER JOIN(LEFT、RIGHT、FULL)、CROSS JOIN、UNION。
INNER JOIN:来自多个表的相关数据。 OUTER JOIN:来自一个表的数据,即使在另一个表中没有匹配项。 CROSS JOIN:所有可能的行组合。 UNION:合并来自不同表的类似结构化数据。
employees table:
| id | name | department_id |
|---|---|---|
| 1 | Alice | 1 |
| 2 | Bob | 1 |
| 3 | Charlie | 2 |
| 4 | Dave | NULL |
departments table:
| id | department_name |
|---|---|
| 1 | HR |
| 2 | IT |
| 3 | Finance |
- INNER JOIN:
sqlCopy code
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
Result:
| name | department_name |
|---|---|
| Alice | HR |
| Bob | HR |
| Charlie | IT |
- OUTER JOIN (LEFT JOIN):
sqlCopy code
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
Result:
| name | department_name |
|---|---|
| Alice | HR |
| Bob | HR |
| Charlie | IT |
| Dave | NULL |
- CROSS JOIN:
sqlCopy code
SELECT employees.name, departments.department_name
FROM employees
CROSS JOIN departments;
Result:
| name | department_name |
|---|---|
| Alice | HR |
| Alice | IT |
| Alice | Finance |
| Bob | HR |
| Bob | IT |
| Bob | Finance |
| ... | ... |
- UNION:
Let's assume there is another table named contractors with a similar structure to employees.
contractors table:
| id | name | department_id |
|---|---|---|
| 1 | Eve | 2 |
| 2 | Frank | 3 |
sqlCopy code
SELECT name FROM employees
UNION
SELECT name FROM contractors;
Result:
| name |
|---|
| Alice |
| Bob |
| Charlie |
| Dave |
| Eve |
| Frank |
-
有几种视图,用来干什么? 视图是表示存储的 SQL 查询结果的虚拟表。 有两种主要类型的视图:物化视图和非物化视图。 物化视图存储查询结果,而非物化视图不存储数据并在查询时从基表中检索数据。
-
MySQL存储过程? MySQL 存储过程是预编译的 SQL 块,可增强性能、安全性和可维护性。 使用CREATE PROCEDURE定义