MYSQL-增删查改CRUD
目录
🌿前言:
🌿增-C-Create-新增
🧊单行数据+全列插入
🍋🟩语法:
🍋🟩演示:
🧊指定列插入
🍋🟩语法:
🍋🟩演示:
🧊多行插入
🍋🟩语法:
🍋🟩演示:
🌿删-D-Delete-删除
🧊语法
🧊以下面这个表为例
🧊删除name为马克的数据行
🧊删除语文成绩倒数前3的数据行
🧊注意:delete语句不支持写入limit偏移量和limit offset
🍋🟩例如:编辑
🌿查-R-Retrieve-查询,检索
🧊全列查询
🍋🟩全列查询基础语法:
🍋🟩演示:
🧊指定列查询:
🍋🟩语法:
🍋🟩演示:
🍋🟩题1:查询字段为表达式
🔎演示:
🍋🟩题2:常量表达式
🔎演示1:
🔎演示2:
🍋🟩题3:计算每个同学的所有成绩
🔎演示:
🍋🟩为查询结果指定别名
🔎演示1:
🔎演示2:
🔎演示3
🔎演示4
🧊结果去重查询
🍋🟩错误示例:
🍋🟩对数学成绩进行去重查询
🔎演示:
🍋🟩对id和数学成绩进行去重
🔎演示:
🧊排序查询
🍋🟩语法
🍋🟩对语文成绩进行升序查询
🍋🟩对语文成绩进行降序查询
🍋🟩没有对语文成绩指定升序还是降序查询
🍋🟩使用表达式及别名进行排序
🔎计算总分,然后升序排序(使用表达式)
🔎计算总分,然后升序排序(使用别名)
🧊条件查询(where-SQL语句执行顺序)
🍋🟩使用where条件的语法
🍋🟩查询语文成绩<=90的学生
🍋🟩查询语文成绩<=英语成绩的学生(两个 列 | 字段 是可以比较的)
🍋🟩查询总分在200以下的学生
🧊模糊查询
🍋🟩演示1:
🍋🟩总演示:
🧊分页查询
🍋🟩语法1:
🍋🟩语法2:
🍋🟩一般写法
🍋🟩偏移量也可以不写,默认就是0
🍋🟩使用offset关键字
🌿改-U-Update-更新
🧊语法:
🧊演示:
🍋🟩将白月魁的数学成绩改成100(原先是90分)
🍋🟩将数学成绩为85的学生都改成数学成绩为100
🍋🟩要改动的数据行,不只是改一列,而是要改动多列的数据
🌿运算符
🧊依据此下表:
🧊演示:
🍋🟩and
🍋🟩or
🍋🟩not(取反的意思)
🍋🟩注意点:
🧊拓展
🍋🟩如果我们要在一个区间进行查询呢?
🔎演示1:
🔎演示2:
🍋🟩可如果我们要查询的是某个成绩刚好是多少分的同学呢?
🔎演示:
🌿前言:
这是一篇对我而言比较重要的文章,因为刚入职的程序员大多数都是做这些CRUD的,我会用些简白的话来讲好这里的知识点,也方便我日后回顾吧
为了能更直白的讲解这些语法,我创建了一个学生表,CRUD的相关操作都依靠此表进行!
🌿增-C-Create-新增
🧊单行数据+全列插入
🍋🟩语法:
insert into 表名(字段1,字段2,字段3~~~) values(数值1,数值2,数值3~~~)
也可以省略写成
insert into 表名 values(数值1,数值2,数值3~~~)
🍋🟩演示:
🧊指定列插入
🍋🟩语法:
insert into 表名(任意一个字段) values(与任意字段相对应的值)
注意:只写任意个字段,其他没写的字段对应的数值就会为NULL
🍋🟩演示:
🧊多行插入
🍋🟩语法:
insert into 表名(字段1,字段2,字段3~~~) values(数值1,数值2,数值3~~~),(数值1,数值2,数值3~~~),(数值1,数值2,数值3~~~)~~~~~
🍋🟩演示:
🌿删-D-Delete-删除
🧊语法
delete from 表名 where 条件 order by 列 asc | desc limit(偏移量,要查询几条)
删除操作较为简单,我就举上2个例子吧
🧊以下面这个表为例
🧊删除name为马克的数据行
🧊删除语文成绩倒数前3的数据行
🧊注意:delete语句不支持写入limit偏移量和limit offset
🍋🟩例如:
大家需要注意下,select语句支持写入limit偏移量和limit offset,而delete语句不支持!!
🌿查-R-Retrieve-查询,检索
🧊全列查询
🍋🟩全列查询基础语法:
select * from 表名
🍋🟩演示:
🧊指定列查询:
🍋🟩语法:
select 字段1,字段2~~~ from 表名
🍋🟩演示:
🍋🟩题1:查询字段为表达式
把所有学生的语文成绩+10
🔎演示:
🍋🟩题2:常量表达式
🔎演示1:
🔎演示2:
🍋🟩题3:计算每个同学的所有成绩
🔎演示:
注意:NULL与任何数运算都为NULL
🍋🟩为查询结果指定别名
🔎演示1:
🔎演示2:
🔎演示3
🔎演示4
🧊结果去重查询
🍋🟩错误示例:
这个我想的先查id,name,然后再对数学进行去重查询,然后这个SQL语法报错,说明这样不行,也就是正常查寻和去重查询不能放在一个语句里,会报错,这点须注意下
🍋🟩对数学成绩进行去重查询
🔎演示:
按照先后顺序来,后面的就给去重了,那么我们要思考下,如果有两个甚至是N个相同的呢,是只去重一个,还是N个呢?
所以我故意插入了数学成绩为90的
这是整体的数据
然后我们对数学进行去重查询时,发现,两个相同的都不见了
这说明当我们去重某个字段时,如果有N个对的数相同(也就是2N个数里两两相同),就会去重N个数,保留唯一的N数据
🍋🟩对id和数学成绩进行去重
🔎演示:
我们发现,这些数据一条都没去重,这是因为我们指定了id和math的去重,就规定了他们都要相同才能符合去重的语法!!
🧊排序查询
🍋🟩语法
select * from 表名 order by 要排序的列 asc(升序) | desc(降序)
这里也可以不要 * ,看你自己想查询出来后咋样显示,我这里是显示整张表
那个要排序的列,无论是升序还是降序,都会对那条整个行进行排序上的影响,但不影响真实数据
🍋🟩对语文成绩进行升序查询
🍋🟩对语文成绩进行降序查询
🍋🟩没有对语文成绩指定升序还是降序查询
如果没有对语文成绩指定升序还是降序查询,SQL语法默认升序查询
🍋🟩使用表达式及别名进行排序
🔎计算总分,然后升序排序(使用表达式)
演示:
🔎计算总分,然后升序排序(使用别名)
演示:
再次提醒,NULL和任何数值运算都为NULL
🧊条件查询(where-SQL语句执行顺序)
🍋🟩使用where条件的语法
select * from 表名 where 列名|表达式 运算符 条件
🍋🟩查询语文成绩<=90的学生
🍋🟩查询语文成绩<=英语成绩的学生(两个 列 | 字段 是可以比较的)
🍋🟩查询总分在200以下的学生
如果我们想使用别名呢,
我们发现,明明我们已经起了个别名,为啥错了?其实这是因为SQL语句执行的顺序
为啥这个没报错???
好吧,SQL语句的执行顺序是这样的
1.先执行from,确定好表
2.执行where子句,过滤不符合条件的
3.执行select和from之间的子句
4.执行order by 子句
那么我们回到上面的这个语句
SQL语句执行顺序在这个语句的执行顺序
首先确定好了一个student的表,然后执行where子句的条件,可是total是谁?SQL语句不知道,因为需要执行完这个才执行select和from子句,而我们初始化别名就是在这一步,就是这个道理,
就相当于,一个陌生人叫你的名字并让你免费给他一笔大的钱数,你会理他吗?是不是不会,这个也是同样的道理,SQL语句忽然发现有个total的陌生人,他就得报错!
🧊模糊查询
% 和 _
% 表示任意,一个 _ 表示一个字符
🍋🟩演示1:
不管用哪个,已知的字符不是最左边就得是最右边
我这里想查找白月魁这个学生,可是“月”不是最边上的字符,所以查不到,为空
🍋🟩总演示:
🧊分页查询
🍋🟩语法1:
select 列名 from 表名 where 条件 order by 列 {升序asc|降序desc} limit 偏移量,显示条数;
🍋🟩语法2:
select 列名 from 表名 where 条件 order by 列 {升序asc|降序desc} limit 显示条数 offset偏移量;
🍋🟩一般写法
🍋🟩偏移量也可以不写,默认就是0
🍋🟩使用offset关键字
🌿改-U-Update-更新
修改(更新)和查询的语法不同,需要重点记忆
🧊语法:
update 表名 set 要改的列(像math=90) where条件等等
🧊演示:
🍋🟩将白月魁的数学成绩改成100(原先是90分)
🍋🟩将数学成绩为85的学生都改成数学成绩为100
这样所以数学成绩为85的学生都改成数学成绩为100了,
所以update set这个语句不只是改动一条数据行,可以改动任何数量的符合条件的数据行
🍋🟩要改动的数据行,不只是改一列,而是要改动多列的数据
中间加个 ,符号就行
🌿运算符
🧊依据此下表:
🧊演示:
🍋🟩and
🍋🟩or
🍋🟩not(取反的意思)
🍋🟩注意点:
优先级: not > and > or
🧊拓展
🍋🟩如果我们要在一个区间进行查询呢?
比如要在数学成绩在80<=X<=90的区间查询(between配合运算符)
🔎演示1:
注意这个左右都是闭区间!!!
🔎演示2:
🍋🟩可如果我们要查询的是某个成绩刚好是多少分的同学呢?
比如,要查询数学成绩刚好是72,78,85的学生
🔎演示:
完结!!!