MySQL表的增删改查(基础)

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

新增(create)

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

单行数据 + 全列插入

在这里插入图片描述

多行数据 + 指定列插入

在这里插入图片描述

查询(Retrieve)

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

全列查找

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

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

指定列查询

select 列名,列名.. from 表名;
在这里插入图片描述

查询字段为表达式

这里先创一个表:

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

插入数据:

INSERT INTO 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是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。 % 表示任意多个( 包括 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直接把盒子就删了)

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

在这里插入图片描述

总结

新增

-- 单行插入
insert into(字段1,...,字段N) values (value 1,....,value N);

-- 多行插入
insert into(字段1, ...,字段N) values
(value1,...),
(value2,...),
(value2,...);

查询

-- 全列查询
select * from-- 指定列查询
select 字段1,字段2... from-- 别名
select 字段1 别名1,字段2 别名2 from-- 去重distinct
select distinct 字段 from-- 排序order by
select * fromorder by 排序字段

-- 条件查询where:
-- (1)比较运算符 (2)between ... and ... (3)in (4)is null (5)like (6)and (7)or (8)not
select * fromwhere 条件

修改

updateset 字段1 = value1,字段2 = value2... where 条件

删除

delete fromwhere 条件
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粉色的志明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值