吴旭华 发表于 2024-8-28 10:04:49

【MySQL】MySQL表的增删改查(初阶)



https://i-blog.csdnimg.cn/direct/f754c7be68b148bfa6995f197c1a866b.jpeg
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录

 表内容利用
插入内容
按次序插入
指定某些列插入
一次插入多行记载
插入时间
查询表内容
全列查询
指定列查询
 指定表达式查询 
用as取别名
​编辑
去重查询
排序查询order by
条件查询 (关键)
比力运算符
逻辑运算符
练习
根本查询
and和or
 范围查询
like 模糊匹配
分页查询
修改表内容
删除表内容

 表内容利用

插入内容

按次序插入

insert into 表名 values(值,值,值.....);    新增(这里列的个数 和 范例 要和表结构 匹配)
SQL中表现字符串可以使用 " 或 '
https://i-blog.csdnimg.cn/direct/ae59b982852a46eca6f9379a2d17c450.png
SQL中范例会实验自动强转
https://i-blog.csdnimg.cn/direct/eb1db16091014f0cadd3f37f0f035b31.png
指定某些列插入

insert into 表名(列名,列名....)values(值,值.....);
https://i-blog.csdnimg.cn/direct/ab78a1eeb3e244bcaffbfc7a456bfbaf.png
一次插入多行记载

insert into  表名 values(值,值....),(值,值....),(值,值....).....;  每个括号代表一行
https://i-blog.csdnimg.cn/direct/751e4d972ca54b26a169a2c67f3617ca.png
插入时间

https://i-blog.csdnimg.cn/direct/77270d5545654321816a2b9118bd6f8f.png
可以插入当前系统时间,使用库函数 now()  -->获取当前时间
https://i-blog.csdnimg.cn/direct/422fe3d3f9f3452887a1545e9f5e49b9.png
查询表内容

全列查询

select  * from 表名;  全列查询(查询出这个表的全部行和列) , * 是通配符,可以指代全部的列.
注意: select * 是一个很危险的利用,由于如果表非常大(千万/亿级别的数据量),进行select * 会产生大量的硬盘IO 和网络 IO,很大概会把你的硬盘 /网卡 带宽给吃满. 若是在公司的生产环境下进行 select * ,很大概会使其他用户访问数据库的时间 出现访问失败的环境
https://i-blog.csdnimg.cn/direct/30cbf62c299e47cf93141674833fe479.png

指定列查询

select 列名,列名.... from 表名;
为了方便举例,下面创建一个成绩表
https://i-blog.csdnimg.cn/direct/7788921e9db74b80a33007aa6613c046.png
下图指定 name和math列输出
https://i-blog.csdnimg.cn/direct/c5b76a41052040259bce0bc565dbc678.png
 指定表达式查询 

select 表达式 from 表名;  输出的效果是"零时表",数据库本体(数据库服务器硬盘上的数据)没有任何改变
下图查询的是 语文成绩+10 的效果.
https://i-blog.csdnimg.cn/direct/8060b1b94d7442c696af3d7d34352d52.png
用as取别名

select 表达式 as 别名 from 表名;   这里的as可以省略(但是不建议,由于as省略后,别名就非常容易当成表达式的一部分)
下图输出总成绩 以total 命名
https://i-blog.csdnimg.cn/direct/41938c53bbb84e7c891495b26ece87b9.png

去重查询

select distinct 列名 from 表名;  查询的效果里必须是全部一样才能去重
https://i-blog.csdnimg.cn/direct/0d43a8b30ba64836bec77c8c02fbcf40.png
排序查询order by

select 列名 from 表名 order by 列名;    针对查询效果进行排序,指定按照某个列进行排序,可以指定升序(asc  默认是 升序,可以省略)和 降序(desc)  ,select 语句对排序没有任何影响, 在排序之前,次序是不可预期的
 https://i-blog.csdnimg.cn/direct/256319b663684bc1a8b328d0c58f9613.png
 order by可以指定多个列查询,先按照第一个列查询,这列相同的部分 会按照第二列排序.....
https://i-blog.csdnimg.cn/direct/249ce2b62604400fbf0db7f842cb0669.png
条件查询 (关键)

select 列名 from 表名 where 条件;   查询过程中,指定筛选条件,满足条件的就保留,不满足条件的就跳过
比力运算符

https://i-blog.csdnimg.cn/direct/c019b32a3ea142edbe9214cffae8c801.png
逻辑运算符

https://i-blog.csdnimg.cn/direct/2d4a2a30e5574840ab761c9a65b94bcf.png

注意:


[*]WHERE条件可以使用表达式,但不能使用别名。
[*]AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先实行的部分
练习

根本查询

查询英语不及格的同学及英语成绩 ( < 60 )
https://i-blog.csdnimg.cn/direct/15bced83f01c4583bf90d22ba922c94a.png
查询语文成绩好于英语成绩的同学 
https://i-blog.csdnimg.cn/direct/1e27295c146d46e4bc37d807ad95a1a4.png
查询总分在 200 分以下的同学 
https://i-blog.csdnimg.cn/direct/8500d31cbd8f4c3d92b7c9184ccb8063.png
 使用别名时注意:  条件不能用别名,会报错
https://i-blog.csdnimg.cn/direct/2c36b057ebfd45b6a1bddff6bf254550.png
and和or

查询语文成绩大于80分,且英语成绩大于80分的同学 
https://i-blog.csdnimg.cn/direct/e19f5140c67a4d2c8167d6b238c2d00d.png
查询语文成绩大于80分,或英语成绩大于80分的同学 
https://i-blog.csdnimg.cn/direct/df2ac726e6d841978562d302068c9212.png
 范围查询

where 列名 between ...and ;
查询语文成绩在 分的同学及语文成绩
https://i-blog.csdnimg.cn/direct/e347fecc6b4f40afae0aa09b72f14672.png
用and实现同样的效果 
https://i-blog.csdnimg.cn/direct/b220858d9bb746babb6746a2b093e49e.png
where 列名 in(要查询的值,多个值用 , 隔开);   针对离散的数据
查询数学成绩是 58 大概 59 大概 98 大概 99 分的同学及数学成绩
https://i-blog.csdnimg.cn/direct/968b9aa8843244048e06d683a83f6d3f.png
like 模糊匹配

like要搭配通配符一起使用
where 列名 like 通配符;


[*]% :匹配 0 个或 任意 个的任意字符
[*]_  : 匹配 1 个特定的字符
like 是一个比力低效的利用,数据库原来就慢,以是开发时使用like 要控制~
通过下列例子理解like 的用法
https://i-blog.csdnimg.cn/direct/8ea7e1f1da31409b82c5a1f8df02353e.png
https://i-blog.csdnimg.cn/direct/383221ee7fac4d178c5ff2f33d9bf9a5.png
https://i-blog.csdnimg.cn/direct/a6650ab001734c178baa6b005b29921c.png
https://i-blog.csdnimg.cn/direct/25d520207df94884b8ddb26e4286abb1.png

https://i-blog.csdnimg.cn/direct/b248e0d1b19f4d7690e7f6b1ff898697.pnghttps://i-blog.csdnimg.cn/direct/71bfa87d538c41daa2d65d0baf0e1541.png
不要拿= 和null比力,要用<=>或 is null 判断
https://i-blog.csdnimg.cn/direct/64e4cfc51ab94e94958cec93ba37328f.png
分页查询

select 列名 from 表名 limit N;    N代表限定 n 条记载
https://i-blog.csdnimg.cn/direct/608e1b5c6a6a43cea685e2d863f04b22.png
limit可以搭配offset使用
select 列名 from 表名 limit N offset M;   表现从下标为M开始记载(从0开始盘算) N 条
https://i-blog.csdnimg.cn/direct/4e15470494ac4086bfd8b8f11875b9d5.png
上面代码可以简写为 select * from exam_result limit 4 , 3 ;
修改表内容

update 表名 set 列名 = 值 , 列名 = 值.....   后面可以加上条件 where /order by/ limit ,如果没有指定任何条件 ,修改的就是全部行. update 同样也是危险利用(真正改的是硬盘上的数据,"持久有效"),
https://i-blog.csdnimg.cn/direct/65b4e73698da45a9b25c88f0dfe76d09.png
匹配的效果 >= 现实修改的效果
https://i-blog.csdnimg.cn/direct/12c47a3fb169483cb0c1fe2f59711b9d.png
删除表内容

delete from 表名 where 条件 / order by / limit;  将筛选出的行删除,  这也是 危险利用!!!
若没有指定条件,删除的就是这个表的数据,但是这个表还在(空表)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【MySQL】MySQL表的增删改查(初阶)