首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
在考古的菜鸡很热情
门头沟学院 测试工程师
发布于陕西
关注
已关注
取消关注
@已注销:
「QALog」校招测试八股—数据库(一)
哈喽大家好,我是Chowley,QALog创始人,测试开发工程师,我又来开坑了~本篇是《「QALog」校招测试八股—数据库》系列的第一篇,春招高峰期,给大家带来一些数据库的高频考点!下面是本期目录:Q1:关系型数据库是啥意思?除了MySQL还有哪些?关系型数据库是一种以表格(关系)的形式来组织和存储数据的数据库系统。在关系型数据库中,数据以行和列的形式存储在表中,每一行表示一个记录,每一列表示一个字段。表之间可以通过关系(键)进行关联,从而建立起复杂的数据模型。关系型数据库具有以下特点:结构化数据存储:数据以表格形式存储,每个表具有固定的结构,包含预定义的列和数据类型。数据完整性:关系型数据库支持主键、外键等约束,保证数据的完整性和一致性。事务支持:支持事务管理,保证数据操作的原子性、一致性、隔离性和持久性(ACID 属性)。SQL 查询:通过结构化查询语言(SQL)进行数据查询和操作,具有强大的查询能力。可扩展性:支持水平和垂直扩展,能够处理大规模数据存储和访问。关系型数据库的代表产品包括 MySQL、Oracle Database、Microsoft SQL Server、PostgreSQL 等,用于存储和管理结构化数据。Q2:说一下MySQL的CRUD关键字在 MySQL 中,CRUD 是指数据库操作的四种基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在 SQL 中,这些操作对应着以下关键字:CREATE:用于创建数据库或表。创建数据库:CREATE DATABASE database_name;创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);READ(SELECT):用于从数据库中检索数据。查询所有数据:SELECT * FROM table_name;查询特定数据:SELECT column1, column2 FROM table_name WHERE condition;UPDATE:用于更新数据库中的数据。更新数据:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;DELETE:用于从数据库中删除数据。删除数据:DELETE FROM table_name WHERE condition;这些关键字是 MySQL 中进行数据操作时经常使用的关键字,能够实现对数据的增删改查等基本操作。Q3:MySQL有哪些字段?MySQL 支持多种数据类型,常见的字段类型包括以下几种:整数类型:TINYINT:1 字节,范围 -128 到 127(有符号)或 0 到 255(无符号)。SMALLINT:2 字节,范围 -32768 到 32767(有符号)或 0 到 65535(无符号)。INT:4 字节,范围 -2147483648 到 2147483647(有符号)或 0 到 4294967295(无符号)。浮点数类型:FLOAT:4 字节,单精度浮点数。DOUBLE:8 字节,双精度浮点数。定点数类型:DECIMAL:取决于精度,用于存储精确的小数。字符串类型:CHAR:固定长度字符串,最多 255 字节。VARCHAR:可变长度字符串,最多 65535 字节。TEXT:可变长度文本,最多 65535 字节。日期和时间类型:DATE:日期,格式为 'YYYY-MM-DD'。TIME:时间,格式为 'HH:MM:SS'。DATETIME:日期和时间,格式为 'YYYY-MM-DD HH:MM:SS'。TIMESTAMP:时间戳,存储从 1970 年 1 月 1 日至今的秒数。这些是 MySQL 中常用的字段类型,每种类型都有其特定的用途和存储特性。在设计数据库表时,根据实际需求选择合适的字段类型能够提高数据存储的效率和准确性。Q4:CHAR和VARCHAR有什么区别?CHAR 和 VARCHAR 是 MySQL 中常用的字符串类型,它们之间的主要区别在于存储方式和存储空间的利用效率:存储方式:CHAR:固定长度字符串,如果存储的字符串长度不足,会使用空格进行填充,占用固定的存储空间。VARCHAR:可变长度字符串,只占用实际存储的字符串长度加上一两个字节的存储空间来记录字符串的长度。存储空间利用效率:CHAR:由于是固定长度,如果存储的字符串长度较短,则会造成存储空间的浪费。VARCHAR:由于是可变长度,可以根据实际存储的字符串长度灵活分配存储空间,节省存储空间。适用场景:CHAR 适合存储长度固定的字符串,如固定长度的代码、状态等。VARCHAR 适合存储长度不固定的字符串,如姓名、地址等。索引效率:CHAR 类型的字段在进行索引时,由于固定长度的特性,比较起来更快。VARCHAR 类型的字段在进行索引时,需要额外的存储空间来记录长度,可能会影响索引效率。综上所述,CHAR 和 VARCHAR 在存储方式和存储空间利用效率上有所区别,根据实际需求选择合适的类型能够更好地利用存储空间并提高存储效率。Q5:count(*)和count(1)呢?在 SQL 查询中,COUNT(*) 和 COUNT(1) 都是用来统计表中行数(记录数)的函数,但它们的实现方式略有不同:COUNT(*) :COUNT(*) 会统计表中所有行的数量,包括 NULL 值。COUNT(1) :COUNT(1) 实际上并不会对表中的数据进行计算,而是对每一行返回一个固定值(1),然后统计这些固定值的数量,因此 COUNT(1) 的性能可能会略优于 COUNT(*)。在实际使用中,推荐使用 COUNT(1),因为它在某些数据库中的优化效果更好。插播一条广告:我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理、团队效率提高内容感兴趣,可以关注我和此专栏。广告结束,拷打继续!Q6:联合查询学过吗?介绍几个联合关键字联合查询(Union Query)是指将多个查询的结果合并成一个结果集的操作。它的原理是将多个查询的结果按照相同的列结构进行合并,生成一个包含所有查询结果的新结果集。联合查询的特点包括:列数和列类型必须一致:多个查询的结果集必须具有相同的列数和相同或兼容的列类型。结果集中不包含重复的行:联合查询会自动去除重复的行,如果需要包含重复的行,可以使用 UNION ALL 操作符。按顺序合并结果:多个查询的结果按照出现的顺序依次合并到最终的结果集中。结果集中的列名由第一个查询决定:联合查询的结果集中的列名由第一个查询的列名决定,后续查询的列名会被忽略。联合查询可以帮助我们将多个查询的结果整合在一起,方便进行数据分析和比较。常见的联合查询包括以下几种类型:INNER JOIN(内连接、交集):返回两个表中满足连接条件的行。SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;LEFT JOIN(左连接):返回左表中所有行,以及右表中满足连接条件的行。SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column;RIGHT JOIN(右连接):返回右表中所有行,以及左表中满足连接条件的行。SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;FULL JOIN(全连接):返回左表和右表中所有行,如果某行在其中一个表中没有匹配行,则另一个表中对应的列为 NULL。SELECT * FROM table1 FULL JOIN table2 ON table1.column = table2.column;CROSS JOIN(交叉连接):返回两个表的笛卡尔积,即两个表中所有可能的组合。SELECT * FROM table1 CROSS JOIN table2;通过联合查询,可以根据不同的需求组合多个表中的数据,实现灵活的数据查询和分析。Q7:inner join和left join有啥区别?INNER JOIN 和 LEFT JOIN 是 SQL 中常用的两种连接(Join)操作,它们之间的区别在于连接的方式和结果集中包含的数据:INNER JOIN:INNER JOIN 是一种内连接操作,它会返回两个表中符合连接条件的行,即只返回两个表中共有的数据。如果左表(A表)中的某行在右表(B表)中找不到匹配的行,则这些行不会出现在结果中。LEFT JOIN:LEFT JOIN 是一种左连接操作,它会返回左表(A表)中的所有行,以及右表(B表)中与左表匹配的行。如果右表中没有匹配的行,则会在结果中以 NULL 值显示。在选择使用 INNER JOIN 还是 LEFT JOIN 时,需要根据实际需求来确定:如果希望只获取两个表中共有的数据,则使用 INNER JOIN。如果希望获取左表中的所有数据,并且与右表匹配的数据(如果有)则使用 LEFT JOIN。Q8:where和having呢?WHERE 和 HAVING 是 SQL 中用于过滤数据的两个关键字,它们之间有以下区别:作用对象:WHERE:用于过滤行数据,作用在 SELECT、UPDATE、DELETE 语句中,用于筛选符合条件的行。HAVING:用于过滤分组后的结果,作用在 SELECT 语句中的 GROUP BY 子句之后,用于筛选分组后的结果。使用条件:WHERE:通常用于过滤行数据,可以使用各种条件进行过滤,如等于、大于、小于、逻辑与或非等。HAVING:通常用于对分组后的结果进行过滤,可以使用聚合函数进行条件过滤,如求和、平均值、最大值等。使用场景:WHERE 适用于对行级数据进行筛选,如筛选出工资大于 5000 的员工信息。HAVING 适用于对分组后的结果进行筛选,如筛选出平均工资大于 5000 的部门。-- 使用 WHERE 进行行级筛选 SELECT * FROM employees WHERE salary > 5000; -- 使用 HAVING 对分组后的结果进行筛选 SELECT department_id, AVG(salary) as avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 5000;Q9: 多对多的关系中,怎么做数据库结构设计在多对多的关系中,通常需要使用一个中间表(关联表)来表示两个实体之间的关系。例如,假设有学生和课程两个实体,一个学生可以选择多门课程,一门课程也可以被多个学生选择,这种关系就是多对多关系。在数据库结构设计中,可以使用以下步骤来设计多对多关系的结构:确定实体:首先确定需要建模的实体,例如学生和课程。创建实体表:为每个实体创建一个表,表中包含实体的属性。例如,创建学生表(students)和课程表(courses)。创建中间表:创建一个中间表来表示两个实体之间的多对多关系。该表通常包含两个外键,分别指向两个实体表的主键。例如,创建一个选课表(enrollments),包含学生ID和课程ID作为外键。建立外键约束:在中间表中,将学生ID和课程ID设置为外键,分别关联到学生表和课程表的主键。插入数据:向实体表和中间表中插入数据,表示学生、课程以及学生选修的课程关系。查询数据:通过联合查询实体表和中间表,可以获取学生选修的课程以及课程被哪些学生选修的信息。例如,在一个简化的多对多关系中,可以按照以下方式设计表结构:CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(50));CREATE TABLE courses ( course_id INT PRIMARY KEY, course_name VARCHAR(50));CREATE TABLE enrollments ( student_id INT, course_id INT, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (course_id) REFERENCES courses(course_id));在这个设计中,students 表存储学生信息,courses 表存储课程信息,enrollments 表存储学生选修课程的关系。Q10:MySQL能存储文件吗?怎么存储?MySQL 可以存储文件,通常使用 BLOB(Binary Large Object)类型来存储二进制文件数据。BLOB 类型可以存储大容量的二进制数据,包括图像、音频、视频、文档等。在 MySQL 中,常用的 BLOB 类型包括以下几种:TINYBLOB:最大长度为 255 个字节。BLOB:最大长度为 65,535 个字节。MEDIUMBLOB:最大长度为 16,777,215 个字节。LONGBLOB:最大长度为 4,294,967,295 个字节。要在 MySQL 中存储文件,可以创建一个表,其中包含一个 BLOB 类型的列,用于存储文件的二进制数据。例如,创建一个存储图片的表:CREATE TABLE images ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), data LONGBLOB );然后,可以使用 INSERT 语句将文件的二进制数据插入到表中:INSERT INTO images (name, data) VALUES ('example.jpg', LOAD_FILE('/path/to/example.jpg'));其中,LOAD_FILE 函数用于将文件加载到数据库中。要注意的是,为了安全起见,应该对插入文件的操作进行适当的权限控制和数据验证。总结本篇内容中,我串联了关系型数据库MySQL的重点内容,包括字段类型、关键字功能、联合方法的区别等知识点。掌握这十个常考八股有助于您在面试、笔试中大纱四方(doge)如果您觉得写得还不错,欢迎关注《QALog校招测试八股—数据库》系列,后面会持续更新!以上就是本文的全部内容,如有问题可留言讨论或分享给您的朋友一起学习!我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理、团队效率提高内容感兴趣,可以关注我和此专栏。欢迎点赞、评论、收藏,it's important for me.Searching for QALog
点赞 6
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
02-26 18:27
蚌埠坦克学院 嵌入式软件开发
最讨厌面试被问私人的事情
面试本该是展示能力的机会,可有些问题让我无比反感:你恋爱了吗?打算什么时候结婚?家里经济情况如何?这些问题和工作能力毫无关系,却让人尴尬又无所适从。能力可以通过作品、项目、沟通表现出来,为什么要去触碰隐私?我觉得,尊重候选人,就是尊重能力本身。希望更多面试官能记住:工作能力才是面试的唯一主角。
你最讨厌面试被问什么
点赞
评论
收藏
分享
02-26 12:07
沈阳航空航天大学 C++
麻烦各位帮忙看看简历应该怎么修改
我现在是大四了,正在找工作,没什么经验,不知道简历这样可以不,听说年后的工作比较好找,但是投出去的简历都没有回应,麻烦好心的哥哥姐姐指点指点
你的简历改到第几版了
点赞
评论
收藏
分享
02-27 17:20
湖南涉外经济学院 软件测试
目前简历找不到春招怎么办
点赞
评论
收藏
分享
03-01 10:04
江西农业大学 Java
我的简历这么差吗😭😭😭
备战考研结果直接下岸,现在赶着来春招,结果简历投出去就石沉大海,大家能帮我看看,给我点修改经验吗😭😭😭
你的简历改到第几版了
点赞
评论
收藏
分享
03-03 08:34
蚌埠坦克学院 嵌入式软件开发
联想嵌入式软件开发 一面 面经(常规问题居多)
1.自我介绍面试官好,我是[姓名],[学校][专业][年级]。我的技术方向是嵌入式开发,主要使用C++。技术栈方面,我熟悉C++语言特性、STL容器、多线程编程,了解Linux系统和嵌入式开发。有实际的项目经验,做过智能系统开发,涉及到模型部署、性能优化等工作。我对嵌入式开发很感兴趣,特别是资源受限环境下的软件优化。联想在PC和智能设备领域有很强的技术实力,希望能加入贵公司,在嵌入式方向深入发展。2.说说C++中的多态,静态多态和动态多态有什么区别?多态是面向对象的重要特性,指同一个接口可以有不同的实现方式。C++中有两种多态:静态多态和动态多态。静态多态是编译期确定的,主要通过函数重载和模板...
嵌入式面试八股文全集
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我做过的,被面试官夸爆的那些Ai项目(一)
1.5W
2
...
AI岗面试必问,附上我的回答思路
9728
3
...
暑期实习 字节三面
9620
4
...
我做过的,被面试官夸爆的那些Ai项目(二)
8802
5
...
3.2字节AI开发春招一面
6944
6
...
腾讯一面面经
6241
7
...
面试官问“RAG各模块的优化策略有哪些”,怎么回答?
5962
8
...
京东一面面经
4564
9
...
腾讯提前批一面面经(挑战全网最晚hhh,热乎的~)
3927
10
...
腾讯 一面
3120
创作者周榜
更多
正在热议
更多
#
实习生至暗时刻
#
6903次浏览
128人参与
#
AI求职记录
#
3125次浏览
138人参与
#
神州信息求职进展汇总
#
2253次浏览
47人参与
#
交出你的校招焚诀
#
2405次浏览
53人参与
#
你见过最离谱的招聘要求是什么?
#
260764次浏览
1758人参与
#
面试___岗的必刷题单
#
3937次浏览
68人参与
#
通信和硬件还有转码的必要吗
#
92896次浏览
603人参与
#
机械制造薪资爆料
#
1950822次浏览
11058人参与
#
AI面试问题分享
#
6200次浏览
138人参与
#
哪些公司开暑期实习了?
#
7317次浏览
59人参与
#
三月的小目标
#
4172次浏览
83人参与
#
春招开局,你有保底offer吗?
#
11259次浏览
118人参与
#
实习生的生存小技巧
#
3427次浏览
78人参与
#
你经历过哪些AI幻觉?
#
2376次浏览
49人参与
#
小厂一定不能去吗?
#
12834次浏览
125人参与
#
找AI工作应该卷什么?
#
1583次浏览
37人参与
#
薪资爆料
#
387836次浏览
2159人参与
#
面试时间长是好事吗?
#
129736次浏览
742人参与
#
参加哪些竞赛对找工作有帮助?
#
31343次浏览
234人参与
#
你今年的保底offer是哪家
#
172202次浏览
722人参与
#
十二月请对我好一点
#
84771次浏览
688人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务