MySQL中SQL命令语句条件查询

news2024/11/27 0:50:28

一、聚合函数

聚合函数:又叫组函数,用来对表中的数据进行统计和计算,结合group by分组使用,用于统计和计算分组数据

常用聚合函数

  • count(col):求指定列的总行数
  • max(col):求指定列的最大值
  • min(col):求指定列的最小值
  • sum(col):求指定列的和
  • avg(col):求指定列的平均值(不计null值)
    • ifnull(字段名,指定值):判断指定字段是否为null,若为空则使用指定值替换

二、分组查询

分组查询:将查询结果按指定字段进行分组,字段中数据相等的分为一组

  • 语法:group by 列名 [having 条件表达式][with rollup]
    • 列名:指按指定字段的值进行分组
    • having 条件表达式:用来过滤分组后的数据
    • with rollup:在所有记录最后加上一条记录,显示select查询时聚合函数的统计和计算结果

group by:用于单个或多个字段分组

group_concat(字段名):统计每个分组指定字段的信息集合,每个信息间用逗号分隔

group by结合聚合函数使用

group by结合having使用

having作用:与where类似,用来过滤分组数据,只能用于group by

group by结合with rollup使用

with rollup作用:在记录最后新增一行,显示select查询时聚合函数的统计和计算结果

三、连接查询

连接查询:能够实现多个表之间的查询,适合查询的字段数据来自不同的表的情况

内连接:查询两个表中符合条件的共有记录,根据连接查询条件取出两个表中的交集
内连接查询语法:select 字段 from 表1 inner join 表2 on 表1.字段1=表2.字段2;
    inner join:内连接查询关键字
    on:连接查询条件

左连接:以左表为主根据条件查询右表数据,若右表数据不存在则用null填充
左连接查询语法:select 字段 from 表1 left join 表2 on 表1.字段1=表2.字段2;
    left join:左连接查询关键字
    on:连接查询条件
    表1为左表,表2为右表

右连接:以右表为主根据条件查询左表数据,若左表数据不存在则用null值填充
右连接查询语法:select 字段 from 表1 right join 表2 on 表1.字段1=表2.字段2;
    right join:右连接查询关键字
    on:连接查询条件
    表1为左表,表2为右表

自连接:左表与右表为同一个表,根据连接查询条件查询两个表中数据,必须对表起别名
自连接查询语法:select 字段 from 表名 as 别名1 inner join 表名 as 别名2 on 别名1.字段1=别名2.字段2;
自连接查询就是把一张表模拟成左右两张表,然后进行连表查询,是一种特殊的连接方式,连接的表还是本身这张表 

四、子查询

子查询:在select语句中嵌入另一个select语句,被嵌入的select称为子查询语句,外部select称为主查询 

子查询与主查询关系

  • 子查询是嵌入在主查询中的
  • 子查询辅助主查询,用来充当条件或数据源
  • 子查询可以独立存在,是一条完整的select语句

五、数据库设计三范式及E-R模型

范式:对设计数据库提出的一些规范,共有8范式,一般只需遵循3范式 

  • 第一范式(1NF):强调列的原子性,即列不能再细分为其他列
  • 第二范式(2NF):满足1NF,另有两部分内容
    • 表必须有一个主键
    • 非主键字段必须完全依赖于主键,不能只依赖与主键一部分
  • 第三范式(3NF):满足 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况

E-R模型:即实体-关系模型,用来描述数据库存储数据的结构模型

  • 实体:用矩形表示,并标注实体名称
  • 属性:用椭圆表示,并标注属性名称
  • 关系:用菱形表示,并标注关系名称
    • 一对一:如人与身份证,在两个表中创建一个字段,其中一个表存储另一个表的主键值,关系是一种数据,需要通过一个字段存储在表中
    • 一对多:如学生表与班级表,在多的一方表(学生表)中创建一个字段,存储班级表的主键值
    • 多对多:如学生表、班级表、科目表,新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值

六、外键约束

外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,若数据不合法则更新和插入失败,能够保证数据有效性

添加和删除外键约束

已存在的字段添加外键约束:alter table 表1 add foreign key(表1中的外键) references 表2(表2主键);
                    或:alter table 从表 add foreign key(外键字段) references 主表(主键字段);
例:alter table students add foreign key(sid) references classe(id);

创建表添加外键约束:
create table teacher(
    id int primary key auto_increment not null,
    name varchar(10),
    sid int not null,
    foreign key(sid) references students(id)
);

删除外键约束:
获取外键约束名称:show create table 表名;
删除:alter table 表名 drop foreign key 外键名;

学习导航:http://xqnav.top/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SnowNLP使用自定义语料进行模型训练(情感分析)

SnowNLP SnowNLP是一个功能强大的中文文本处理库,它囊括了中文分词、词性标注、情感分析、文本分类、关键字/摘要提取、TF/IDF、文本相似度等诸多功能,像隐马尔科夫模型、朴素贝叶斯、TextRank等算法均在这个库中有对应的应用。如果大家仔细观察过博主的…

nodejs的下载安装

1.从官网下载nodejs 官网地址如下 Download | Node.js 选择老版本的node防止出现兼容问题 根据电脑下载64位或者32位的 2.安装node 配置环境变量,nodejs安装完成后,会默认在系统path环境变量中配置node.exe的路径,打开cmd,输入n…

Java实现DFA算法进行敏感词过滤

一、敏感词过滤数据文件 https://github.com/jkiss/sensitive-words 代码图数据文件如下: 二、敏感词实现原理基于二叉树排序 首先:query 日 ---> {本}、query 本 --->{人、鬼子}、query 人 --->{null}、query 鬼 ---> {子}。形如下结构&…

见微知著,从两道有意思的 CSS 面试题,考察你的基础

今天在论坛&#xff0c;有看到这样一道非常有意思的题目&#xff0c;简单的代码如下&#xff1a; <div><p id"a">First Paragraph</p> </div> 样式如下&#xff1a; p#a {color: green; } div::first-line {color: blue; } 试问&#xff0…

手写笔记教会你集成Spring和Mybatis框架(有详细注解)

目录 1. 为什么要将框架进行集成呢&#xff1f; 2. 框架的集成有什么好处&#xff1f; 3. Spring框架与Mybatis框架的集成 3.1 步骤一&#xff1a; 3.2 步骤二 3.3 Spring的配置文件&#xff1a; 3.4 Mybatis的配置文件&#xff1a; 4. 总结 1. 为什么要将框架进行集成…

基于51单片机智能恒温箱控制系统Proteus仿真

资料编号&#xff1a;153 下面是相关功能视频演示&#xff1a; 153-基于51单片机智能恒温箱控制系统Proteus仿真(源码仿真全套资料)功能介绍&#xff1a; 采用51单片机作为控制CPU&#xff0c;ds18b20作为温度传感器采集温度&#xff0c;LCD1602显示当前温度&#xff0c;采用…

【Yarn】spark/flink 作业的executor内存参数和Yarn web ui 显示不一致问题

前言 最近在做 CDH -> CDP 的迁移&#xff0c;Yarn迁移完成后&#xff0c;发现在spark/flink 作业的executor内存参数和Yarn web ui 显示申请的内存不一致。 例如&#xff1a;一个 spark 任务申请了 10个 executor&#xff0c;每个executor 内存为 1G&#xff0c;driver内…

董秋仙-1-函数极限连续-2

目录 利用单调有界原理求数列收敛&#xff0c;主要分为两步 利用切线放缩和定积分放缩 拆成两个调和级数相减拉链定理 使用诱导公式转化为可以使用等价无穷小的情形 无穷区间零点定理的取点 证明数列收敛有四种方法 证明调和级数发散的方法 利用单调有界原理求数列收敛&…

Docker专题(五)之 端口映射与容器互联

文章目录一、端口映射实现容器访问1.1 从外部访问容器的应用1.2 映射所有接口的地址1.3 映射到指定地址的指定端口1.4 映射到指定地址的任意端口1.5 查看映射端口配置二、互联机制实现便捷访问2.1自定义容器命名2.2 容器互联Docker除了通过网络来访问外&#xff0c;还提供了两个…

网络是怎样连接的--探索协议栈和网卡

“如果一生只有一次翻身的机会&#xff0c;那就用尽全力吧。” 文章目录1.创建套接字1.1 协议栈的内部结构1.2 套接字的实体就是通信控制信息1.3 调用socket时的操作2.连接服务器2.1连接含义2.2 负责保存控制信息的头部2.3 连接操作的实际过程3.收发数据3.1将http请求消息交给协…

JavaScript | 1000个判断条件难道要写了1000个 if ? 一文教你如何实现分支优化

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;大三学生&#xff0c;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ NodeJS专栏&#xff1a;Node.js从入门到精通 &#x1f5a5;️ 博主的前端之路&#xff08;源创征文一等奖作品&#xff09;&#xff1a;前端之行&am…

K线形态识别_身怀六甲和十字胎

写在前面&#xff1a; 1. 本文中提到的“K线形态查看工具”的具体使用操作请查看该博文&#xff1b; 2. K线形体所处背景&#xff0c;诸如处在上升趋势、下降趋势、盘整等&#xff0c;背景内容在K线形态策略代码中没有体现&#xff1b; 3. 文中知识内容来自书籍《K线技术分析》…

双非本计算机从零开始三年努力能做到什么程度【学习路线回顾总结问答】

文章目录前言一、回顾大学1.1 大一上1.1.1 第一个学期1.1.2 第一个寒假1.2 大一下1.2.1 第二个学期1.2.2 第一个暑假1.3 大二上1.3.1 第三个学期1.3.2 第二个寒假1.4 大二下1.4.1 第四个学期1.4.2 第二个暑假1.5 大三上1.5.1 第五个学期1.5.2 第三个寒假1.6 大三下1.6.1 第六个…

3.1 机器学习 --- 决策树

3.1 机器学习 — 决策树 一 金融评分卡 模型做好后尽量快的上线&#xff0c;以符合要求的模型&#xff0c;尽快上线。超参数赋予权重&#xff0c;使得模型的参数不一致&#xff0c;而达到均衡样本数据 二 决策树原理 1. 找女朋友 性别&#xff1a;男 女年龄&#xff1a;20…

二叉树跟前缀、中缀、后缀表达式

目录 一.概念 二.跟二叉树的联系 前序遍历&#xff08;先根遍历&#xff09; 中序遍历&#xff08;中根遍历&#xff09; 后序遍历&#xff08;后根遍历&#xff09; 二叉树例题 三.知二求一并还原二叉树 已知前序遍历和中序遍历 例题 解答 已知中序遍历和后序遍历 …

【双十一特辑】爱心代码(程序员的浪漫)

个人主页&#xff1a;天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 目录 前言 C语言简易爱心代码 原理 代码 执行结果 C语言动态爱心代码 涉及知识点 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),字体色) sheep() 代码 执行结果 Python简易爱…

c++数据结构第六周(图),深搜、广搜(stl版)

本方法皆用vector进行邻接表模拟 7-1 图的先深搜索 作者 唐艳琴 单位 中国人民解放军陆军工程大学 输出无向图的给定起点的先深序列。 输入格式: 输入第一行给出三个正整数&#xff0c;分别表示无向图的节点数N&#xff08;1<N≤10&#xff09;、边数M&#xff08;≤50&a…

CentOS7.x部署GreenPlum6.x

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、GreenPlum是什么&#xff1f;二、使用步骤1.环境说明2.集群介绍3.修改主机名(root)4.网络映射(root)5.创建安装目录6.安装部署7.SSH (免密登录)8.环境配置9.…

【SOLIDWORKS学习笔记】制作小风扇摇头底座(下)--- 细节优化

介绍&#xff1a;俗话说的好&#xff0c;电控决定机器人下限&#xff0c;机械决定机器人上限。作为一个在电控领域摸打滚爬了三年的选手&#xff0c;一直非常心动那些酷炫的机械模型&#xff0c;但是一直以来只能做甲方给别人提需求&#xff0c;做不到自己动手实现。所以我打算…

ES6学习24~47

2.14 Promise 2.14.1 什么是Promise Promise是ES6引入的异步编程的新解决方案。语法上Promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。 Promise 构造函数: Promise (excutor) {}Promise.prototype.then 方法Promise.prototype.catch 方法 2.14.2 pr…