0


MySQL表的增删改查(基础)

增删改查就是我们常说的CRUD:(Create,Retrieve,Update,Delete)
对应:新增数据,查询数据,修改数据,删除数据
注:常用的注释:在SQL中可以使用"-- 空格+描述"来表示注释说明…

新增(create)

insert into 表名 values(值,值...);

当然,插入的要和表结构一样
创建一张学生表:
在这里插入图片描述
他可以一次插入一行,也可以一次插入多行,也可以指定列插入,当然,每个都要一一对应:

单行数据 + 全列插入

在这里插入图片描述

多行数据 + 指定列插入

在这里插入图片描述

查询(Retrieve)

查找语句是SQL中最复杂的操作…

全列查找

select * from 表名;

这个 * 就叫做"通配符",表示一个表的所有列
在这里插入图片描述

刚才我们指定列插入的时候,没有对2和3插入email,他就是默认为空的
注意:像这种全列查找操作是一个危险的操作,如果直接在生产环境的服务器上,执行select * from 表名;很可能带来灾难,因为生产环境的保存的数据可能是非常大的,几个TB的存在,然后如果疯狂的读取硬盘的数据,瞬间就会把硬盘IO吃满,然后服务器又会立即返回响应数据,这么庞大的量,要是普通用户也要响应数据,此时服务器的硬盘和网络都被吃满了,那就只能干等着了.

指定列查询

select 列名,列名.. from 表名;

在这里插入图片描述

查询字段为表达式

这里先创一个表:

DROPTABLEIFEXISTS exam_result;-- 这是如果存在这张表就先删除CREATETABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1));

插入数据:

INSERTINTO exam_result (id,name, chinese, math, english)VALUES(1,'唐三藏',67,98,56),(2,'孙悟空',87.5,78,77),(3,'猪悟能',88,98.5,90),(4,'曹孟德',82,84,67),(5,'刘玄德',55.5,85,45),(6,'孙权',70,73,78.5),(7,'宋公明',75,65,30);

在这里插入图片描述

期望查询结果中语文成绩比真实多10分

在这里插入图片描述

注意:select操作的结果是"临时表",虽然查询的结果跟原来的改变了,但他不会影响原来的数据

查询一下每个同学的总分(语文+数学+英语)

在这里插入图片描述

查询字段指定别名,相当于给查询的临时表指定新的列名

在这里插入图片描述

针对查询结果去重(distinct)

可以看下对比:
在这里插入图片描述

针对查询结果排序

select 列名... from 表名 order by asc/desc;

注意:asc如果省略不写,默认也是升序,desc降序
在这里插入图片描述

注: 有些数据记录中可能带有NULL的,默认就是最小值…

排序也可依据表达式或者别名来进行排序:
在这里插入图片描述

排序的时候还可以通过order by来指定多个列进行排序,先根据第一个列进行排序,如果第一个列相同,相同结果之间在通过第二个列排序…
在这里插入图片描述

select 中的条件查询

select 列名 from 表名 where 条件;

比较运算符:
运算符说明 >, >=, <, <=大于,大于等于,小于,小于等于=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL<=>等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)!=, <>不等于BETWEEN a0 AND a1范围匹配, [a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)IN (option, …)如果是 option 中的任意一个,返回 TRUE(1)IS NULL是 NULLIS NOT NULL不是 NULLLIKE模糊匹配。 % 表示任意多个( 包括 0 个)任意字符; _ 表示任意一个字符
逻辑运算符:
算符说明AND逻辑与 多个条件必须都为 TRUE(1),结果才是 TRUE(1)OR逻辑或 任意一个条件为 TRUE(1), 结果为 TRUE(1)NOT逻辑取反 条件为 TRUE(1),结果为 FALSE(0)
注意:1. WHERE条件可以使用表达式,但不能使用别名。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

查询英语不及格的同学及英语成绩 ( < 60 )

在这里插入图片描述

查询语文成绩好于英语成绩的同学

在这里插入图片描述

这里指的是针对同一行的,语文和英语之间的进行比较,不涉及行和行之间的比较…

查询总分在200分以下的同学

在这里插入图片描述

注意:
在这里插入图片描述

查询语文成绩大于80分,且英语成绩大于80分的同学

在这里插入图片描述

查询语文成绩大于80分,或者英语成绩大于80分的同学

在这里插入图片描述

注意:and优先级大于or,要想打破优先级,得加括号

查询语文成绩在[80,90]分的同学及语文成绩

在这里插入图片描述

查询数学成绩是58 或者 59 或者 98 或者 99 分的同学及数学成绩

在这里插入图片描述

like:模糊查询

%代表任意个字符(也包含0个),_代表一个字符:
查找姓孙的同学成绩:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

NULL的查询 is[not] null

在这里插入图片描述

分页查询

假设一页里面就显示 3 条记录:
在这里插入图片描述在这里插入图片描述

修改(Update)

uptate 表名 set 列名 = 值,列名 = 值...where 条件;

这里的修改就会修改数据库服务器上的原始数据了…

将孙悟空同学的数学成绩变更为80分

在这里插入图片描述

将曹孟德同学的数学成绩变更为60分,语文变更为70分

在这里插入图片描述

将总成绩倒数前三的 3 位同学的数学成绩加上 10 分

在这里插入图片描述

将所有同学语文成绩更新为原来的一半

在这里插入图片描述

删除(Delete)

delete from 表名 where 条件;

一旦这里条件写错了,可能影响范围就会很大,如果不写条件,就会把整个表的数据都给删除掉(这个和drop table 还是不一样的,delete只是清数据,盒子还在,drop直接把盒子就删了)

删除孙悟空同学的考试成绩

在这里插入图片描述

总结

新增
-- 单行插入insertinto 表(字段1,...,字段N)values(value1,....,value N);-- 多行插入insertinto 表(字段1,...,字段N)values(value1,...),(value2,...),(value2,...);
查询
-- 全列查询select*from 表

-- 指定列查询select 字段1,字段2...from 表

-- 别名select 字段1 别名1,字段2 别名2from 表

-- 去重distinctselectdistinct 字段 from 表

-- 排序order byselect*from 表 orderby 排序字段

-- 条件查询where:-- (1)比较运算符 (2)between ... and ... (3)in (4)is null (5)like (6)and (7)or (8)notselect*from 表 where 条件
修改
update 表 set 字段1= value1,字段2= value2...where 条件
删除
deletefrom 表 where 条件
标签: mysql

本文转载自: https://blog.csdn.net/chenbaifan/article/details/124305027
版权归原作者 粉色的志明 所有, 如有侵权,请联系我们删除。

“MySQL表的增删改查(基础)”的评论:

还没有评论