[MySQL]MySQL表中数据的增删查改(CRUD)

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

[MySQL]MySQL表中数据的增删查改(CRUD)


CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除),也就是增删查改。

1. 新增数据

语法:

INSERT [INTO] table_name
	[(column [, column] ...)]
	VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...
  • column为属性列。
  • values为数据。

1.1 单列插入

方式1:

省略属性列

insert [into] table_name values (data1, data2 …);

由于省略了属性列,因此需要包含每个属性列的对应数据。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

方式2:

不省略属性列

insert [into] table_name ([column1], [column2]…) values ([data1], [data2]);

插入时只需要将指定的属性列的对应数据包含即可。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

两种插入方式结果查询:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

1.2 多列插入

多列插入的方式与单列插入相同,只是在一条语句内写出多条记录,并用逗号隔开。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

1.3 插入否则更新

直接插入主键或者唯一键对应的值已经存在会造成数据冲突,进而选择替换操作。

语法:

INSERT [INTO] table_name
	[(column [, column] ...)]
	VALUES (value_list) [, (value_list)] ...
	ON DUPLICATE KEY UPDATE
column = value [, column = value] ...
  • – 通过ROW_COUNT()函数可以获取受到影响的数据行数。

情况1:

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

情况2:

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

情况3:

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

1.4 替换

主键或者唯一键 没有冲突,则直接插入;主键或者唯一键如果冲突,则删除后再插入

语法:

REPLACE INTO [(column [, column] ...)] students  VALUES VALUES (value_list) [, (value_list)] ...;

情况1:

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

情况2:

表中有冲突数据,删除后重新插入 – 2 row affected

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2. 基本查询数据

语法:

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

2.1 全列查询

select * from table_name;

  • 通常不建议全列查询,因为查询的列越多,意味着需要传输的数据量越大。
  • 可能会影响到索引的使用。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.2 指定列查询

select [column1,[column2]…] from table_name;

  • 指定列的顺序不需要按定义表的顺序来。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.3 查询字段为表达式

select [column1,[column2]…] [表达式 …] from table_name;

情况1:表达式不包含字段

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

情况2:表达式包含一个字段

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

情况3:表达式包含多个字段

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.4 为查询结果指定别名

语法:

SELECT column [AS] alias_name [...] FROM table_name;

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.5 结果去重

SELECT DISTINCT {* | {column [, column] …} FROM table_name

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.6 where子句

where子句会进行条件判断筛选数据行。

语法:

SELECT ... FROM table_name WHERE ... [ORDER BY column [ASC | DESC], ...]
  • where子句中可以使用表达式
  • 别名不能用在 WHERE 条件中

含有where子句的SQL语句的执行顺序:

  1. 找表(from table_name),

  2. 筛选(where子句),

  3. 显示数据(select)并且只是在最后显示数据的时候修改别名

因此where子句筛选不到表中起别名的属性列,并且where子句不能起别名,因此where子句无法使用别名。

比较运算符:

运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL,等号两侧的NULL不参与比较
<=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1),等号两侧的NULL参与比较
!=, <> 不等于
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)

where子句使用示例:

示例1: 英语不及格的同学及英语成绩 ( < 60 )

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例2: 语文成绩在 [80, 90] 分的同学及语文成绩

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例3: 数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例4: 姓孙的同学 及 孙某同学

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例5: 语文成绩好于英语成绩的同学

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例6: 总分在 200 分以下的同学

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

下面的语句是错误的(where子句不能使用别名):

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例7: 语文成绩 > 80 并且不姓孙的同学

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例8: 孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80

![i[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例9: NULL的查询

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

以下语句为错误的:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.7 order by 子句

order by子句能够将查询结果进行排序。

语法:

SELECT ... FROM table_name [WHERE ...]
	ORDER BY column [ASC|DESC], [...];
  • ASC 为升序(从小到大)
  • DESC 为降序(从大到小)
  • 默认为 ASC
  • NULL 视为比任何值都小,升序出现在最上面
  • NULL 视为比任何值都小,降序出现在最下面
  • 多字段排序,排序优先级随书写顺序
  • ORDER BY 中可以使用表达式
  • ORDER BY 子句中可以使用列别名

含有order by子句的SQL语句的执行顺序:

  1. 找到表(from table_name),
  2. 筛选数据(where子句)
  3. 找出表中数据(select),
  4. 对最后得到的数据进行排序(order by)

因此order by子句执行时能够看到别名。先得筛选得到最后数据然后排序的方法相比于先排序后筛选得到最后数据数据的方法,能够减少对不必要数据的的排序,减少时间和空间开销。

注意: 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。

示例1: 将数据按姓名的升序、降序查询

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例2: 查询同学各门成绩,依次按 数学降序,英语降序,语文升序的方式显示(数学相同,按照英语降序排列,数学、英语相同按照语文升序排序)

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例3: 查询同学及总分,由高到低

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例4: 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

2.8 筛选分页结果

筛选分页结果是在显示数据时只显示某几行的数据。

语法:

-- 起始下标为 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;

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

筛选分页结果示例:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

3. 修改数据

update是对查询到的结果进行列值更新

语法:

UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]
  • update语句不使用where子句筛选会对对应属性列所有数据进行修改。

示例1: 将孙悟空同学的数学成绩变更为 80 分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例3: 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例4: 将所有同学的语文成绩更新为原来的 2 倍

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

4. 删除数据

4.1 删除数据

delete能够删除表中若干行数据。

语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
  • delete语句不使用where子句筛选会将表中所有数据删除。
  • 删除表中所有数据,不影响表结构。

示例1: 删除孙悟空同学的考试成绩

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例2: 删除表中的所有数据

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

4.2 截断表

truncate清空表中数据,重置auto_increment;

语法:

TRUNCATE [TABLE] table_name;
  • 只能对整表操作,不能像 DELETE 一样针对部分数据操作 。
  • 实际上TRUNCATE不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事务,所以无法回滚 。
  • 会重置 AUTO_INCREMENT项。

示例:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

5. 插入查询结果

将从表中查询出来的数据插入到表中。

语法:

INSERT INTO table_name [(column [, column ...])] SELECT ...

示例: 删除表中的的重复复记录,重复的数据只能有一份

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

6. 聚合函数

聚合函数用于对对查询到的数据进行计算并返回一个汇总值。

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

示例1: 统计班级共有多少同学

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例2: 统计有数学成绩的人数

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例3: 统计不重复的数学成绩个数

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例4: 统计数学成绩总分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例5: 统计英语成绩平均分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例6: 统计英语不及格人数

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例7: 统计英语不及格同学英语总分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例8: 返回英语最高分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例9: 返回英语最低分

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

以下语句为错误的:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

7. group by子句的使用

7.1 group by子句

group by将表中数据根据指定属性列的数据不同而分成不同的组,分组之后能够方便聚合统计。

语法:

SELECT column1 [, column2], ... FROM table_name [WHERE ...] GROUP BY column [, ...] [order by ...] [LIMIT ...];
  • 查询SQL中各语句的执行顺序为:from、where、group by、select、order by、limit。
  • group by后面的列名,表示按照指定列进行分组查询。
  • 指定列内数据相同的被分为一组。
  • select 后只能跟group by中出现的属性或者聚合函数。

分组查询测试表 – 雇员信息表

雇员信息表的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);

上述SQL语句中创建了一个名为scott的数据库,在该数据库中分别创建了部门表(dept)、员工表(emp)和工资等级表(salgrade),并分别向三张表中插入了一些数据用于查询。

将上述SQL保存到文件中:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

使用Linux的指令将存有SQL的文件导入:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

在MySQL中使用source命令依次执行文件中的SQL:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

执行完文件中的SQL后查看数据库,就能看到多了一个名为scott的数据库:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

进入scott数据库,能够查询到有关雇员信息的三张表:

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

部门表(dept)表的结构和数据:

表中属性如下,部门编号(deptno)、部门名称(dname)、部门所在地点(loc)。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

员工表(emp)的表结构和表中的内容:

表中属性如下,雇员编号(empno)、雇员姓名(ename)、雇员职位(job)、雇员领导编号(mgr)、雇佣时间(hiredate)、工资月薪(sal)、奖金(comm)、部门编号(deptno)。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

工资等级表(salgrade)的表结构和表中的内容:

表中属性如下,等级(grade)、此等级最低工资(losal)、此等级最高工资(hisal)。

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

示例1: 显示每个部门的平均工资和最高工资

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

7.2 HAVING 条件

HAVING条件能够将聚合统计的结果做筛选。

  • 查询SQL中各语句的执行顺序为:from、where、group by、having、select、order by、limit。

HAVING 和 WHERE的区别:

  • 条件筛选的阶段不同。
  • where是对表中具体列进行筛选。
  • 对分组聚合后的结果进行条件筛选。

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

[MySQL]MySQL表中数据的增删查改(CRUD),MySQL,mysql,数据库,linux,centos,阿里云

8. 补充

SQL查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select > distinct > order by > limit文章来源地址https://www.toymoban.com/news/detail-566010.html

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

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

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

相关文章

  • 【MySql】如何重置MySQL数据库表中的id

     方法一:原来的id取消自增和主键,只用于表格的排序。 新插入一个id2,自然会根据自增重新排列。删除id,id2改id即可。 使用这种方法不影响表中数据,从1递增开始递增 方法二:清空表,并重置id 一次性删除所有数据,不可恢复,无法回滚  方法三: 方法四:

    2024年02月12日
    浏览(52)
  • 【MySQL】数据表的增删查改

    C:Create增加 R:Retrieve查询 U:Update更新 D:Deleta删除 添加数据是对表进行添加数据的,表在数据库中,所以还是得先选中数据库,选中数据库还在进行一些表得操作 现在我们有一张 student 表,里面有两个属性分别为:id和name 接下来我们就给student这个表进行添加数据 选中数

    2024年02月04日
    浏览(62)
  • 将Excel表中数据导入MySQL数据库

     字段信息与表格对应建表:  完成。

    2024年02月07日
    浏览(56)
  • java springboot整合Mongodb 对数据库集合进行增删查改操作

    下面 我们就来做 springboot 整合Mongodb的工作 我们终端打开 Mongodb 安装目录下的bin目录 然后执行 启动服务 然后 打开我们的 springboot 项目 在pom.xml 文件中 导入坐标 有了依赖之后 就还差配置 打开项目中的 application 配置文件 我这里用的 yml 格式 我们在上面 打个 mong 它就会弹出

    2024年01月18日
    浏览(52)
  • Java一般用于postgis空间数据库通用的增删查改sql命令

    目录 1 增加 2 删除 3 查询 4 更新 \\\"public\\\".\\\"JGSQGW_Geo\\\"为某模式下得表  一般postgrel有这样的设计模式

    2024年02月13日
    浏览(46)
  • 【MySQL探索之旅】MySQL数据表的增删查改(初阶)

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 前面我们学习了MySQL数据库

    2024年03月19日
    浏览(44)
  • 【MySQL探索之旅】MySQL数据表的增删查改——约束

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! not nul

    2024年04月15日
    浏览(43)
  • 【数据库】通过实例讲清楚,Mongodb的增删查改,分组查询,聚合查询aggregate

    目录 一.基础概念 二.数据库的管理 1.创建数据库 2.删除数据库 二.集合的管理 1.显示所有集合 2.创建集合 3.删除当前集合 4.向集合中插入元素 三.文档的管理 1.文档插入 2.文档的更新 3.文档的删除 4.文档查询 (1)查询基本语法: (2)查询table2集合下的所有文档 (3)查询t

    2024年02月10日
    浏览(42)
  • 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)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包