【MySQL】对表中数据的操作

这篇具有很好参考价值的文章主要介绍了【MySQL】对表中数据的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本期给大家带来的是MySQL下对表中数据的增删查改操作


目录

一、对表插入数据

1.1 单行数据插入

1.2 多行数据插入

1.3 插入冲突时更新数据

1.4 替换式插入 

1.5 插入查询结果

二、对表中数据进行查询

2.1 基本select

2.1.1 使用select查询表中数据 

2.1.2 使用select进行计算

2.1.3 在select语句中使用as对列自定义命名

2.1.4 对查询结果进行去重

2.1.5 where条件

2.1.6 对查询结果进行排序

2.1.7 分页显示筛选结果

2.2 分组聚合查询

三、对表中的数据进行修改

四、删除表中的数据

五、截断表

六、聚合函数


一、对表插入数据

我们之前在表的操作中提了一下向表中插入数据,下面我们来详细讲解

1.1 单行数据插入

我们可以使用下面的语句对表做数据插入:

insert into 想要插入的表名(所要插入的列1,所要插入的列2...) values(数据1,数据2...);

上面语句在使用时into关键字可省略

在表名后面我们可以使用()在里面指定要插入的列,下面用这张表来演示一下:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 当然表名后面我们也可以省略()进行全列插入:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

1.2 多行数据插入

上面的方法每次只能插入一行数据,效率不高,我们可以在values关键字后面多加几个()用来一次插入多行数据:

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

上面语句在使用时into关键字可省略 

下面我们来演示一下,同样还是刚才的表:【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

多行指定列插入:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

多行全列插入:【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

1.3 插入冲突时更新数据

我们向表中插入数据时,有时会因为主键、唯一建之类的约束发生数据冲突:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

这样子我们就不能将数据插入到表中,但是使用下列语法可以在插入数据发生冲突时,更新表中冲突数据所在行:

insert into 表名(列1,...) values (数据1,...) on duplicate key update 列名1=数据1 ,列名2=数据2 ,...;

我们来试试看:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

我们可以看到上述语句在插入‘i’这个数据时因为id的主键冲突肯定会失败,但是后面的on duplicate key update语句则意味着插入冲突时,将冲突数据所在行的name列数据改为'i'、telephone列数据改为'12345689'

可以看到修改非常成功,下面我们来看看该语句如果插入时没有发生冲突,系统会干啥:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

可以看到当插入语句没有发生冲突时,系统会直接插入数据,不会再执行后面的更新语句

下面我们试试看当发生插入冲突时,但是更新语句更新的数据跟冲突数据一样会怎么样:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

我们发现:当发生插入冲突时,但是更新语句更新的数据跟冲突数据一样,系统会什么都不做

所以使用该语句时,我们可以根据系统执行的反馈来确定数据是否做了更改:

-- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等

-- 1 row affected: 表中没有冲突数据,数据被插入

-- 2 row affected: 表中有冲突数据,并且数据已经被更新

1.4 替换式插入 

replace into 表名 (列名1, 列名2, ...) values (数据1, 数据2, ...);

使用上述语句可以进行替换式插入:主键或唯一键没有冲突,则直接插入;如果冲突,则删除表中原冲突数据后再插入

举例演示:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

可以看到插入的数据和表中数据没有冲突,进行了直接插入

下面要插入的数据和表中原数据的id列发生了主键冲突:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

可以看到发生冲突的原数据直接全部被替换为插入的数据

1.5 插入查询结果

该内容涉及到下文的select语句,建议看完基本select后再回头来看该部分内容

insert不仅仅可以插入我们自己手动输入的数据,还可以拿取select语句的数据对表进行插入:

INSERT INTO 表名 [(列名1,列名2...)] SELECT ...

光说概念太生涩了,我们实际举例来说明:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

对于上面这张表,现在的要求是对其数据内容进行去重

去重?使用distinct关键字不就行了吗?

distinct虽然可以对查询结果进行去重,但是不能修改表中原始数据,所以我们要重新创建一张空表,将去重结果存入空表中,再将空表重命名为原表名称(原表可以改为其他名或者删除),这样子就可以实现对表中数据进行去重了。

下面我们一步步来:

创建空表时,我们可以使用原始的create语句一个个来定义和原表一样的列,不过在这里推荐使用like直接创建结构跟原表一模一样的空表:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

再使用select语句来拿到原表的去重数据:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

接着将select语句的去重结果使用insert语句插入到空表中:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 最后将两个表重命名一下就完成了:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

二、对表中数据进行查询

2.1 基本select

我们对表中数据进行查询时少不了select语句,其基本语法为:

SELECT
[DISTINCT] [[*] [column , column] ...]
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
[LIMIT ...]

可以看到select语句可以跟上很多条件,下面我们来一一举例介绍

我们先创建一个表,再向其插入些数据:【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.1.1 使用select查询表中数据 

如果我们想要查询表中全部的数据可以使用下面的语句:

select * from 表名;

上面的*是通配符,表示全部

我们来试试看:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

如果我们想要查询表中某几列的数据可以使用下面的语句:

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

例如: 

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.1.2 使用select进行计算

select语句不仅仅能查询,还能进行计算:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

既然可以进行计算的话,我们拿表中的数据来试试看:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

那这样我们就可以打印出每个学生的总分:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.1.3 在select语句中使用as对列自定义命名

上面的总分列名太长了,我们可以使用as关键字来对打印的列名进行重命名:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

当然as也可以省略:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.1.4 对查询结果进行去重

我们可以在select后面加上distinct关键字来对查询结果去重

例如math列原数据:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

有两个85相同数据,现在我们来进行去重:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.1.5 where条件

我们可以在select后面加上where条件句来筛选符号条件的数据,where后面常用的运算符有:

比较运算符:

运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于,NULL 安全,例如 NULL<=> NULL 的结果是 TRUE(1)
!=, <> 不等于
BETWEEN n1 AND n1 范围匹配,[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)英语不及格的同学及英语成绩 ( < 60 ):

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(2)语文成绩在 [80, 90] 分的同学及语文成绩:【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 或者使用between and条件句:【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(3)数学成绩是 12 或者 65 或者 98 或者 100 分的同学及数学成绩: 【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

上面使用or条件句过于复杂,我们可以换成in条件句:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(4)姓名以a开头的同学及a某同学:

为了演示该例子我们再插入两组数据:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

在这里我们需要用到like进行模糊查找,在字符a后面加上%表示a字符后可以跟任意多个(包括 0 个)任意字符,这样子我们就可以招找到姓名以a开头的同学了:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

在字符a后面加上_表示a字符后只能跟一个任意字符 ,这样我们就可以查到a某同学:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(5)语文成绩好于英语成绩的同学

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 (6)总分在 200 分以下的同学

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

当然我们对总分这一列重命名:【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

那既然重命名了总分这一列,where字句的后面直接用重命名的列不是更方便吗?

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

但是系统是不支持的,要知道执行这句指令时,先要执行计算where语句后面的条件,再拿到select语句中去筛选。所以在where执行时总分这一列还没有被重命名,系统会自动报错。

(7)语文成绩 > 80 并且姓名不以a开头的同学

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(8)姓名以b开头的同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80 

当条件过多时,可以使用()来将多个条件视为一个整体:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.1.6 对查询结果进行排序

我们可以使用order by语句对select的查询结果进行排序:

SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

-- ASC 为升序(从小到大),DESC 为降序(从大到小),默认为 ASC

要注意NULL视为比任何值都小!

下面我们来进行演示:

(1)查询同学及数学成绩,按数学成绩升序显示

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(2)查询同学及英语成绩,按英语成绩降序显示

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(3)查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示

即数学成绩升序排列,如果相等数学成绩相等按英语成绩升序,如果英语成绩相等按语文成绩升序:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(4)查询同学及总分,由高到低排序

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

我们可以看到order by语句可以使用select语句前面重命名的列名,和where语句不一样。

这是因为select在选择完数据后才会交给order by语句来排序,在选择完数据时已经对列进行了重命名,所以order by语句可以使用select语句前面重命名的列名。

2.1.7 分页显示筛选结果

我们可以使用limit关键字来对我们select的筛选结果进行部分显示,其语法有三种:

从第一行开始向下显示n行:

select ... limit n;

从第n1行(0为第一行)开始向下显示n2行:

select ... limit n1,n2;

从第n2行(0为第一行)开始向下显示n1行:

select ... limit n1 offset n2;

建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死。

下面来演示一下:

从第一行开始,向下显示3行:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 从第4行开始,向下显示2行:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

如此一来就可以进行对表进行分页显示了,比如我们每一页显示该表的3行数据:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

或者

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.2 分组聚合查询

该内容涉及到下文的聚合函数,建议看完聚合函数后再回头来看该部分内容

2.2.1 使用group by对数据进行分组

在select中使用group by子句可以对指定列进行分组查询:

select column1, column2, .. from table group by column;

分组查询有什么用呢?别急,我们下面用实例一一说明:

下面我们创建一个雇员信息表(来自oracle 9i的经典测试表)(该表的sql文件已上传到资源中,大家可以下载直接使用,如果下载不了就使用下面的建表语句):

DROP database IF EXISTS `scott`;
CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

USE `scott`;

DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
  `deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号',
  `dname` varchar(14) DEFAULT NULL COMMENT '部门名称',
  `loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点'
);


DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
  `empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号',
  `ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名',
  `job` varchar(9) DEFAULT NULL COMMENT '雇员职位',
  `mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编号',
  `hiredate` datetime DEFAULT NULL COMMENT '雇佣时间',
  `sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪',
  `comm` decimal(7,2) DEFAULT NULL COMMENT '奖金',
  `deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号'
);


DROP TABLE IF EXISTS `salgrade`;
CREATE TABLE `salgrade` (
  `grade` int(11) DEFAULT NULL COMMENT '等级',
  `losal` int(11) DEFAULT NULL COMMENT '此等级最低工资',
  `hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资'
);


insert into dept (deptno, dname, loc)
values (10, 'ACCOUNTING', 'NEW YORK');
insert into dept (deptno, dname, loc)
values (20, 'RESEARCH', 'DALLAS');
insert into dept (deptno, dname, loc)
values (30, 'SALES', 'CHICAGO');
insert into dept (deptno, dname, loc)
values (40, 'OPERATIONS', 'BOSTON');

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);

insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);

insert into salgrade (grade, losal, hisal) values (1, 700, 1200);
insert into salgrade (grade, losal, hisal) values (2, 1201, 1400);
insert into salgrade (grade, losal, hisal) values (3, 1401, 2000);
insert into salgrade (grade, losal, hisal) values (4, 2001, 3000);
insert into salgrade (grade, losal, hisal) values (5, 3001, 9999);

我们使用source语句将该表导入到MySQL中:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

导入后我们查看一下该数据库 :

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux下面我们正式开始进行分组查询:

(1)显示每个部门的平均工资和最高工资

 我们可以使用聚合函数对所有员工的平均工资和最高工资进行统计:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

但是我们的目的要将所有员工以所在部门为单位统计,所以在这里group by语句就要上场了:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

这样子我们可以看到数据被分成了三份,但是每组数据具体属于哪个部门还看不出来,我们可以打印数据所在deptno列来看看:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

从上述例子我们可以看出:分组,就是把一组数据按照条件拆成了多个组,进行各自组内的统计分组(“分表”),就是把一张表按照条件在逻辑上拆成了多个子表,然后分别对各自的子表进行聚合统计

(2)显示每个部门的每种岗位的平均工资和最低工资

我们可以看到该需求需要我们现将数据进行按部门分组,按部门分完组后再按岗位进行分组,最后将每组的数据做统计:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

2.2.1 使用having对分组后的数据进行条件判断

下面我们有一个需求:

显示平均工资低于2000的部门和它的平均工资

我们可以将这个需求分为两部分:

一:统计出来每一个部门的平均工资结果先聚合出来

二:再对聚合的结果进行判断,看其是否小于2000

我们先来实现第一步:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux
 

第二步我们要用到一个关键字having,可以对group by的结果进行条件判断(where无法对group by的分组结果进行条件判断):

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

三、对表中的数据进行修改

对表中数据进行修改时我们会用的update

update 表名 set 要修改的列名1=数据1,列名2=数据2,... [where ...] [order by ...] [limit ...];

下面我们开始举例说明:

(1)将a同学的数学成绩变更为 80 分

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

这里要注意了,如果不加后面的where语句默认对表math列的全部数据进行修改,这是很危险的!

(2)将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

四、删除表中的数据

对表中的数据做删会用到delete关键字:

DELETE FROM 表名 [WHERE ...] [ORDER BY ...] [LIMIT ...]

如果DELETE FROM 表名后面不接任何条件句回删除整张表中的数据!

下面我们来举例:

(1)删除a同学的考试成绩

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(2)删除总分倒数第一同学的考试成绩 

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(2)删除表中全部数据

我们以下面这张表为列,删除其内部全部数据:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

我们可以看到delete确实删除了表中所有数据,但是自增建的默认值没没有发生变化,所以使用delete删除表中所有数据并不会重置自增建!

五、截断表

我们可以使用下面的语句直接删除表中的所有数据(注意:这个操作慎用 ):

TRUNCATE [TABLE] 表名;

要强调一下:

1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;

2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚

3. 会重置 AUTO_INCREMENT

下面拿这张表来操作一下: 

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

我们可以看到经过truncate之后,该表不仅仅所有数据都清空了,并且建表语句中AUTO_INCREMENT也没有了

我们再插入数据试试看:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

我们可以看到AUTO_INCREMENT已经被重置了

六、聚合函数

MySQL内有一些函数可供我们调用,下面我们来提前讲一讲聚合函数为分组查询做准备:

函数 说明
COUNT([DISTINCT] expr) 返回查询到的数据的数量
SUM([DISTINCT] expr) 返回查询到的数据的总和,不是数字没有意义
AVG([DISTINCT] expr) 返回查询到的数据的平均值,不是数字没有意义
MAX([DISTINCT] expr) 返回查询到的数据的最大值,不是数字没有意义
MIN([DISTINCT] expr) 返回查询到的数据的最小值,不是数字没有意义

下面我们继续举例:

(1)统计共有多少个学生

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

当然我们也可以对查询结果进行重命名:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 (2)统计本次考试的数学成绩个数

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 (3)统计本次考试的数学成绩分数个数(去除重复的分数)

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(4)统计数学成绩总分 

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(5)统计数学大于90分的人数【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(6)统计全班数学平均分 

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

或者:

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

 (7)统计全班总分平均分

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux (8)返回英语最高分

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux

(9)返回 > 70 分以上的数学最低分

【MySQL】对表中数据的操作,MySQL,MySQL,数据库,mysql,linux


该篇博客知识点较多,还请大家慢慢反复观看

感谢各位的阅览~我们下期见~

更多MySQL技能请看:http://t.csdn.cn/W9dQl

博主努力更新中~文章来源地址https://www.toymoban.com/news/detail-631205.html

到了这里,关于【MySQL】对表中数据的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MYSQL 查询数据库中所有表中的数据量

    SELECT TABLE_NAME, TABLE_ROWS  FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_SCHEMA = \\\'your_database_name\\\'; 将 your_database_name 替换为您实际使用的数据库名称。 执行以上查询语句后,将会获取到 your_database_name 数据库中所有表的数据量,其中 TABLE_NAME 列表示表名称, TABLE_ROWS 列表示表中的数据量。

    2024年02月11日
    浏览(69)
  • mysql-数据库-在表中添加数据三种方式

    创建完成后,就可以进行添加数据的操作了(表的名字是自己起的),记得和下面的名字匹配上就行。 1.第一行数据,使用第一种形式 2.第二行数据,指定你要指定要插入字段 4.使用一条insert into语句插入多条记录 以下仅供参考: 完成后,即可查看表中的数据

    2024年02月08日
    浏览(50)
  • MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

    MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计 MySQL案例——多表查询以及嵌套查询 MySQL笔记——数据库当中的事务以及Java实现对数据库进

    2024年01月16日
    浏览(75)
  • 基于Linux操作系统中的MySQL数据库操作(三十)

    MySQL数据库安装 目录 一、概述 (一)什么是数据库 (二)数据库能干什么     1、企业应用     2、金融行业     3、电子商务     4、社交媒体     5、物联网 (三)为什么要用数据库,优势、特性?     1、可靠性和稳定性     2、数据管理能力     3、数据共享和集成  

    2024年02月15日
    浏览(61)
  • 数据库将一张表中的数据更新到另一张表(Oracle、MySQL)

            方式一(推荐)         方式二         方式一比方式二效率快很多

    2024年02月07日
    浏览(70)
  • 基于Linux操作系统中的MySQL数据库SQL语句(三十一)

    MySQL数据库SQL语句 目录 一、SQL语句类型 1、DDL 2、DML 3、DCL 4、DQL 二、数据库操作 1、查看 2、创建 2.1、默认字符集 2.2、指定字符集 3、进入  4、删除 5、更改 6、练习 三、数据表操作 (一)数据类型 1、数值类型 1.1、TINYINT 1.2、SMALLINT 1.3、INT 1.4、BIGINT 1.5、FLOAT(M,D) 2、时间

    2024年02月15日
    浏览(68)
  • Linux环境下(CentOS操作系统)如何修改MySQL数据库及Redis的密码?

    【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!   《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享; 欢迎商业项目咨询,10年+软硬全

    2024年02月15日
    浏览(60)
  • 【MySQL--->数据库操作】

    语句格式:create database [if no exists]数据库名[create_specification [,create_specification] …]; 中括号内是可选项,if no exists是指如果数据库不存在就创建,存在就不创建,相当于自动查重. create_specification 可以指定数据库的编码格式和校验规则. drop database 数据库名; alter database 数据库名 指定

    2024年02月13日
    浏览(45)
  • MySQL 数据库操作

     提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、关系模型 二、数据库的操作 创建数据库 查看数据库 选择数据库 删除数据库 三、MySQL 数据库命名规范 总结 关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的

    2023年04月08日
    浏览(57)
  • 【MySQL】MySQL 数据库的介绍与操作

    目录 1. 登录 MySQL 数据库 2. MySQL 介绍 3. 操作数据库 1、创建数据库 2、删除数据库 3、插入数据 4、查找 5、修改数据库 4. 表的操作 1、创建表 2、查看表 3、修改表 4、删除表 写在最后: 指令: 这里我来介绍一下他的选项,-h 表示指明登录部署 MySQL 服务的主机,-P 表示我们要

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包