[MySQL]关于表的增删改查

目录

1.插入

1.1单行数据+全列插入

 1.2多行插入,指定列插入

​编辑2.查询

2.1全列查询

2.2指定列查询

3.3查询字段为表达式

 2.4别名

​编辑2.5去重

2.6排序

 2.7条件查询

2.7.1基本查询:

2.7.2 AND 和OR

2.7.3范围查询

 2.7.4模糊查询

 2.7.5分页查询 limit

3.修改

4.删除


1.插入

1.1单行数据+全列插入

我们首先创建一张学生表来做为我们的例子:

表里包含的元素有id,学号,姓名,邮箱;

然后我们进行全列插入

格式为 insert into student values(数据1,数据2,数据3)

 1.2多行插入,指定列插入

数据格式:

Insert into stuent(列名,列名,列名)values(数据,数据,数据,),(数据,数据,数据);

2.查询

先创建一个考试成绩表

 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);
 

2.1全列查询

 通常情况下不建议使用select *查询,会造成大量的性能资源使用。

1.查询的列越多,意外着需进行传输的数据越大。

2.可能会影响索引的使用

select *from exam_resule;

2.2指定列查询

指定列的顺序不需要按照定义的时候的顺序

语法格是:

select id,name,chinese from exam_result;

3.3查询字段为表达式

表达式不包含字段

select id,name,10 from exam_result;

表达式包含一个字段

select id  ,name,chinese+10 from exam_result;

表达式包含多个字段:

select id,name,english+chinese+math  from exam_result;

 2.4别名

select id,name ,math+chinese +english as 总分 from exam_result;

2.5去重

我们先查询一下math成绩

select math from exam_result;

可以看到98分重复了 我们使用 distnit关键字试试

select distinct math from exam_result;

2.6排序

order by 关键字

desc为降序 默认为升序

降序 desc关键字写到最后面

可以对多个字段排序,排序的优先级随书写顺序

 2.7条件查询

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,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,在同时使用时,需要使用小括号()包裹优先执行的部分
例子:

2.7.1基本查询:

查询英语成绩不及格的同学

select name,english from exam_result where english < 60;

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

select name,chinese,english from exam_result where chinese>english; 

查询总分在200以下的学生:

select  name, math+chinese+english as 总分 from exam_result where math+chinese+english < 200;

2.7.2 AND 和OR

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

select name,english,chinese from exam_result where chinese>80 and english >80;

猪悟能同学好厉害hhhh

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

select name , chinese ,english from exam_resut where chinese>80 or english >80;

观察一下and和or的优先级(一般情况下如果想要哪个优先级高就用小括号给它加起来);

首先我们先查找全部的同学成绩 select *from exam_result;

select *from exam_result where chinese>80 or math>70 and english>70;

 我们给前面的or 打上括号看看

select * from exam_result where (chinese>80 or math>70) and english >70;

可以看到 and 的优先级大于or

2.7.3范围查询

between ...and...

查询语文成绩在80~90之间的同学

select name,chinese from exam_result where chinese between 80 and 90;

使用 and也可以实现

select name,chinese from exam_result where chinese>=80 and chinese<=90;

 2.7.4模糊查询

%匹配多个字符

select name from exam_result where name like '孙%';

_ 匹配一个字符

select name from exam_result where name like '孙_';

 2.7.5分页查询 limit

起始下标为0 

从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s
 

案例 :按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

select id ,name from exam_result order by id limit 3 offset 0;

select id ,name from exam_result order by id limit 3 offset 3;

select id ,name from exam_result order by id limit 3 offset 6;

3.修改

update from table_name set colume=expr,[colume = expr] [where...] [order by ...] [limit...]

 把孙悟空同学的数学成绩改为80分

update exam_result set math = 80 where name='孙悟空';

将曹孟德的数学成绩改为60,语文成绩改为70

update exam_result set math =60 ,chinese =70 where name ='曹孟德';

将总成绩倒数后三名的数学成绩加上10分

update exam_result set math = math+10 order by math+chinese+english limit 3;


将所有同学的语文成绩变成原来的两倍

首先是这样的

update exam_result set chinese = chinese *2 ;

4.删除

delete from 表名 where... orderby...limit...

案例

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

detele from exam_result where name = '孙悟空';

删除整张表

drop table if exists for_delete;首先判断库里面有没有这张表,有的话就删了

create table for_delete(id int ,name varchar(20)); 创建表

insert into for_delete (name) values('A'),('B'),('C');加入数据

select *from for_delete; 查看表

delete from for_delete; 删除一整张表

selete *from for_delete ;再次查看表,会发现为空了 

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老cu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值