CSDN话题挑战赛第2期
参赛话题:学习笔记
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?
博客x主页:不止于梦想 !
文章说明:MySql入门
✅系列专栏:数据库
本篇内容:navicat的使用和MySQL的DML(对所需知识点进行选择阅读呀~)
☕️每日一语:你坚持下来了,而别人坚持不下来,这就是你的资本。 ☕️
作者详情:作者是一名双非大三在校生,喜欢Java,欢迎大家探讨学习,喜欢的话请给博主一个三连鼓励。
在概述内容里,首先我们先设计一个表,然后才能对表中的数据进行增删改,本课程学习黑马视频。如有侵权,联系博主删除。
设计一个学生表student,学生表里的学生有姓名、id、年龄、性别、还有成绩,成绩还分为数学成绩和语文成绩。不用说,年龄是字符串,选择varchar、id选择int、年龄也选择int、性别也是int,1表示男生、0表示女生。成绩当然是选择double了,而且double的整数位有3位,小数位有一位,没谁见过98.55分的吧?或者135.55?
分析完成以后,我们来创建这个表
create table tbl_student(
id int,
name varchar(8),
age int(3),
sex int(1),
math double(4,1),
english double(4,1)
);
Column count doesn’t match value count at row 1:列计数与第1行的值计数不匹配
1.修改语句中如果不加条件,则将所有数据都修改!
2. 像上面的语句中的中括号,表示在写sql语句中可以省略这部分。
例如不加调价,还是使用我们上面的数据,把码运改为嘛晕,大家自己练习,我也自己练。
代码:update tbl_student set name=‘嘛晕’;
语法:SELECT 字段列表 FROM 表名;
查询所有字段:SELECT * FROM 表名;不过不建议使用 号,要查所有字段,就把所有字段打上。在以后工作中,有的公司是严令禁止使用号的。
这里演示一个两种方法,即*号和自己写所有字段名。
不知道有什么字段的可以使用desc查询表结构。
查询多个或者单个字段
上面的例子看到了各个name都是嘛晕,查询单个、多个字段肯定条件不能选择name了;我们看到age字段有不同的,选择查一下age=null,age=2的人。
注意到查询当age=null时候,显示为空,但是我们明明看到了有一个为null的,怎么回事呢?
查看资料大概是这样:在其它的语言中,逻辑表达式只有两种,要么是true,要么就是false。而sql中却存在第三个逻辑表达式UnKnown,这个是sql中特有的。从字面意思上我们可以解理该值的意思是:什么都不知道,就是什么都不是。一般情况下我们将任何值(包括NULL本身)与NULL做比较的时候,都会返回UnKnown。而在查询表达式中(比如where与having中),UnKnown会视为false。所以我们就明白了为什么select * from 表 where 字段=null查不到正确的结果的原因了。
(1)_ : 代表单个任意字符
(2)% : 代表任意个数字符
使用上面学过的知识,依次添加多个元数据(多个字段)。
insert into new_student values (1,‘嘛化疼’,3,1,50.5),(2,‘码运’,4,1,45.5),(3,‘铠甲勇士’,3,0,50.5);
为了锻炼自己,我们在把嘛化疼,改为码化疼。
update new_student set name=‘码化疼’ where name=‘嘛化疼’;
接下来进行模糊插叙,使用通配符_
% : 代表任意个数字符,相信大家也都可以理解这个了,简单解释一下就是‘%运’就是以运结尾,前面有什么数字不管,’%运%'表示只要包含了运即可,前后有什么不用管,什么只有运也行,'运%'表示以运开头就行,后面有什么也不用管。
使用命令order by
语法:SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
上述语句中的排序方式有两种,分别是:
ASC : 升序排列 (默认值)
DESC : 降序排列
举例:我们按照英语成绩给以上几位同学排序,默认是升序,那我们就整一个降序,叛逆期!!!!
select id,name,age,sex,english from new_student order by english desc;
可以看到已经排好了,但是码化疼同学的成绩跟铠甲勇士同学明明一样,为什么铠甲勇士在下面,铠甲勇士很不服。那怎么办,加个数学成绩呗,铠甲勇士同学数学好,次次90多,化疼不学好,次次不及格。给60
这里我自己练过了,大家自己动手操作,说明一下:大家也都看到了上面的排序查询是可以跟多个字段的,意思就是当第一个字段值相同时,又对两个相同的进行第二个字段方式的排序。
聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据。
常用的聚合函数:
count(col): 表示求指定列的总行数
max(col): 表示求指定列的最大值
min(col): 表示求指定列的最小值
sum(col): 表示求指定列的和
avg(col): 表示求指定列的平均值
语法:SELECT 聚合函数名(列名) FROM 表;
注意:注意:null 值不参与所有聚合函数运算
练习:
1、统计上面学生表中一共有多少个学生?
select count(id) from new_student;
当然了,也可以使用其他字段,比如name,但是要注意的是使用的字段不能有null的,null不参与运算,统计不了总人数。
2、查询学生中英语最高分?
select max(english) from new_student;
相应的就根据语法格式进行练习,主要是学会方法。
1、查询男同学和女同学各自的数学平均分。
select sex,avg(math) from stu group by sex;
2、查询男同学和女同学各自的数学平均分,以及各自人数。
select sex,avg(math),count(sex) from stu group by sex;
3、查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组。
select sex,avg(math),count(sex) from stu where math>70 group by sex ;
4、查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。显然这里没有人数大于2的,查询结果应该为空。
select sex,avg(math),count(sex) from stu where math>70 group by sex having count(*)>2;
couont(*)表示查询字段的总数。
where 和 having 区别:
执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
练习:
1、从0开始查询,查询3条数据
select * from stu limit 0,3;
2、每页显示3条数据,查询第2页数据
select * from stu limit 3,3;
从上面的练习推导出起始索引计算公式:
起始索引 = (当前页码 - 1) * 每页显示的条数
带颜色的是重点,标记出来了。多动手多实践。