mysql表的增删查改

创建数据表

create table [表名]([1] [数据类型1], [2] [数据类型2], ...);

在这里插入图片描述

单行插入

insert into [表名] values(数据1, 数据2, ...);

多行插入

insert into [表名] values(第一行数据1, 第一行数据2, ...),(第二行数据1, 第二行数据2, ...);

指定列插入

insert into [表名](1,2, ...) values(1数据,2数据, ...);

替换

replace into [表名] values(数据1, 数据2, ...);
replace into [表名](1,2, ...) values(1数据,2数据, ...);
替换的时候需要注意:
一定要在替换的数据当中,能够唯一标识是哪一行数据(否则就重新插入了)
替换的步骤:先将原先的数据删除,再重新插入

select列

为全表查询,会输出全表中查询列的所有数据

全列查询

select * from [表名];
数据量小时可以使用,数据量多时不建议使用

指定列查询

select [1],[2],... from [表名];
注意:在指定列查询时,如果指定列不在表中,则默认输出行的数值为指定列的数值
所有的查询都不改变原表数据

表达式中可以包含一个字段

select [1想要进行的操作],[2想进行的操作],... from [表名];
例如:在stu表中想查询序号姓名分数时给分数(grade)加10
select id,name,grade+10 from stu;

给输出的结果重命名

select [1想要进行的操作] [想要输出时更改的名称],[2想进行的操作] [想要输出时更改的名称],... from [表名];

select [1想要进行的操作] as [想要输出时更改的名称],[2想进行的操作] as [想要输出时更改的名称],... from [表名];

去除重复结果

select distinct [1],[2],... from [表名];

where条件

select [1],[2],... from [表名] where [约束条件];
例如:
select id,name,grade from stu where name='张三';

比较运算符

>,>=,<,<=			大于,大于等于,小于,小于等于
					可以查询一个列大于另一个列,例如语文(yuwen)大于英语(yingyu) -> where yuwen > yingyu
=					等于,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个)任意字符,_ 表示任意一个字符
					例如:查找姓孙的同学				where name like '孙%'
						 查找姓孙且名字为一个字的同学	where name like '孙_'
						 查找不姓孙的同学				where name not like '孙%'

假设有英语(yingyu)语文(yuwen)数学(shuxue)三项成绩,想查询总分200以下的:

在这里插入图片描述

逻辑运算符

AND		多个条件必须都为TRUE(1),结果才是TRUE(1)
OR		任意一个条件为TRUE(1),结果就是TRUE(1)
NOT		条件为TRUE(1),结果为FALSE(0)

order by排序

select ... from [表名] [where ...] [order by ...];
NULL视为比任何数都小
默认为ASC(升序),如果需要降序则在后面加上DESC

例如数学语文英语,需要数学降序,语文英语升序

在这里插入图片描述

或是总分降序排列

在这里插入图片描述

添加几个数据,查询姓赵的同学的数学成绩并降序排列

在这里插入图片描述
在这里插入图片描述

筛选分页结果

从0开始,筛选n条结果

select ... from [表名] [where ...] [order by ...] limit n;

在这里插入图片描述

从s开始,筛选n条结果

select ... from [表名] [where ...] [order by ...] limit s,n;
select ... from [表名] [where ...] [order by ...] limit n offest s;

在这里插入图片描述
在这里插入图片描述

update [表名] set [列名1] = [想要修改的值], [2] = [想要修改的值], ... [where ...] [order by ...] [limit ...];
注意:如果仅使用 update [表名] set [列名1] = [想要修改的值];会将这一列所有的值都变成想要修改的值
所以一般需要加一个约束条件,用来框定需要更新哪些具体的行

例如想把赵铁柱的数学改成80分:

在这里插入图片描述

想让总分排名倒数三的人的数学成绩加上30分
首先先查哪些是倒数三的人

在这里插入图片描述

随后使用in约束条件来给他们加上30分

在这里插入图片描述

好家伙都给铁柱改成80了咋分还是倒数呢,这就是木桶效应吗

删除数据

delee
1、delete只删除表数据,不会修改表结构
2、删除数据要慎用(物理删除)
delete from [表名] [where ...];
可以用约束条件来框定删除范围
例如删除铁柱的成绩

在这里插入图片描述
心疼铁柱三秒

截断表

重置表结构(表结构当中有些自增选项)
表数据也被清空,需慎用
truncate [表名];

聚合函数

COUNT(列名或*)	返回查询到的数据的数量
SUM(列名或*)		返回查询到的数据的总和,不是数字没有意义
AVG(列名或*)		返回查询到的数据的平均值,不是数字没有意义
MAX(列名或*)		返回查询到的数据的最大值,不是数字没有意义
MIN(列名或*)		返回查询到的数据的最小值,不是数字没有意义

group by子句使用

可以对指定列进行分组查询
select [1],[2],... from [表名] group by [按照某一列进行分组];
例如想求两个班级分别的平均分:可以先分组,对分组的结果进行聚合

在这里插入图片描述
在这里插入图片描述

同时可以在后边加上having进行约束
select [1],[2],... from [表名] group by [按照某一列进行分组] [having ...];

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值