MySQL基本查询方式(表的增删查改)
MySQL基本查询方式(表的增删查改)
《MySQL基本查询方式(表的增删查改)》文章系统讲解了SQL操作中的插入、查询、更新、删除及聚合函数,涵盖全列/按列插入、条件筛选、排序分页、与的使用,并强调MySQL中关…
目录二、、WHERE 条件三、四、五、插入查询结果六、聚合函数七、group by 子句的使用5、补充总结
一、
insert [into] table_name [(column [, column] ...)] values (value_list) [, (value_list)] ... value_list: value, [, value] ...
左侧括号内是列属性,右侧括号内是列属性对应的内容,必须在类型和数值上一一对应。
若忽略 左侧括号内的内容,则称为全列插入,否则成为按列插入。
创建一张学生表:
1、单行数据 + 全列插入
2、多行数据 + 指定列插入
插入两条记录,数量必须和指定列数量及顺序一致
3、插入是否更新
由于 主键 / 唯一键 对应的值已经存在而导致插入失败。
可以选择性的进行同步更新操作:
insert ... on duplicate key update column=value [, column = value] ...
4、替换
如果表中无重复MySQL基本查询方式(表的增删查改),那直接是插入,若重复则替换。
二、
select [distinct]编程 {* | {column [, column] ...} [from table_name] [where ...] [order by column [asc | desc], ...] limit ...
1、 列(1)全列查询查询的列越多mysql分页查询sql语句,意味着需要传输的数据量越大。可能会影响到索引的使用。
通常情况下不建议使用 * 进行全列查询。
(2)指定列查询
指定列的顺序不需要按定义表的顺序来。
(3)查询字段为表达式
(4)为查询结果指定别名
select column [as] alias_name [...] from table_name;
(5)结果去重
2、WHERE 条件(1)比较运算符
注意:在 MySQL 中mysql分页查询sql语句, 用 = 来判断两个 字符串或数字 是否相等,与 C/C++ 不同。
用 = 判断是否等于 NULL 这样做是不安全的,因为 NULL 和 0 本身表示的含义不同,NULL 表示空,0 表示数字 0。
(2)逻辑运算符
练习
a. 练习一 —— 英语不及格的同学及英语成绩
b. 练习二 —— 语文成绩在 分的同学及语文成绩
c. 练习三 —— 数学成绩是 58 / 59 / 98 / 99 分的同学及数学成绩
d. 练习四 —— 姓孙的同学及孙某同学
e. 练习五 —— 语文成绩好于英语成绩的同学
f. 练习六 —— 总分在 200 分以下的同学
where 条件中使用表达式,别名不能用在 where 条件中。
g. 练习七 —— 语文成绩 > 80 并且不姓孙的同学
h. 练习八 —— 孙某同学,否则要求总成绩>200 并且 语文成绩80
练习九 —— NULL 的查询
(3)结果排序
默认为 ASC。
注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。
练习
a. 练习一 —— 同学及数学成绩,按数学成绩升序显示
b. 练习二 —— 同学名字,按名字排序显示
c. 练习三 —— 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
d. 练习四 —— 查询同学及总分,由高到低
为什么在这里又能够使用别名了呢?
能否使用别名完全取决于当前 sql 子句的执行顺序。
order by 中可以使用表达式。
e. 练习五 —— 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
order by 子句的执行顺序晚于 where 子句。
(4)筛选分页结果
… from
where …
order by …
limit n;
3:从表开始()开始连续读取 3 行。
select ... from table_name [where ...] [order by ...] limit s, n;
1:开始位置(下标从 0 开始)。
3:步长,从指定位置开始,连续读取 3 条记录。
select ... from table_name [where ...] [order by ...] limit n offset s; mit n offset s;
4:步长,从指定位置开始,连续读取 4 条记录。
1:开始位置(下标从 0 开始)。
注意 :起始下标为 0。
建议:对未知表进行查询时MySQL基本查询方式(表的增删查改),最好加一条 limit 1 ,避免因为表中数据过大,查询全表数据导致数据库卡死。 按 id 进行分页mysql分页查询sql语句,每页 3 条记录,分别显示 第 1 、 2 、 3 页。
只有数据准备好了,才要显示,limit 的本质功能是 “显示”。
得先有数据,才能 “显示”,“显示” 时,limit 只是告诉 MySQL,显示时只显示从哪里开始,从开始位置显示几行。
limit 不是条件筛选,本质就是把数据准备好,排好序,然后再 limit,执行阶段更靠后。
三、
update table_name set column=expr [, column = expr ...] [where ...] [order by ...] [limit ...]
对查询到的结果进行列值更新。
练习
(1)练习一 —— 将孙悟空同学的数学成绩变更为 80 分
(2)练习二 —— 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
(3)练习三 —— 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
注意:别名可以在 order by 中使用
(4)练习四 —— 将所有同学的语文成绩更新为原来的 2 倍
注意 :更新全表的语句慎用。
四、、删编程客栈除数据
delete from table_name [where ...] [order by ...] [limit ...];
练习
a. 练习一 —— 删除孙悟空同学的考试成绩
b. 练习二 —— 删除整张表数据
注意 :删除整表操作要慎用。
2、截断表
truncate [table] table_name;
和 的区别:
注意 :这个操作慎用。
只能对整表操作,不能像 一样针对部分数据操作。实际上 MySQL 不对数据操作,所以比 更快,但是 在删除数据时,并不经过真正的事物,所以无法回滚。会重置 项。 五、插入查询结果
insert into table_name [(column [, column ...])] select ...;
练习
(1)练习一 —— 删除表中的的重复复记录,重复的数据只能有一份
错误思路:
为什么最后是通过 方式进行的?
就是单纯的想等一切都就绪了,然后统一放入、更新、生效等。
六、聚合函数
练习
(1)练习一 —— 统计班级共有多少同学
2)练习二 —— 统计本次考试的数学成绩分数个数
注意:
要写在括号内,因为我们是要对 math 去重,而不是对 count() 的结果去重。
NULL 不会计入结果。
(3)练习三 —— 统计数学成绩总分
(4)练习四 —— 统计平均总分
(5)练习五 —— 返回英语最高分
(6)练习六 —— 返回 > 70 分以上的数学最低分
七、group by 子句的使用
分组的目的:为了进行分组后,方便进行聚合统计。
在 中使用 group by 子句可以对指定列进行分组查询:
select column1, column2, .. from table group by column;
1、准备工作,创建一个雇员信息表(来自 9i 的经典测试表)
2、如何显示每个部门的平均工资和最高工资
3、显示每个部门的每种岗位的平均工资和最低工资
4、显示平均工资低于 2000 的部门和它的平均工资(1)统计出每一个部门的平均工资(结果先聚合出来)
(2) 和 group by 配合使用,对 group by 结果进行过滤(对聚合的结果进行判断)
和 group by 的语义是一样的, 相当于是对分组聚合统计后的数据,进行条件筛选。
经常和 group by 搭配使用,作用是对分组进行筛选,作用有些像 where。
VS where 的区别与执行顺序是什么?
都能够做条件筛选,这是它们的共性。
但它们是完全不同的条件筛选,它们的条件筛选的阶段是不同的。
补充:不要单纯的认为,只有在磁盘上将表结构导入到 MySQL,真实存在的表才叫表。
中间筛选出来的,包括最终结果,全都是逻辑上的表。(MySQL 一切皆表)
只要我们能够处理好单表的 CURD,所有的 sql 场景就都能用统一的方式进行。
5、补充
SQL 查询中各个关键字的执行先后顺序:
from > on > join > where > group by > with > > > > order by > limit
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈()。
本文标题: MySQL基本查询方式(表的增删查改)
本文地址:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » MySQL基本查询方式(表的增删查改)
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码