SQL语法:浅析select之七大子句
Mysql版本:8.0.26
可视化客户端:sql yog
目录
- 一、七大子句顺序
- 二、演示
- 2.1 from语句
- 2.2 on子句
- 2.3 where子句
- 2.4 group by子句
- 2.4.1 WITHROLLUP,加在group by后面
- 2.4.2 是否可以按照多个字段分组统计?
- 2.4.3 分组统计时,select后面字段列表的问题
- 2.5 having子句
- 2.6 order by子句
- 2.7 limit子句
提示:以下是本篇文章正文内容,下面案例可供参考
一、七大子句顺序
(1) from: 从哪些表中筛选。
(2) inner l left | right … on: 关联多表查询时,去除笛卡尔积
(3) where: 从表中筛选的条件
(4) group by: 分组依据
(5) having: 在分组统计结果中再次筛选 (with rollup)
(6) order by: 排序
(7) limit: 分页
注意:必须按照 (1) - (7) 的顺序编写子句。
二、演示
测试数据准备如下:
①创建数据表 t_department:
CREATE TABLE `t_department` (`did` int NOT NULL AUTO_INCREMENT COMMENT '部门编号',`dname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工名称',`description` varchar(200) DEFAULT NULL COMMENT '员工简介',PRIMARY KEY (`did`),UNIQUE KEY `dname` (`dname`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
②创建数据表t_employee
CREATE TABLE `t_employee` (`eid` int NOT NULL AUTO_INCREMENT COMMENT '员工编号',`ename` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工姓名',`salary` double NOT NULL COMMENT '薪资',`commission_pct` decimal(3,2) DEFAULT NULL COMMENT '奖金比例',`birthday` date NOT NULL COMMENT '出生日期',`gender` enum('男','女') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '男' COMMENT '性别',`tel` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '手机号码',`email` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '邮箱',`address` varchar(150) DEFAULT NULL COMMENT '地址',`work_place` set('北京','深圳','上海','武汉') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '北京' COMMENT '工作地点',`hiredate` date NOT NULL COMMENT '入职日期',`job_id` int DEFAULT NULL COMMENT '职位编号',`mid` int DEFAULT NULL COMMENT '领导编号',`did` int DEFAULT NULL COMMENT '部门编号',PRIMARY KEY (`eid`),KEY `job_id` (`job_id`),KEY `did` (`did`),KEY `mid` (`mid`),CONSTRAINT `t_employee_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `t_job` (`jid`) ON DELETE SET NULL ON UPDATE CASCADE,CONSTRAINT `t_employee_ibfk_2` FOREIGN KEY (`did`) REFERENCES `t_department` (`did`) ON DELETE SET NULL ON UPDATE CASCADE,CONSTRAINT `t_employee_ibfk_3` FOREIGN KEY (`mid`) REFERENCES `t_employee` (`eid`) ON DELETE SET NULL ON UPDATE CASCADE,CONSTRAINT `t_employee_chk_1` CHECK ((`salary` > 0)),CONSTRAINT `t_employee_chk_2` CHECK ((`hiredate` > `birthday`))
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
③创建数据表t_job
CREATE TABLE `t_job` (`jid` int NOT NULL AUTO_INCREMENT COMMENT '职位编号',`jname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '职位名称',`description` varchar(200) DEFAULT NULL COMMENT '职位简介',PRIMARY KEY (`jid`),UNIQUE KEY `jname` (`jname`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
2.1 from语句
SQL语法:浅析select之七大子句相关推荐
- SQL语法之SELECT INTO 语句
SQL学习 学习SQL语法 SQL语法 SQL学习 SELECT INTO 语句 SQL SELECT INTO 实例 - 制作备份复件 SQL SELECT INTO 实例 - 带有 WHERE 子 ...
- SQL笔记(一)SQL语法、SELECT语句、DISTINCT语句、LIMIT、LIMIT和OFFSET组合使用、WHERE 子句
文章目录 1SQL语法 1.1 SELECT 语句 1.1.1SQL SELECT 语句 1.1.2SQL SELECT 语法 1.2DISTINCT 语句 1.2.1 DISTINCT 的作用 1. ...
- 关系代数和SQL语法
数据分析的语言接口 OLAP计算引擎是一架机器,而操作这架机器的是编程语言.使用者通过特定语言告诉计算引擎,需要读取哪些数据.以及需要进行什么样的计算.编程语言有很多种,任何人都可以设计出一门编程语言 ...
- except在mysql中怎么实现_mysql-我的SQL语法怎么了?,我在其中使用DISTINCT和EXCEPT
我想在一种SQL语法中使用DISTINCT,NOT EXISTS,adn EXCEPT,但是它不起作用.这是我的SQL语法: SELECT DISTINCT S.ID, S.name FROM stu ...
- SQL 语法速成手册
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:静默虚空 排版:MarkerHub 原文:https://j ...
- 1.2W 字的 SQL 语法速成手册
来源 |https://juejin.im/post/5c7e524af265da2d914db18f 本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理.本文内容包括 ...
- SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别
SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别 我们在写存储过程的时候经常会遇到需要将查询到的数据存到一张表里面的情况,如将一个table1的数据 ...
- orcle与mysql的区别_Orcle与MySQL的SQL语法区别:
Orcle与MySQL的SQL语法区别: 1.在Oracle中用 select * from all_users显示所有的用户,而在MySQL中显示所有数据 库的命令是 show databases ...
- SQL语法之DDL和DML
SQL语法之DDL和DML DDL数据库定义语言 create 创建 alter 修改 drop 删除 drop和delete的区别 truncate DML 数据操作语言 inser ...
最新文章
- Freemarker和Spring开发:获取相对路劲和绝对路径的最优方式
- storm源码之storm代码结构【译】
- Programming Computer Vision with Python (学习笔记十二)
- Solaris10下Nagios安装
- Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)
- 最大似然估计_状态估计的基本概念(2)最大似然估计和最大后验估计
- WPF触发器(Trigger)
- 利用代码改变世界 #AzureDev
- ActionScript 3.0 编程
- 微信小程序 - 文本框显示限制最大长度
- Ubuntu下常用软件介绍
- 电梯远程监控维护系统方案
- js如何获取当月第一天和最后一天
- 客户关系管理之会员管理
- 【新手福音】分享一个自己制作的机器学习工具集合
- 使用R进行VENN_维恩图或韦恩图_的绘制_2020-11-08
- hdu 1429	胜利大逃亡(续)
- 字符串分隔 【问题描述】 输入两个字符串str和cut。cut由若干个字符构成,其中每个字符均可作为一个分隔字符对str进行分隔。
- 报表服务器组件,开发者手册概述:Power BI 报表服务器
- 迈克尔·杰克逊Michael Jackson,仅此记念
热门文章
- Python数据分析--平民最强宝可梦
- #171. 智力大冲浪 总结
- POI导出表格到浏览器工具类,poi工具类
- c语言熊猫病毒源代码,病毒:注册表的认识以及用c语言编写一个“百分之一熊猫烧香”...
- 半路出家: 如何转行成为软件开发者
- 踩坑无数后的最全的charles抓包app安装教程
- c# 可以设置透明度的 Panel 组件
- 无线电波的波长、频率与传播速度的关系
- 2017 北京赛区 J题 Pangu and Stones 【区间DP】
- 网络工程师成长日记412-长安大学项目