【sql】SQL回顾总结,超级全

news2024/11/23 18:45:34

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/702230.html

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

相关文章

Nacos(一):简介 如何安装 服务注册与发现 集群 权重 与Eureka区别

一、简介 1、应用场景 当服务调用越来越多&#xff0c;服务的地址需要管理起来&#xff0c;并实现动态调用而不是硬编码在接口中。此时需要一个注册中心来帮助我们管理服务。 流程如下&#xff1a; 商品微服务注册IP和端口到注册中心订单微服务先从注册中心获取到商品微服务…

45 # 实现文件拷贝功能

下面实现边读边写的文件拷贝功能&#xff0c;这样不会淹没系统的可用内存&#xff0c;合理读写 const fs require("fs"); const path require("path");function copy(source, target, callback) {const SIZE 3;const buffer Buffer.alloc(SIZE);let r…

OPENCV 训练分类器一

第一步&#xff0c;安装OPENCV 见最新openCV-Python安装教程(opencv-python版本4.4.0, Python版本: 3.9)_python安装opencv_这个人不是画家的博客-CSDN博客 第二步&#xff0c;下面是修正过后的Python 将文件夹下面所有的图片转换成灰色小图像&#xff0c;用于存正片用的。…

Python几种字符串格式化方法

Python 字符串格式化方法 文章目录 Python 字符串格式化方法1.python中的字符串格式化--百分号 %2. 字符串格式化-数字精度控制 m.n3. 字符串格式化--快速写法 f"{变量}"4. 案例&#xff1a;股价计算小程序 1.python中的字符串格式化–百分号 % %的主要作用将数据转换…

android switch的使用

一、前言&#xff1a;很多app都有开关这个功能&#xff0c;开关控件的使用跟checkbox好像也差不多。 二、上代码 创建一个activity:SwitchDefaultActivity public class SwitchDefaultActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListene…

vue(脚手架创建)代理解决跨域问题

目录 为什么会出现跨域问题 什么是跨域 Vue CLI Vue2解决跨域问题 不重写路径 重写路径 vue.config.js代码 Vue3解决跨域问题 ViteVue解决跨域问题 vite.config.ts代码 总结 为什么会出现跨域问题 出于浏览器的同源策略的限制。同源策略是一种约定&#xff0c;它是…

【新版系统架构】第七章-系统架构设计基础知识(基于架构的软件开发方法)

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 第一章-绪论第二章-计算机系统基础知识&#xff08;一&#xff09;第二章-计算机系统基础知识&#xff08;二&#xff09;第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

【go】数据表转csv

文章目录 1 基本结构1.1 数据1.2 数据结构 2 代码3 tip 1 基本结构 1.1 数据 1.2 数据结构 2 代码 代码&#xff1a; package mainimport ("database/sql""encoding/csv""fmt"_ "github.com/go-sql-driver/mysql""log"&q…

element ui table某个单元格添加点击事件

1.创建表格 <el-table ref"multipleTable" :data"tableData" border > <el-table-column fixed type"selection" align"center"></el-table-column> <div v-for"(item,index) in columns" :key"i…

在开源经历中成长,让开发者成为创新主体

本文背景 积极推进“满天星”行动计划&#xff0c;促进开发者成长&#xff0c;重庆软件园产业学院“成长营”将聚焦“技术提升”“职业成长”“价值提升”等话题开展系列主题活动&#xff0c;赋能软件技术开发者更好发展、更快成长。本次直播访谈&#xff0c;聚焦在开源经历中成…

车载 Android开发面试习题

随着车联网技术的不断发展和普及&#xff0c;越来越多的汽车厂商开始使用 Android 操作系统作为车载娱乐和信息娱乐系统的核心。在这个趋势下&#xff0c;车载 Android 应用开发程序员的需求也日益增加。 像一些车企大厂不惜给出 30K~60K的高资&#xff0c;去广招这方面的技术人…

为未来“点亮”想象空间:无镉量子点

量子点电视的诞生引发了行业内的色彩科技革命&#xff0c;量子点电视使用色彩纯净的量子点背光技术&#xff0c;能够最真实地还原图像色彩&#xff0c;是虚拟增强现实技术和智能可穿戴显示设备的理想之选。 量子点又可称为纳米晶&#xff0c;是一种由 II-VI 族或 III-V 族元素…

matlab绘制栅格地图

学习了一下栅格地图在matlib中的表示方法&#xff0c;其实和很多都是差不多的。 参考 清除命令 % clc&#xff1a;清除命令窗口的内容&#xff0c;对工作环境中的全部变量无任何影响 % close all:关闭所有的Figure窗口 % clear all&#xff1a;清除工作空间的所有变量&#xff…

zookeeper之znode节点与acl权限设置

zookeeper之znode节点与acl权限设置 zookeeperznode节点节点类型节点属性节点监听 客户端命令行查看所有命令命令说明 acl权限设置scheme认证模型permission权限位acl相关命令ACL使用示例 客户端工具ZooInspectorPrettyZoo zookeeper ZooKeeper是Apache软件基金会的一个软件项目…

chatgpt赋能python:量化金融中的Python模型

量化金融中的Python模型 随着互联网的发展&#xff0c;金融行业也在不断地发生变化。量化金融是近年来崛起的一种新兴方式&#xff0c;它将数学、计算机科学和统计学等领域的理论和方法应用于金融领域中&#xff0c;以期望实现比传统投资更高的效益。其中&#xff0c;Python是…

计算机网络那些事之 MTU 篇 pt.2

哈喽大家好&#xff0c;我是咸鱼 在《计算机网络那些事之 MTU 篇 》中&#xff0c;咸鱼跟大家介绍了 MTU 是指数据链路层能够传输的最大数据帧的大小 如果发送的数据大于 MTU&#xff0c;则就会进行分片操作&#xff08;Fragment&#xff09;&#xff1b;如果小于 MTU&#x…

$.each用法

看到$ 自然可以想到这是JQ的一个方法JQ each可以当成是数组的forEach 具体用法&#xff1a;需要注意函数第一项是索引&#xff0c;第二项才是具体的值

React Hooks的讲解与教程

什么是React Hooks React Hooks 是 React 16.8 新增的一种特性&#xff0c;它可以让你在函数式组件中使用 state、生命周期、context 等 React 特性。Hooks 可以让你将复杂的逻辑拆分成多个独立可重用的函数&#xff0c;并且使得这些函数更加易于理解和测试。 Class组件存在的问…

Java的模块(module)

简单介绍 Java的模块&#xff08;module&#xff09;是Java SE 9支持的组件。一个模块可以包含多个包。通过模块系统&#xff0c;更加容易开发和维护大型的系统。引入模块的目标&#xff1a; 提供一种可靠的配置机制。用模块机制替换脆弱的、容易出错的类路径配置机制。模块作…