Java Web 学习笔记(一) —— MySQL(1,2024年最新字节跳动大数据开发岗经典面试真题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

方式二:基于查询结果创建一张新表

CREATE TABLE emp
AS
SELECT first_name,salary
FROM myemployees.employees; #库名.表名

方式三:基于现有的表结构创建一张新表(表中没有内容)

CREATE TABLE [IF NOT EXISTS] 表名 LIKE 库名.表名;

CREATE TABLE emp LIKE myemployees.employees;

  1. 删除表
DROP TABLE [IF EXISTS] 表名;

  1. 修改表的名字
ALTER TABLE 原表名 RENAME TO 新表名;

  1. 向表中添加列
ALTER TABLE 表名 ADD 列名 列的数据类型;

  1. 修改某一列的数据类型
ALTER TABLE 表名 MODIFY 列名 新的数据类型;

  1. 修改表中列名和数据类型
ALTER TABLE 表名 CHANGE 原列名 新列名 新列的数据类型;

  1. 删除表中的某一列
ALTER TABLE 表名 DROP 列名;

4 DML

DML 对表中的数据进行增、删、改

4.1 添加数据

  1. 给指定列添加数据
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);

  1. 给全部列添加数据(添加单行数据)
INSERT INTO 表名 VALUES(值1,值2,…);

  1. 批量添加数据
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;

注意:

  • 查询的字段的类型和个数要和被插入的字段的类型和个数保持一致
  • 如果插入的是全字段那么可以省略表名后的字段名,但实际开发时不建议

4.2 修改数据

修改表数据

UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件];

修改语句中如果不加条件,则将所有数据都修改!

4.3 删除数据

删除数据

DELETE FROM 表名 [WHERE 条件] ;

删除语句中如果不加条件,则将所有数据都删除!

5 DQL

DML 对表中的数据进行查询

查询的完整语法

SELECT 
    字段列表
FROM 
    表名列表 
WHERE 
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定

已存在 stu 表如下

在这里插入图片描述

5.1 基础查询

  1. 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT \* FROM 表名; -- 查询所有数据

  1. 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

  1. 起别名
AS 

举例

SELECT name as 姓名,math as 数学成绩 FROM stu;
SELECT name 姓名,math 数学成绩 FROM stu; -- AS也可以省略

5.2 条件查询

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件列表可以使用以下运算符

在这里插入图片描述
示例代码

-- 1. 查询年龄大于20岁的学员信息
select \* from stu where age > 20;

-- 2. 查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
-- && 和 and 都表示并且的意思。建议使用 and 
-- 也可以使用 between ... and 来实现该需求
select \* from stu where age >= 20 &&  age <= 30;
select \* from stu where age >= 20 and  age <= 30;
select \* from stu where age BETWEEN 20 and 30;

-- 3. 查询入学日期在'1998-09-01' 到 '1999-09-01' (日期类型)之间的学员信息
select \* from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';

-- 4. 查询年龄等于18岁的学员信息
-- 注意不能使用==
select \* from stu where age = 18;

-- 5. 查询年龄不等于18岁的学员信息
select \* from stu where age != 18;
select \* from stu where age <> 18;

-- 6. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select \* from stu where age = 18 or age = 20 or age = 22;
select \* from stu where age in (18,20 ,22);

-- 7. 查询英语成绩为(不为) null的学员信息
-- null值的比较不能使用 = 或者 != ,需要使用 is 或者 is not
-- select \* from stu where english = null; -- 这个语句是不行的
select \* from stu where english is null;
select \* from stu where english is not null;

模糊查询 使用 like关键字,可以使用通配符进行占位:

  • _ : 代表单个任意字符
  • % : 代表多个任意字符
  • \:转义字符
  • escape:指定转义字符

示例代码

-- 1. 查询姓'马'的学员信息
select \* from stu where name like '马%';

-- 2. 查询第二个字是'花'的学员信息 
select \* from stu where name like '\_花%';

-- 3. 查询名字中包含 '德' 的学员信息
select \* from stu where name like '%德%';

5.3 排序查询

SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;

上述语句中的排序方式有两种,分别是:

  • ASC : 升序排列 (默认值)
  • DESC : 降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

示例代码

-- 1. 查询学生信息,按照年龄升序排列 
select \* from stu order by age asc;
select \* from stu order by age ; -- asc可省略

-- 2. 查询学生信息,按照数学成绩降序排列
select \* from stu order by math desc ;

-- 3. 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
select \* from stu order by math desc , english asc ;
select \* from stu order by math desc , english;

5.4 聚合查询

聚合:将一列数据作为一个整体,进行纵向计算。

SELECT 聚合函数名(列名) FROM 表;

聚合函数分类

在这里插入图片描述

注意:null 值不参与所有聚合函数运算

示例代码

-- 1. 统计班级一共有多少个学生
select count(\*) from stu;
select count(id) from stu; -- 8 
select count(english) from stu; -- 7,有一个学生的英语成绩为null
/\*
上面语句根据某个字段进行统计,如果该字段某一行的值为null的话,将不会被统计。
所以count()里面的字段一般取主键或者\*,
其中count(\*)表示一行中只有有一个字段不为null,就会被统计。
\*/

-- 2. 查询数学成绩的最高分
select max(math) from stu;

-- 3. 查询数学成绩的最低分
select min(math) from stu;

-- 4. 查询数学成绩的总分
select sum(math) from stu;

-- 5. 查询数学成绩的平均分
select avg(math) from stu;

-- 6. 查询英语成绩的最低分
select min(english) from stu; -- 不统计null

5.5 分组查询

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

示例代码

-- 1. 查询男同学和女同学各自的数学平均分
-- 分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
select sex, avg(math) from stu group by sex;

-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数
select sex, avg(math),count(\*) from stu group by sex;

-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
select sex, avg(math),count(\*) from stu where math > 70 group by sex;

-- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2
select sex, avg(math),count(\*) from stu where math > 70 group by sex having count(\*)  > 2;

注意:

  • 分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
  • where 和 having 区别:
    • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
    • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
  • 执行顺序:where>聚合函数>having

5.6 分页查询

大家在很多网站都见过分页的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用户也可以通过点击查看下一页的数据。

SELECT 字段列表 FROM 表名 LIMIT  起始索引, 查询条目数;

注意: 上述语句中的起始索引是从0开始,是针对数据条目

示例代码

-- 1. 从0开始查询,查询3条数据
select \* from stu limit 0 , 3;

-- 2. 每页显示3条数据,查询第1页数据
select \* from stu limit 0 , 3;

-- 3. 每页显示3条数据,查询第2页数据
select \* from stu limit 3 , 3;

-- 4. 每页显示3条数据,查询第3页数据
select \* from stu limit 6 , 3;

从上面的练习推导出起始索引计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

-- 1. 从0开始查询,查询3条数据
select \* from stu limit 0 , 3;

-- 2. 每页显示3条数据,查询第1页数据
select \* from stu limit 0 , 3;

-- 3. 每页显示3条数据,查询第2页数据
select \* from stu limit 3 , 3;

-- 4. 每页显示3条数据,查询第3页数据
select \* from stu limit 6 , 3;

从上面的练习推导出起始索引计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-WNPSFRs1-1713299424670)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值