您的位置:首页 > 新闻 > 热点要闻 > 无锡网站建设网络推广_国家企业信用公示信息系统入口_太原做网站的工作室_青岛网站开发公司

无锡网站建设网络推广_国家企业信用公示信息系统入口_太原做网站的工作室_青岛网站开发公司

2024/12/26 11:02:16 来源:https://blog.csdn.net/2402_82658387/article/details/144676751  浏览:    关键词:无锡网站建设网络推广_国家企业信用公示信息系统入口_太原做网站的工作室_青岛网站开发公司
无锡网站建设网络推广_国家企业信用公示信息系统入口_太原做网站的工作室_青岛网站开发公司

在这里插入图片描述

在这里插入图片描述

Create

语法

[ ]:表示该内容可以省略
在这里插入图片描述

全列插入

在这里插入图片描述

指定列插入

在这里插入图片描述

多行插入

在这里插入图片描述

插入否则更新

当创建的表中有唯一性约束时,当插入数据冲突时,更新数据。
在这里插入图片描述

  • 语法
    在这里插入图片描述

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

替换

  • 语法
    在这里插入图片描述

在这里插入图片描述

Retrieve

语法

在这里插入图片描述

  • distinct:去重

简单使用

  • 建表
CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese float DEFAULT 0.0 COMMENT '语文成绩',
math float DEFAULT 0.0 COMMENT '数学成绩',
english float DEFAULT 0.0 COMMENT '英语成绩'
);
  • 插入数据
INSERT INTO exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);
  • 全列查询
    在这里插入图片描述

  • 指定列查询
    语法中指定列的顺序就是显示的顺序
    在这里插入图片描述

重命名

用as或者用空格都可以重命名
在这里插入图片描述

查询结果去重

  • 查数学成绩
    在这里插入图片描述
    去重了一个98

where子句

关系运算符

在这里插入图片描述

  • =:null不安全
    在这里插入图片描述
  • <=>: null安全
    -在这里插入图片描述

逻辑运算符

在这里插入图片描述

使用

在这里插入图片描述

在这里插入图片描述

查询总分>200分的人

在这里插入图片描述
为什么where在使用别名时会错误?
与mysql的执行顺序有关
首先需要知道在那个表中查询,其次需要知道筛选的条件,最后才需要知道显示哪些列。
在这里插入图片描述

英语不及格的人及英语成绩(<60)

在这里插入图片描述

语文成绩在 [80, 90] 分的同学及语文成绩

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

数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

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

姓孙的同学 及 孙某同学

在这里插入图片描述

语文成绩好于英语成绩的同学

在这里插入图片描述

总分在 200 分以下的同学

在这里插入图片描述

语文成绩 > 80 并且不姓孙的同学

在这里插入图片描述

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

在这里插入图片描述

查询NULL

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

结果排序

语法

在这里插入图片描述

同学及数学成绩,按数学成绩升序显示

在这里插入图片描述

id及 name,按 name排序显示

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

  • 有上面可以知道NULL比任何值都小

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

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

查询同学及总分,由高到低

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

  • 这里为什么可以使用别名?
    在这里插入图片描述
    排序,先有数据在排序,order by的执行顺序在select之后

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

在这里插入图片描述

筛选分页结果

语法

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

  • limit n 从表头开始,连续读取n行
    在这里插入图片描述

  • limit s,n 从第s行开始,连续读取n行
    在这里插入图片描述
    由上面的结果可以知道,表的第一行起始为0

  • limit n offset s 从第s行开始,连续读取n行
    跟limit s,n效果一样
    在这里插入图片描述

执行顺序

在这里插入图片描述

  • 需要有数据才能排序,所以order by在select之后;只有数据准备好了,才要显示,所以limit在order by之后,limit的本质就是“显示”。

通过limit将表分页

在这里插入图片描述

Update

语法

在这里插入图片描述

使用

将孙悟空同学的数学成绩变更为 80 分

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

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

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

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

总分排名倒数前三的
在这里插入图片描述
数学加分
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

Delete

语法

在这里插入图片描述

使用

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

在这里插入图片描述

删除整张表的数据

在这里插入图片描述

  • 这种删除只是删除了,表中的数据标的结构没有删除
    在这里插入图片描述
    在这里插入图片描述

截断表

语法

在这里插入图片描述

与delete的不同

在这里插入图片描述

在这里插入图片描述

  1. 清空auto_increment 这个计数器
  2. 不走事务
  3. 不会把操作记录在目录中

日志

在这里插入图片描述

插入 查询结果

语法

在这里插入图片描述

案例

删除表中的重复数据,重复的数据只能有一份

-- 创建原数据表
CREATE TABLE duplicate_table (id int, name varchar(20));
Query OK, 0 rows affected (0.01 sec)
-- 插入测试数据
INSERT INTO duplicate_table VALUES
(100, 'aaa'),
(100, 'aaa'),
(200, 'bbb'),
(200, 'bbb'),
(200, 'bbb'),
(300, 'ccc');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
  • 思路: 1.创建一张一样的表duplicate1_table
    在这里插入图片描述
    2.向duplicate1_table中插入不重复的数据
    在这里插入图片描述在这里插入图片描述

3.重命名
在这里插入图片描述

  • 为什么最后通过rename的方式进行?
    单纯的等一切都准备就绪了,然后统一的放入,更新,生效等。

聚合函数

在这里插入图片描述

使用

统计班级共有多少同学

在这里插入图片描述

查询表中b有多少

  • 使用*,会算NULL;不用*,则不会算NULL。
    在这里插入图片描述

统计本次考试的数学成绩分数个数

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

统计数学成绩总分

在这里插入图片描述

统计平均总分

在这里插入图片描述

返回英语最高分

在这里插入图片描述

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

在这里插入图片描述

分组 group by

语法

在这里插入图片描述

  • 分组的目的是,分组之后,方便进行聚合统计。

oracle 9i测试

链接:oracle i9经典测试雇佣表

  • DEPT部门表

在这里插入图片描述

  • EMP员工表
    在这里插入图片描述
  • SALGRADE工资等级表在这里插入图片描述
显示每个部门的平均工资和最高工资

在这里插入图片描述

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

在这里插入图片描述

显示平均工资低于2000的部门和它的平均工资
  • having和group by配合使用,对group by结果进行过滤
    在这里插入图片描述

  • 统计各个部门的平均工资
    在这里插入图片描述

  • 去除掉SMITH后的工资后的每个部门的平均工资
    在这里插入图片描述
    在这里插入图片描述

  • 执行顺序
    在这里插入图片描述

  • 分组统计,指定列名,实际分组是用该列的不同行的数据进行分组—>分组条件***,组内一定是相同的–>可以被聚合,就是把一组按条件拆成多组,进行各自组内的统计。

  • 分组(“分表”),把一张表,按条件拆成了多个子表,然后对子表进行聚合统计

having

对聚合后的结果进行判断,即对聚合后的数据进行统计(条件筛选)

  • having vs where
    having 对分组聚合之后的结果,进行条件筛选
    where 是具体的任意列进行筛选
    两者的区别:条件筛选的阶段不同
  • 对 “结果“ 的理解
    不要单纯的认为,只有从磁盘上表结构导入到mysql中真实存在的表才叫表。
    中间筛选出来的,包括最终结果都是逻辑上的表,mysql中‘一切皆表’.—>只要处理好一张表的CRUD,所有sql场景,全部都能用统一的方式进行—>?(这之后会讲)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com