前言👀~
上一章我们介绍了数据库的一些基础操作,关于如何去创建一个数据库,还有使用数据库,删
除数据库以及对表进行的一些基础操作,今天我们学习CRUD操作 俗称(增删改查)
如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,如果内容有什么问题的话,欢迎各位评论纠正 🤞🤞🤞
个人主页:N_0050-CSDN博客
相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客
insert(新增)
insert into 表名 values(值,值...);(into 可以省略)
还是那句话要对数据库进行操作的时候,要先选中你要进行操作的数据库
使用 单引号 或者 双引号 表示 字符串,SQL没有 字符 这个类型
表记录展示
指定列插入
insert into 表名(列名,列名)values(值,值...) 可以多行数据
这里的null是 成功插入这条语句的id 为null
一次插入多行记录
insert into 表名 values(值,值...),(值,值...)
表记录展示
插入datatime类型
获取当前时刻的时间 now()方法
表记录展示
全列查询
把表中的的 所有行 和 所有列 都查询出来
select * from 表名; (* 表示 通配符 可以代指所有的列)
select * 操作,算是一个危险的操作,如果你的数据库中的记录很多,因为要读取的数据量很大所
以查询时间久速度慢,严重的还会把你的数据库搞挂掉,所以谨慎使用
指定列查询
select 列名,列名... from 表名;
查询字段为表达式(列和列之间的运算,把每一行都带入到这样的运算)
一边查询,一边进行计算,在查询的时候,写作 由列名构造的表达式,把这一列中的
所有行都带入到表达式中,参与运算
这样的操作不会修改数据库服务器上的原始数据,只是在最终响应里的 临时结果 中做
了计算(因为mysql是 客户端-服务器结构的程序,进行查询的时候是把服务器这里的
数据读出来,返回给客户端,并且以 临时表 的形式进行展示)
as(别名)
查询的时候给 列/表达式 指定别名(给表也能指定别名)
select 表达式 as 别名 from 表名;
distinct(去重)
distinct 修饰 某个列/多个列(修饰某个列这些行 值相同的话,我们就只保留一个)(修饰多个列
这些行 值相同的话,我们就只保留一个)
select distinct 列名/列名... from 表名;
修饰多个列,要求这些列这里面的行的数据都得相同才算是重复(就是你要去重选择的列名)
查询的时候排序(把行 进行排序)
默认升序排序
select 列名 from 表名 order by 列名 asc/desc;
select 列名,表达式 from 表名 order by 列名 asc/desc;
select 列名 from 表名 order by 列名,列名 asc/desc;
这里即使我没有选中chinese列,它也是照chinese列进行排序的
我们选中进行验证
指定多个列进行排序(这样根据你先写的列进行排序,如果值相同,按照你后面写的列名进行排序)
注意:
1.针对哪个列作为比较规则
2.排序的时候是升序还是降序
如果一个 sql语句 不加 order by 此时查询的结果数据的顺序,是 “不确定的”/“无序的”
NULL 数据排序,视为比任何值都小,null参与各种运算,结果还是null(!!!)
没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
where(条件查询)
会指定具体的条件,按照条件针对数据进行筛选
select 列名 from 表名 where 条件;
认识 比较运算符
=:
我们会发现明明有数学为空的同学,结果它没有显示出来,这是因为在使用 = 去比较 null = null
还是null,null就会被认为是false
<=>:
使用这种等于号 <=>,我们会发现显示出来了
我们还可以使用 is,我们会发现也显示出来了
区别:<=> 操作符用于比较操作,确保即使两边的值为NULL时也能返回相等的结果,而 IS NULL
只用来判断一个字段的值是否为NULL。
In(如果我们的记录,存在in集合里的就能筛选出来)
认识 逻辑运算符
and
or
not
select条件查询执行的顺序:
1.遍历表中的每个记录
2.把当前记录的值,带入条件,根据条件进行筛选 (where 第二步执行的)
3.如果这个记录条件成立,就要保留,进行列上的表达式的计算(别名 第三步定义的)
4.如果有order by 会在所有的行都被获取之后(表达式也算完了)再针对所有的结果进行排序
like(模糊匹配)
通配符,就是一些特殊的字符,能够表示特定的含义
%:代指 任意个任意字符
?%:查询以 ?开头的内容
%?:查询以 ?结尾的内容
%?%:查询包含 ?的内容
_:代指 一个任意字符
_?:查询以 ?结尾的内容,前面只有一个字符
?_:查询以 ?开头的内容,后面只有一个字符
?_ _:查询以 ?开头的内容,后面有两个字符
limit(分页查询)
当我们需要保持一次查询,不要查出来的东西太多
select 列名 from 表名 limit 几条记录;
limit 可以限制这次查询最多能查出来多少个结果
select 列名 from 表名 limit 几条记录 offset 从哪个下标开始;
limit 表示这次查询,查出几个记录,offset 表示偏移量,也就是一个“下标”,从0开始
update(修改)
update 表名 set 列名 = 值 where 条件;
这里的 = 出现在 update 里是赋值,出现在 where 里面是比较相等
update 表名 set 列名 = 值,列名 = 值 ... where 条件;
update 后面不写任何条件,就是针对所有行都进行修改
显示警告信息
为什么会报警告信息呢?
如图中唐三藏的语文成绩,本来是42.9但是除了2后就变成21.45,这时候跟我们一开始设置的长度
和保留小数不匹配了,我们设置的是长度为3,保留一位小数,但是现在是长度为4,保留2为小数
delete(删除)
delete from 表名 where 条件/ order by / limit;(删除操作会根据你后面 写的条件 从表中删除)
注意:等于号不要写错了<=>
delete from 表名;(不指定任何条件,就是删除表里的记录)
delete 和 drop 的区别:就是drop table 是删除了整张表和表里的所有记录,delete呢是只删除表里的记录,表还在但是是空的
以上便是增删改查的一些基础操作,这些操作说难也不难,说简单也不简单,还是要勤加练习才能掌握,我们下一章再见💕