当前位置:网站首页>MySQL表数据的增删查改
MySQL表数据的增删查改
2022-07-27 14:35:00 【瘦皮猴117】
目录
7.3) MySQL的null不包含在 < <= 的条件中,null = null也不支持
4) 若update语句不带where条件,则该属性的所有行都受影响
表数据的CURD
CURD(Create Update Retrieve Delete)
对于表中数据的增删改查在每—行上进行操作~
1.新增数据
insert into tb_name(属性名称...) values(属性值...);
1) 单行插入
2) 单行全列插入
在插入时表名之后没有指定列名,默认为需要单行全列插入
注意:若列有三列,values括号中只有两个数据,此时全列插入会报错。
全列插入数据个数必须严格等于列的个数,否则报错,不会使用null占位。
正确写法
3) 多行某几列插入
4) 多行全列插入
2. 查询数据
ExamResult根据名称映射
MySQL中表、数据库、属性名称,统一使用全小写+下划线分隔,不要使用驼峰名称。全列全行查找
select * from tb_name;
1) 查找指定列
select 列名称 from tb_name;
select得到的数据,以二维表格的形式展示数据。这个表格是一张临时表,不会存储到具体的硬盘中。
2) 查询字段为表达式
a. 查询所有(学生姓名,语文成绩+10)的结果,此时不会真的给数据+10,只在当前展示有效。
b. 查询学生姓名以及总成绩
3) 给查询结果起别名
刚才结果直接以表达式展示的,不美观,意义不明确,可以给查询结果起别名~
select 列名 as 新名词 from tb_name;
4) 去重查询得到去重处理后的结果distinct
select distinct 列名称 from tb_name;
若要查询多列结果,包含distinct关键字的话,去重查询必须放在第一列,且后面属性默认也会进行去重处理。
select dinstinct 列名称1,列名称2 from tb_name; // 组合属性去重
5) 按照结果集排序 order by可以使用别名
select 列名称 from tb_name;
order by 列名称[asc|desc];
默认为升序排序,asc不写的话默认升序。
a. 查询所有学生的姓名和他们的总成绩,按照总成绩升序排序。
b. 按照总成绩降序排序。
c. 若此时结果集中包含null值,这个值null认为是最小值
d. 针对多个列进行的排序?
查询所有学生的姓名,语文成绩,数学成绩,其中按照语文成绩升序,数学成绩降序排序。
按照书写顺序优先级排序
优先按照语文成绩升序排序,只有两个语文成绩相同的数据才按照数学降序排序。6) 分页查询 limit
select 属性名称 from tb_name limit n; //查询结果按照前n行输出
查询总成绩前三名同学的姓名以及总成绩多少
select 属性名称 from tb_name limit n offset s; // 查询结果按照前n行输出
从第s+1行开始查询。(s...s + n]
总成绩在4-5行的同学姓名和他们的总成绩
若 limit n >所有行数,则全部展示。
当前表只有5行(最高索引为4),令其offset 5,从索引为5开始展示,输出为Empty set(结果为空)。当前数据表就不存在从第6行开始之后的三行数据。
7) ****条件查询****where语句(重点)
7.1) 查询所有总成绩>200的同学姓名和他们的总成绩
7.2) where分支中不支持别名
为什么order by支持别名而where不支持?
order by的执行顺序,是在已经把结果查出来后,只是给查出来的结果排序。(select查询出来的结果对于order by已经可见了)。
where执行顺序是在查询之前,叫条件过滤。select是先要满足where分支的条件基础上的查询!select的别名这个时候还没执行。
7.3) MySQL的null不包含在 < <= 的条件中,null = null也不支持
null不要使用 < <= = 去比较,我们有专门的运算符过滤 null值
现在的表为
a. 过滤所有总成绩 < 200的同学姓名
结果不包含null
b. 过滤所有成绩非空的同学和他们的总成绩is not null
c. Null +任何数据都是Null
Null本身就是一个没有任何实际数值的值练习:查询语文成绩优于英语成绩的同学姓名
7.4) 区间查询: between...and...
查询语文成绩在[85...100]之间的同学姓名和他们的语文成绩
单独使用and也可以实现
7.5) 包含查询in
查询数学成绩是20或60或99分的同学姓名和他们的数学成绩
7.6) 模糊查询 like
%元素[0...n]
a. 查询所有名字中带号的学生姓名
_严格匹配一个字符
现在的表
b. 查询所有名字中“号”字出现在第2个位置且名字由4个字符组成的学生姓名
3. 修改表数据
update 表名 set 属性名 where 受影响的行
update表名set列名=(表达式-根据这个表达式确定修改的行)
1) 修改一行一列
成绩表中一号同学的数学成绩+10分
update exam_result set math = math + 10 where name = '1号';
2) 修改一行多列
成绩表中2号同学的数学和英语成绩+5分
update exam_result set math = math + 5,english = english + 5 where name = '2号';
3) 修改多行数据
where过滤出来的结果是多行
成绩表中所有名字中带号的同学数学成绩-10分。
update exam_result set math = math - 10 where name like '%号%';
符合条件的有7行,修改的行数 6,null不能进行数学运算
4) 若update语句不带where条件,则该属性的所有行都受影响
重置学生表,将所有同学的数学成绩都还原为0
update exam_result set math = 0;
4. 删除表数据
delete from 表名 where 过滤条件;
1) 删除名字叫空的这一条学生记录
delete from exam_result where name = '空';
2) 若此时不加where条件,则全表删除
delete from exam_result;
删除之后会告诉你删除的行数。一行行执行delete操作。
delete删除慢,可恢复,可以加条件。
全表删除
truncate table 表名
truncate table exam_ret;
相当于在os上直接把数据文件的大小变成0。将所有表中数据清除,不显示受影响的行数。
turncate删除快,数据不可恢复,不能加条件。注意:以上表的删除只是将表中数据删除,而drop表相当于直接把操作系统上这个文件删了,表都没了。
边栏推荐
猜你喜欢
随机推荐
Spark RPC
UDP 的报文结构和注意事项
The difference between synchronized and reentrantlock
股票开户佣金优惠,炒股开户哪家证券公司好网上开户安全吗
C language: string function and memory function
Spark 3.0 DPP实现逻辑
扩展Log4j支持日志文件根据时间分割文件和过期文件自动删除功能
js使用for in和for of来简化普通for循环
Interview focus - TCP protocol of transport layer
兆骑科创创业大赛策划承办机构,双创平台,项目落地对接
C语言:动态内存函数
Read the wheelevent in one article
Push down of spark filter operator on parquet file
[Yunxiang book club issue 13] coding format of video files
Spark 本地程序启动缓慢问题排查
Spark动态资源分配的资源释放过程及BlockManager清理过程
Leetcode-1: sum of two numbers
Is the array name the address of the first element?
突破软硬壁垒,赛灵思面向开发者发布Vitis统一软件平台
线程间等待与唤醒机制、单例模式、阻塞队列、定时器
























































