SQL回顾总结,超级全

news2025/2/12 13:08:47

SELECT:语句用于从数据库中选取数据

从 "Websites" 表中选取 "name" 和 "country" 列

SELECT name,country FROM Websites

从 "Websites" 表中选取所有列

SELECT * FROM Websites;

SELECT DISTINCT:用于返回唯一不同的值

从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值

SELECT DISTINCT country FROM Websites;

WHERE:用于过滤记录

从 "Websites" 表中选取国家为 "CN" 的所有网站

SELECT * FROM Websites WHERE country='CN'
// 'CN' 文本字段使用了单引号。如果是数值字段,请不要使用引号

 AND & OR:基于一个以上的条件对记录进行过滤

从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站

SELECT * FROM Websites WHERE country='CN' AND alexa > 50;

从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户

SELECT * FROM Websites WHERE country='USA' OR country='CN'

从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站

SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA')

ORDER BY:用于对结果集进行排序

从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序

SELECT * FROM Websites ORDER BY alexa;

从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序

SELECT * FROM Websites ORDER BY alexa DESC;

从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序

SELECT * FROM Websites ORDER BY country,alexa;

 INSERT INTO:用于向表中插入新记录

向 "Websites" 表中插入一个新行

INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');

向 "Websites" 表的指定的列插入数据

INSERT INTO Websites (name, url, country) VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');

UPDATE:用于更新表中的记录

把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA

UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程'

DELETE:用于删除表中的记录

从 "Websites" 表中删除网站名为 "Facebook" 且国家为 USA 的网站

DELETE FROM Websites WHERE name='Facebook' AND country='USA';

 SELECT TOP:用于规定要返回的记录的数目

从 "Websites" 表中选取头两条记录

SELECT * FROM Websites LIMIT 2

从 websites 表中选取前面百分之 50 的记录

SELECT TOP 50 PERCENT * FROM Websites

LIKE:用于在 WHERE 子句中搜索列中的指定模式

选取 name 以字母 "G" 开始的所有客户

SELECT * FROM Websites WHERE name LIKE 'G%';

 IN:允许在 WHERE 子句中规定多个值

选取 name 为 "Google" 或 "菜鸟教程" 的所有网站

SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');
//in 与 = 的转换
select * from Websites where name in ('Google','菜鸟教程');

select * from Websites where name='Google' or name='菜鸟教程'

BETWEEN:用于选取介于两个值之间的数据范围内的值

选取 alexa 介于 1 和 20 之间的所有网站

SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20;

不在上面实例范围内的所有网站 

SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20;

选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站

SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN ('USA', 'IND');

通配符:用于替代字符串中的任何其他字符

%替代 0 个或多个字符
_替代一个字符
[word]字符列中的任何单一字符
[^word]  或  [!word]不在字符列中的任何单一字符

选取 name 以 "G" 开始,然后是一个任意字符,然后是 "o",然后是一个任意字符,然后是 "le" 的所有网站 

SELECT * FROM Websites WHERE name LIKE 'G_o_le';

别名:可以为表名称或列名称指定别名

指定了两个别名,一个是 name 列的别名,一个是 country 列的别名

SELECT name AS n, country AS c FROM Websites;

INNER JOIN:在表中存在至少一个匹配时返回行

将返回所有网站的访问记录

SELECT Websites.name, access_log.count, access_log.date FROM Websites INNER JOIN access_log
ON Websites.id=access_log.site_id ORDER BY access_log.count;

在使用 join 时,on 和 where 条件的区别

  • on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
  • where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

LEFT JOIN:从左表返回所有的行。如果右表中没有匹配,则结果为 NULL 

Websites 作为左表,access_log 作为右表

SELECT Websites.name, access_log.count, access_log.date FROM Websites LEFT JOIN access_log
ON Websites.id=access_log.site_id ORDER BY access_log.count DESC;

RIGHT JOIN:从右表返回所有的行,即使左表中没有匹配。如果左表中没有匹配,则结果为 NULL

 Websites 作为左表,access_log 作为右表

SELECT websites.name, access_log.count, access_log.date FROM websites RIGHT JOIN access_log
ON access_log.site_id=websites.id ORDER BY access_log.count DESC;

UNION:符合并两个或多个 SELECT 语句的结果

从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值)

SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country
//UNION 不能用于列出两个表中所有的country

 CREATE DATABASE:用于创建数据库

创建一个名为 "my_db" 的数据库

CREATE DATABASE my_db

 CREATE TABLE:用于创建数据库中的表

创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City

CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

NOT NULL 约束:强制列不接受 NULL 值

UNIQUE 约束:唯一标识数据库表中的每条记录

PRIMARY KEY 约束:唯一标识数据库表中的每条记录。

  • UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
  • 请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

FOREIGN KEY 约束:一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键) 

AUTO INCREMENT:会在新记录插入表中时生成一个唯一的数字

AVG() 函数:返回数值列的平均值

从 "access_log" 表的 "count" 列获取平均值

SELECT AVG(count) AS CountAverage FROM access_log;

选择访问量高于平均访问量的 "site_id" 和 "count"

SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);

COUNT() 函数:返回匹配指定条件的行数

计算 "access_log" 表中 "site_id"=3 的总访问量

SELECT COUNT(count) AS nums FROM access_log WHERE site_id=3;

计算 "access_log" 表中总记录数

SELECT COUNT(*) AS nums FROM access_log;

FIRST() 函数:返回指定的列中第一个记录的值

选取 "Websites" 表的 "name" 列中第一个记录的值

SELECT name AS FirstSite FROM Websites LIMIT 1;

LAST() 函数:返回指定的列中最后一个记录的值

选取 "Websites" 表的 "name" 列中最后一个记录的值

SELECT name FROM Websites ORDER BY id DESC LIMIT 1;

MAX() 函数:返回指定列的最大值

 "Websites" 表的 "alexa" 列获取最大值

ELECT MAX(alexa) AS max_alexa FROM Websites

MIN() 函数:返回指定列的最小值

从 "Websites" 表的 "alexa" 列获取最小值

SELECT MIN(alexa) AS min_alexa FROM Websites

SUM() 函数:返回数值列的总数

查找 "access_log" 表的 "count" 字段的总数

SELECT SUM(count) AS nums FROM access_log

GROUP BY:结合一些聚合函数来使用,根据一个或多个列对结果集进行分组

统计 access_log 各个 site_id 的访问量

SELECT site_id, SUM(access_log.count) AS nums FROM access_log GROUP BY site_id

 GROUP BY 多表连接

SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites ON access_log.site_id=Websites.id GROUP BY Websites.name

HAVING:可以让我们筛选分组后的各组数据;在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用

想要查找总访问量大于 200 的网站

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites ON access_log.site_id=Websites.id)
GROUP BY Websites.name HAVING SUM(access_log.count) > 200

想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200

SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200  GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

where 和having之后都是筛选条件,但是有区别的

  • where在group by前, having在group by 之后
  • 聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,但可以放在having之后

UCASE() 函数:把字段的值转换为大写

从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为大写

SELECT UCASE(name) AS site_title, url FROM Websites;

LCASE() 函数:把字段的值转换为小写

从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为小写

SELECT LCASE(name) AS site_title, url FROM Websites

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

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

相关文章

Android系统视角下对APK的分析(2)- APK安装过程的定性分析

声明 以Android手机用户角度来看&#xff0c;安装各式各样的APP&#xff0c;基本就是从应用市场上 “搜索->下载->安装” 三连。而对Android系统来说&#xff0c;这就是个大工程了&#xff0c;因为对Android系统来说APK是“外来户”&#xff0c;如何安装它、有限制地支持…

linux实验三 vi编辑器及用户管理

1、vi编辑器的详细使用 &#xff08;1&#xff09;在用户主目录下建一个名为vi的目录。 &#xff08;2&#xff09;进入vi目录。 &#xff08;3&#xff09;将文件/etc/man_db.conf复制到当前目录下&#xff0c;并用命令sudo修改man_db.conf的属性为所有用户可以读写。 &am…

.net版本下载

1先登录微软 Microsoft - 云、计算机、应用和游戏 下载 .NET Framework | 免费官方下载

【Oauth2请求不带client_id,获取方法】

文章目录 前言一、关键&#xff1a;请求头 Basic xxx:xxx二、源码分析BasicAuthenticationFilter 类extractAndDecodeHeader 方法authenticate方法loadUserByUsername 方法 总结 前言 这段时间在学习 oauth2, 发现我组用的框架&#xff0c;登录请求参数中并没有 client_id &a…

JVM 面试必会面试题

1. 说一说JVM的主要组成部分 点击放大看&#xff0c;一图胜千文 jvm 方法区和堆是所有线程共享的内存区域&#xff1b;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域&#xff0c;运行时数据区域就是我们常说的JVM的内存。类加载子系统&#xff1a;根据给定的…

Altium Designer二次开发

Altium Designer二次开发就在该软件原有的基础上&#xff0c;自己写代码给它添加新功能&#xff0c;如&#xff1a;一键生成Gerber&#xff0c;计算铺铜面积&#xff0c;PCB走线的寄生参数和延时等等。 Altium Designer二次开发有两种方式&#xff0c;一种是基于Altium Designe…

Hadoop集群部署和启动与关闭

Hadoop集群的部署方式分为三种&#xff0c;分别是独立模式&#xff08;Standalone mode&#xff09;、伪分布式模式&#xff08;Pseudo-Distributed mode&#xff09;和完全分布式模式&#xff08;Cluster mode&#xff09;&#xff0c;独立模式和伪分布式模式主要用于学习和调…

Day974.授权码和访问令牌的颁发流程 -OAuth 2.0

授权码和访问令牌的颁发流程 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于授权码和访问令牌的颁发流程的内容。 授权服务就是负责颁发访问令牌的服务。更进一步地讲&#xff0c;OAuth 2.0 的核心是授权服务&#xff0c;而授权服务的核心就是令牌。 为什么这么说…

被冻结的层在训练过程中参与正向反向传递,只是这一层的梯度不再更新。||底层逻辑

被冻结的层可以前向传播,也可以反向传播,只是自己这一层的参数不更新,其他未冻结层的参数正常更新。 在微调期间&#xff0c;只有被激活的层的梯度会被计算和更新&#xff0c;而被冻结的层的梯度则会保持不变。 其实从数学上去理解也不难&#xff0c;但自己手推还是需要花点时…

《自然》:DeepMind推出AlphaDev或将加速全球计算

数字世界对计算和能源的需求正在不断增加。在过去的五十年中&#xff0c;人类主要依靠硬件层面的改进来满足这一点。然而&#xff0c;随着微芯片接近其物理极限&#xff0c;改进计算机运行代码&#xff0c;以使计算算力更强大和可持续&#xff0c;变得至关重要。对于每天运行数…

线程的生命周期

我是一个线程 第一回 初生牛犊 我是一个线程&#xff0c;我一出生就被编了个号: 0x3704&#xff0c;然后被领到一个昏暗的屋子里&#xff0c;在这里我发现了很多和我一模一样的同伴。 我身边…

一文教你如何在数据库中安全地存储密码

前言 作者&#xff1a;神的孩子在歌唱 大家好&#xff0c;我叫智 让我们先谈谈什么不该做。 不要以明文形式存储密码。任何具有数据库内部访问权限的人都可以看到它们。如果数据库受损&#xff0c;攻击者可以轻松获取所有密码。那么&#xff0c;我们应该如何在数据库中安全地存…

10个ai算法常用库java版

今年ChatGPT 火了半年多,热度丝毫没有降下来。深度学习和 NLP 也重新回到了大家的视线中。有一些小伙伴问我,作为一名 Java 开发人员,如何入门人工智能,是时候拿出压箱底的私藏的学习AI的 Java 库来介绍给大家。 这些库和框架为机器学习、深度学习、自然语言处理等提供了广…

OceanBase 安全审计之身份鉴别

本文主要以 MySQL 和 OceanBase 对比的方式&#xff0c;来介绍 OceanBase&#xff08;MySQL 模式&#xff09;安全体系中关于身份鉴别的相关内容&#xff0c;包括身份鉴别机制、用户名组成、密码复杂度、密码过期策略等。 作者&#xff1a;金长龙 爱可生测试工程师&#xff0c;…

快速掌握SQL语言——数据查询语言DQL

0️⃣前言 数据查询语言DQL是一种用于查询数据库中数据的语言&#xff0c;它是SQL的一部分&#xff0c;也是SQL中最常用的语言之一。 文章目录 0️⃣前言1️⃣介绍2️⃣使用3️⃣重要性4️⃣总结 1️⃣介绍 DQL&#xff08;Data Query Language&#xff09; 主要用于从数据库中…

为PyCharm IDE 配置三剑客:QtDesigner[可视化设计器]、PyUIC[可视化设计器ui文件转py代码]、PyRcc[资源文件转py代码]

过去一直在使用Eric6 PyQt5&#xff0c;然而最近它[已然是古董级的了]似乎有些不太正常&#xff0c; 像我这样有强迫症的人怎么可以容忍呢? 于是有了换IDE的想法&#xff0c;听说PyCharm是个高富帅&#xff0c;大家都很喜欢用它呢&#xff01;于是乎才有了这篇文章。 前提条…

【C++ 笔记五】STL 标准模板库 —— 容器基础进阶

【C 笔记五】STL 标准模板库 —— 容器基础进阶 文接上文 【C 笔记四】STL 标准模板库 —— 容器基础 文章目录 【C 笔记五】STL 标准模板库 —— 容器基础进阶I - 简单回顾1.1 - 序列式容器&#xff08;顺序容器&#xff09;1.2 - 关联式容器 (关联容器)1.3 - 访问方法/对外接…

面试-java常见问题

JVM 配置 程序计数器&#xff1a;当前线程所执行的字节码的行号指示器java虚拟机栈:临时变量元空间&#xff1a;类常量池&#xff0c;运行时常量池方法区&#xff1a;类信息&#xff0c;静态变量堆&#xff1a;对象实例&#xff0c;Sting常量池等 类加载过程 加载->链接&am…

使用javacv中的ffmpeg实现录屏

今天突发奇想&#xff0c;想自己写一个录屏的软件&#xff0c;上次写了一个专门录音的Demo&#xff0c;但是要把声音和视频放到一起合成一个mp4文件&#xff0c;着实有一点艰难&#xff0c;所以就打算使用ffmpeg来写一个&#xff0c;而这篇博客中会顺便谈一谈我碰到的各种坑。 …

JVM面试题50道

1.JDK、JRE、JVM关系&#xff1f; Jdk (Java Development Kit) : java语言的软件开发包。包括Java运行时环境Jre。 Jre &#xff08;Java Runtime Environment) :Java运行时环境&#xff0c;包括Jvm。 Jvm (Java Virtual Machine) :一种用于计算机设备的规范。 Java语言在不同…