当前位置: 首页 > news >正文

SQL 语句学习总结:

1. 四范式&&范式好处:

数据库范式是数据表设计的规范,在范式规范下,数据库里每个表存储的重复数据降到最少(这有助于数据的一致性维护),同时在数据库范式下,表和表之间不再有很强的数据耦合,可以独立的增长 (ie. 比如汽车引擎的增长和汽车的增长是完全独立的). 范式带来了很多好处,

1. 基本结构:

1. distinct 关键字:

select distinct col1, col2, col3 from table1 ;

要求distinct 只能放在列名的前面,且会修饰每一个语句中涉及的列,即,会要求 col1,col2,col3都是唯一的

2. limit offset 关键字:

可以不指定offset从哪里截取,默认从结果返回出截取,只指定截取多少个的limit值

limit 和 offset 搭配 :获得 第x个内容:

如果按片长排列,John Lasseter导演导过片长第3长的电影是哪部,列出名字即可 :

select title from movies
where director='John Lasseter'
order by Length_minutes desc
limit 1 offset 2

3. order by :

字符串也是有序的,按照升序排列

4. 字符串的模糊匹配使用的是 like :

select * from movieswhere title like 'arch%' 

5. 在输出时不想要空值:

select distinct building from employees
where building != 'NULL'

5. 连表查询:

inner join :交集

想获得两个表中所有项 可以直接 : select * from XXX inner join YYY ON XXX.id = YYY.id

因为连表操作就是先会把所有列拼接在一起,并且对应的项如果不指定不会去除:

由于是left join 那么:会满足以下几个原则:(left join 是以主表为主)

【下图 未命名3 是主表;未命名2 是从表 ; 未命名是 返回结果】

(1)作为主表的内容即使与其他表不相匹配,也会把主表的内容留下来,不匹配的内容值值为NULL

(2)对于从表可以匹配的就按照要求匹配,匹配不上的就不会被返回了,如从表画×部分

6. 在查询中使用表达式并定义变量,在同一个语句中使用这个变量 【使用 as 关键字】

题目 :John Lasseter导演的每部电影每分钟值多少钱,告诉我最高的3个电影名和价值就可以

==》定义 val 变量,并在排序的时候直接使用

select title,(Domestic_sales+International_sales)/Length_minutes as val
from movies 
inner join boxoffice
on id = movie_id
where director = 'John Lasseter'
order by val desc
limit 3

8. 统计函数 :

 

9. 聚合函数(avg sum max min)的一些使用要求:

因为聚合函数通过作用于一组数据而只返回一个单个值:

因此,在SELECT语句中 : select  AA,BB,sum(CC) 中 的 AA和BB应该也是与sum(CC)对应的一个单个值  ==》sum(CC)由于可能被划分成m个组,因此会有m个sum(CC)的值,因此,AA和BB应该被划分后也是有m个,若AA或BB被划分后内容不是m个,那MySQL就会报错呀

==》因此,可以简记为select 中的 内容,要么为一个聚合函数的输入值,要么为GROUP BY语句的参数,否则会出错。(因为自从 mysql 5.7开始:ONLY_FULL_GROUP_BY 就默认打开 ,这个属性就要求了我们select内容要么是聚合值要么是group by 参数)

【注意】where语句中不可以使用聚合函数:

(where之所以不能使用聚合函数是因为 执行流程要求 先通过 where把数据范围确定下来,此时的数据表中条目具体是啥都没定下来,根本也不可能执行的了 聚合函数)

==》但 ,偏要使用聚合函数中的某些值怎么办? -- 用子查询:

如果想要:查询TEACHER表中年纪最大的教师的教工号、姓名、性别等信息。

需要用到子查询:

实例代码:

SELECT TNAME, DNAME, TSEX, SAL, AGE

FROM     TEACHER

WHERE   AGE=(SELECT MAX (AGE)  FROM   TEACHER)

10. select 作为输出内容可以执行一些计算处理:

例如  :

select count(*) as cnt ,building is not Null 
from table1

 

11. group by 和 where 和 having 的配合 :

已知:

① 执行顺序是:先where确定数据表内容,再group by 分组,最后根据 having 再次对输出进行处理,获得最终的结果

② `group by col ` 的含义:根据 col 属性的值来确定如何分组,假设col在where后的表中可以有5个取值(包括Null),那么,就会被分为 5个组

     `group by col1,col2` 的含义:根据col1,col2 实际在表中存在多少种不同的组合去分组

      ==》例如,col1可以取值11,12,14 ;col2可以取值 23,24,25,26 ;

     然鹅,在where后的表中存在 col1,col2取值为(11,23)(11,24)(11,25)(12,24)(14,25)(14,26),

     那么,根据col1,col2的group by 就只会将 表内容分为 6 组,而不是3*4=12 个分组

having 的出现是为了弥补 where中不允许使用 聚合函数 的缺陷 :

(where之所以不能使用聚合函数是因为 执行流程要求 先通过 where把数据范围确定下来,此时的数据表中条目具体是啥都没定下来,根本也不可能执行的了 聚合函数)

==》having 中也可以使用 非聚集函数,但是,如果having中使用非聚集函数,和 where中使用非聚集函数没有区别

例如:select count(*) where age >5 group by age

           等价于

           select count(*) group by age having age>5

【注意】【格式要求】:GROUP BY子句中的分组依据列必须是表中存在的列名,不能使用AS子句指派的结果集列的别名

11.优雅得分组展示各块内容:

注意 :各个分组方式的名字要被 ' ' 包括住

输出是:

12. 执行顺序

14. 建表,建索引,等操作:

相关文章:

SQL 语句学习总结:

1. 四范式&&范式好处: 数据库范式是数据表设计的规范,在范式规范下,数据库里每个表存储的重复数据降到最少(这有助于数据的一致性维护),同时在数据库范式下,表和表之间不再有很强的数据…...

【Linux】简单的小程序:进度条

在学习进度条之前,需要学一点预备知识。 1. 预备知识 回车换行 现在的换行符(\n)其实就是回车式换行符,另起一行,光标指向最新一行的开头。回车符(\r)是光标指向这一行的开头。 缓冲区 &a…...

Ansible之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…...

在云原生时代,构建高效的大数据存储与分析平台

文章目录 1. **选择适当的数据存储技术:**2. **采用分布式架构:**3. **数据分区和索引:**4. **采用列式存储:**5. **数据压缩和编码:**6. **使用缓存技术:**7. **数据分片和复制:**8. **自动化运…...

第六章,线性变换,1-线性变换、表示矩阵、线性算子

第六章,线性变换,1-线性变换、表示矩阵、线性算子 线性变换表示矩阵 线性算子 R 2 R^2 R2中特殊的线性变换旋转变换算子反射变换算子投影变换算子伸压变换算子剪切变换算子 玩转线性代数(32)线性变换的相关概念的笔记,相关证明以及例子见原文…...

15个关于AI的Github库

这里是我们精选的创新项目列表(排名不分先后),这些项目正在机器学习和人工智能领域蓬勃发展 1:privateGPT 作者:imartinezGithub 星数:16.7K描述:利用LLM的力量,在没有互联网连接的情…...

在Jupyter 中 from XXX import * 报错

在Jupyter 中 导入模块会出现 from XXX import * 报错 但是 XXX.py 确实在同一个目录下,但是无法导入XXX中的XX方法 解决问题是 : 麻烦添加 import sys sys.path.append(./)通过执行 sys.path.append(‘./’) 这行代码,您将当前目录&am…...

小程序密码显示与隐藏的实现

默认密码隐藏起来(显示为点),后面的图标是闭眼;用户点击图标后,图标变成睁眼,同时把密码明文显示出来;如此循环 Page({data: {passwordType: true, // 切换是否密码框show_pass: false // 是否…...

“亚马逊云科技创业加速器”首期聚焦AI,促进入营企业业务发展

生成式AI技术飞速发展,颠覆着人们的生活,正在掀起新一轮的科技革命。在生成式AI的浪潮中,亚马逊云科技旨在为中国的优秀初创企业提供全方位支持,助其抢占先机。 在6月底举办的亚马逊云科技中国峰会上,亚马逊云科技联合…...

已解决“SyntaxError: invalid character in identifier“报错问题

本文摘要:本文已解决 Python FileNotFoundError 的相关报错问题,并总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领…...

2023-09-02力扣每日一题

链接&#xff1a; 2511. 最多可以摧毁的敌人城堡数目 题意和解&#xff1a; 阅读理解题&#xff0c;要从1到-1或-1到1&#xff0c;中间只能有0&#xff0c;求最多能有多少0 实际代码&#xff1a; #include<bits/stdc.h> using namespace std; int captureForts(vect…...

服务war包部署SpringBootServletInitializer 的作用

在 Spring Boot 应用中&#xff0c;如果需要将应用打包成 WAR 包并部署到外部的 Servlet 容器中&#xff0c;就需要使用 SpringBootServletInitializer。 使用步骤&#xff1a; 必须创建war项目&#xff0c;需要创建好web项目的目录嵌入式Tomcat依赖scope指定provided编写Spr…...

[Linux]进程程序替换

[Linux]进程程序替换 文章目录 [Linux]进程程序替换进程程序替换的意义见一见进程程序替换进程程序替换的原理进程程序替换中的写时拷贝介绍进程程序替换接口 进程程序替换的意义 Linux系统下使用fork系统函数创建子进程后&#xff0c;子进程只能执行继承的部分父进程代码&…...

读余华小说《兄弟》

上部读完的一些笔记和思考&#xff0c;下部 TODO 时间&#xff1a;上世纪6、70年代 地点&#xff1a;刘镇 人物&#xff1a;故事中的兄弟指的是&#xff1a;宋钢(兄)&#xff0c;李光头&#xff08;弟&#xff09;&#xff0c;如下为简单的人物和命运图 一些故事&#xff1a;…...

机器学习课后习题 --回归

&#xff08;一&#xff09;单选题 1.以下()组变量之间存在线性回归关系&#xff1f; A:学生的性别与他的成绩 B:儿子的身高与父亲的身高 C:正方形的边长与面积D: 正三角形的边长与周长 2.回归问题和分类问题的区别是&#xff1f; A:回归问题有标签&#xff0c;分类问题…...

【golang】15、cobra cli 命令行库

Cobra 是 golang 最流行的命令行库&#xff0c;文档见 一、脚手架 mkdir pt && cd pt && go mod init cobra-cli init # 在项目下运行即可生成脚手架# tree . ├── LICENSE ├── cmd # 生成了cmd目录 │ └── root.go # 生成了root.go, 其中定义了ro…...

黑马 大事件项目 笔记

学习视频&#xff1a;黑马 Vue23 课程 后台数据管理系统 - 项目架构设计 在线演示&#xff1a;https://fe-bigevent-web.itheima.net/login 接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 接口根路径&#xff1a; http:/…...

C#2010 .NET4 解析 json 字符串

下载Newtonsoft.Json.dll using System; using System.Collections.Generic; using System.Linq; using System.Text;using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; namespace ConsoleApplication1 {class Program{static void Main(string[] args){strin…...

flutter Could not get unknown property ‘ndkVersion’

使用的 flutter 版本为 3.7.2 &#xff0c;编译运行 如下 Could not get unknown property ‘ndkVersion’ for object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension 解决方法是 在flutter-3.7.2\packages\flutter_tools\gradle\flutter.gradle配置…...

WebSocket--技术文档--架构体系--《WebSocket实现原理以及关键组件》

WebSocket产生背景 简单的说&#xff0c;WebSocket协议之前&#xff0c;双工通信是通过多个http链接来实现&#xff0c;这导致了效率低下。WebSocket解决了这个问题。下面是标准RFC6455中的产生背景概述。 长久以来, 创建实现客户端和用户端之间双工通讯的web app都会造成HTT…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

理想汽车5月交付40856辆,同比增长16.7%

6月1日&#xff0c;理想汽车官方宣布&#xff0c;5月交付新车40856辆&#xff0c;同比增长16.7%。截至2025年5月31日&#xff0c;理想汽车历史累计交付量为1301531辆。 官方表示&#xff0c;理想L系列智能焕新版在5月正式发布&#xff0c;全系产品力有显著的提升&#xff0c;每…...