首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
在考古的菜鸡很热情
门头沟学院 计算机类
发布于陕西
关注
已关注
取消关注
@Chowley:
「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
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
在迎接offer的秋招侠很勇敢
昨天 15:15
售后专员
不建议大学找实习的时候去当店员
我之前在无印良品店干过店员,每天都要不停地叠衣服、理货和补货,工作节奏很快,每天都感觉很累,没有停歇的时候。个人觉得找份更好的实习或家教工作,都比去当店员要好
点赞
评论
收藏
转发
歪歪叽叽
04-08 16:55
门头沟学院 计算机类
26届cpp日常实习,简历求指点(交流
投票
1,emm...打算4月中旬开始投,一直投到 6 月中旬2,用脚本海投,先来个几百份(BOSS每天最多100份好像),实力不行,只能海投了(项目,算法,基础都马马虎虎,还在准备中,简历上写的只能手撕出部分(单例,观察者,部分算法),还有些以前学过的,忘得七七八八了,比如一些算法,还有Mysql或者计网的一些知识;八股才开始背)3,有没有同样 cpp 的交流下,C++方向都打算投,不局限于后台后端之类的4,之前本来想做 muduo 的,书刚开始看,但是这半个月先好好补一下简历的知识,做做 hot 100,刷下 sql 之类的。5,或者做 3 个好点的 QT 小项目;还花几天了解了下 ospp,但是排序估计会挂6,现在最大的目标就是找个日常实习,如果一直到6月初都没找到,就 all in 开源或者muduo + QT + 分布式之类的了7,然后找了60~80家大中厂官网链接,有心仪的岗位,打算去官网再投一遍;最后就是各种内推8,项目方面,花了 100 小时,最近在背webserver八股,可能被拷打个半小时不是问题(也许....)#实习##C++##简历##广州##深圳##实习,投递多份简历没人回复怎么办##我的上岸简历长这样#
实习,投递多份简历没人回复怎么办
我的上岸简历长这样
点赞
评论
收藏
转发
随便找个班混日子
05-09 00:54
已编辑
前端工程师
唉,时代变了
#前端开发#前端#
点赞
评论
收藏
转发
此生不换
05-13 11:26
网易_SA
网易内推 网易互娱内推
网易游戏(互娱)2025届实习生培养项目启动啦!召唤各路游戏热爱者们速速加入,和我们一起创无界,造未来!1000+offer,机会多多!不能补填内推码,一定要在投递完成前填写内推码!!!今年互娱招聘新玩法:无秋招,实习转正直接拿秋招offer,一定不要错过实习!!!内推码:fG6Tsg内推码:fG6Tsg内推码:fG6Tsg毕业时间:2024年9月-2025年8月(中国大陆地区以毕业证时间为准,非中国大陆地区以学位证时间为准)投递地址:https://game.campus.163.com/position【项目亮点】★打破常规校招模式,全年畅享实习实习期窗口全年开放,从今年7月开始可任意选择...
投递网易等公司8个岗位 >
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
5.16校招&实习招聘信息汇总
8585
2
...
给25届同学: 永远相信美好的事情即将发生
6436
3
...
送花给牛友,不做“白嫖党”!牛客互动新功能上线啦!
6347
4
...
阿里oc
6258
5
...
CS硕 只看40w+且965 能投啥
5447
6
...
腾讯一面凉经 5.16
5376
7
...
二本漫漫求职路......
3713
8
...
为什么选择做测试开发
3511
9
...
虎哥の致谢
3265
10
...
C++菜鸡的暑期实习总结(待补充)
3188
正在热议
#
牛客帮帮团来啦!有问必答
#
753171次浏览
11980人参与
#
海康威视求职进展汇总
#
94925次浏览
1144人参与
#
你的工作大概什么时候入职?
#
2923次浏览
40人参与
#
非技术2024笔面经
#
181050次浏览
3045人参与
#
非技术岗是怎么找实习的
#
75910次浏览
1416人参与
#
产品实习,你更倾向大公司or小公司
#
37541次浏览
579人参与
#
面试等了一周没回复,还有戏吗
#
41274次浏览
502人参与
#
春招已经启动啦 硬件uu开始投了吗?
#
86366次浏览
676人参与
#
今年形式下双非本找得到工作吗
#
7601次浏览
161人参与
#
如何看待offer收割机的行为
#
226145次浏览
3269人参与
#
百度工作体验
#
23942次浏览
246人参与
#
2022届毕业生现状
#
321148次浏览
4447人参与
#
学历对求职的影响
#
134721次浏览
1536人参与
#
0offer是寒冬太冷还是我太菜
#
418072次浏览
4841人参与
#
铜五铁六真的存在吗?
#
29168次浏览
302人参与
#
想实习转正,又想准备秋招,我该怎么办
#
112082次浏览
1258人参与
#
通信硬件人笔面经互助
#
115745次浏览
2297人参与
#
荣耀求职进展汇总
#
66718次浏览
672人参与
#
正在春招的你,也参与了去年秋招吗?
#
134461次浏览
1696人参与
#
你的秋招进行到哪一步了
#
359632次浏览
6318人参与
牛客网
牛客企业服务