SQL学习笔记(未完待续)

news/2024/5/2 3:45:01/文章来源:https://blog.csdn.net/Nimrod__/article/details/127701794
  • 鉴于自己最近在做后端开发的工作时,发现自己的SQL能力实在太差,开始学习SQL语句基础,学习过程中在本博客进行笔记记录,课程参考:https://www.bilibili.com/video/BV1UE41147KC?p=2

基本概念

DBMS: 数据库管理系统,数据库管理的软件应用,用来管理所有的数据
关系型数据库 : DBMS的一种,每个数据存储对象以表的形式进行分别,表与表之间建立关联关系,因此成为关系型数据库。
非关系型数据库: DBMS的一种,每种数据之间没有表与表之间的关联关系,不能够用SQL语句进行查询。
**SQL全称: ** Structured Query Language ,结构化查询语言

本次学习目标

  • 基础的增、删、改、查
  • 学习汇总数据、展示报告
  • 使用子查询做复杂的查询
  • 使用基础内置函数做一些数字、日期、文本数据处理
  • 创建视图、存储过程、函数
  • 学习使用触发器、时间、事务、并发
  • 学习设计数据库
  • 学习索引基础知识、如何使用
  • 数据库安全问题

SQL语句基本编写原则

基本语句组成示例

USE xxxDB;  // 指定使用数据库
SELECT *
FROM customers
WHERE customer_id = 1
ORDER BY first_name;

1、尽管SQL语句不区分大小写,但是关键词最好大写,便于区分,例如 select -> SELECT ,where -> WHERE
2、SQL语句基本逻辑数据: SELETE -> FROM -> 条件查询语句 -> ORDER BY ,先后不按照规定来会导致语句错误
3、每个条件区分可以使用换行符区分

选择语句

SELECT

select用来查询出相关的数据,例如:

SELECT *
FROM customers;

就是选择customers中的所有列。

在这里插入图片描述
其中 * 代表的是选择全部,我们也可以指定选择某列数据,例如:

SELECT first_name, last_name
FROM customers;

在这里插入图片描述
只选择first_namelast_name列进行展示。
同时,我们还可以对列进行基本的算数运算操作,例如:
在这里插入图片描述
除此之外,还可以给查询的列取别名,例如:

SELECT first_name, last_name, points, points + 1 as points_after_caculator
FROM customers;

在这里插入图片描述
可以看到我们的列已经展示出来了我们想要的别名。

DISTINCT:
DISTINCT 关键词用来做去重,对我们查询到的数据进行去重。

WHERE:

where语句用来做条件查询,例如:

SELECT *
FROM customers
WHERE points > 3000;

查询所有points 大于 3000的顾客,查询结果:
在这里插入图片描述
比较运算符有:

>
>=
<
<=
=
!= 
<> // 不等于

AND OR NOT操作符

操作符用来做where的扩展条件补充,例如除了积分外,我们还要筛选出生年月大于1990年的顾客:

AND :
,与代码中的 &效果一致

SELECT *
FROM customers
WHERE points > 1000 AND birth_date > '1990-01-01';

结果:
在这里插入图片描述
OR :
,与代码中的 ||效果一致满足其中一个条件即可,例如:

SELECT *
FROM customers
WHERE points > 1000 OR birth_date > '1990-01-01';

此时选择的便是出生日期为90之前,或者积分大于1000的顾客,结果:
在这里插入图片描述

  • 对于多个条件都出现时,优先计算AND联合起来的条件,再计算OR的条件,存在一定的计算优先级。

例如:

SELECT *
FROM customers
WHERE points > 1000 OR birth_date > '1990-01-01' AND state = 'VA';

就是计算了 birth_date > '1990-01-01' AND state = 'VA' 后,再计算OR的结果,结果:
在这里插入图片描述
其效果与增加了括号的效果一致。

NOT :
,与代码中的 !=效果一致,不满足该条件才满足要求,例如:

SELECT *
FROM customers
WHERE NOT (points > 1000 OR birth_date > '1990-01-01');

选择非的条件,NOT一般放在where 后面,NOT后面的条件用括号进行区分,清晰SQL语句。
结果:
在这里插入图片描述

IN

用来联合所有的条件,例如查询多个相同的条件:

SELECT *
FROM customers
WHERE state = 'VA' OR state = 'FL' OR state = 'GA';

等同于:

SELECT *
FROM customers
WHERE state IN ('VA', 'FL', 'GA');

结果:
在这里插入图片描述

BETWEEN

条件区间,类似于数学上的[x, y]
例如选择分数为 1000到 3000之间的顾客,可以使用where语句:

SELECT *
FROM customers
WHERE points >= 1000 AND points <= 3000;

等同于:

SELECT *
FROM customers
WHERE points BETWEEN 1000 AND 3000;

结果:
在这里插入图片描述

LIKE

模糊匹配预算符,按照一定的模式匹配字符串,例如:匹配所有以b开头的名字顾客:

SELECT *
FROM customers
WHERE last_name LIKE 'b%';

结果:
在这里插入图片描述
具体的匹配规则可以参考正则匹配符号。

REGEXP(正则表达式)

做正则表达式匹配,具体可以参考正则表达式匹配规则,例如,选择所有名字包含field的顾客,使用LIKE:

SELECT *
FROM customers
WHERE last_name LIKE '%field%';

使用REGEXP

SELECT *
FROM customers
WHERE last_name REGEXP 'field';

二者效果相同,结果:
在这里插入图片描述
基本:
^ : 忽略开头
$ : 忽略结尾
| : 逻辑或
具体可以参考正则表达式的规则。

IS NULL

为空判断符,为空才满足该要求。例如:

SELECT *
FROM customers
WHERE phone IS NULL;

查询所有没有phone字段内容的顾客。
结果:
在这里插入图片描述

ORDER BY 语句

用来排序返回结果,根据不同的ORDER条件进行排序查询,例如,按照first_name排序:

SELECT *
FROM customers
ORDER BY first_name;

结果:
在这里插入图片描述
默认为升序排序,我们也可以改为降序:

SELECT *
FROM customers
ORDER BY first_name DESC;

结果:
在这里插入图片描述
同时也可以进行多条件排序,例如:

SELECT *
FROM customers
ORDER BY state, first_name;

在这里插入图片描述
排序的规则时优先第一个,再保证后续规则。

排序规则同时可以作用与别名列表。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python实现的文章整合搜索引擎网站(Scrapy+Django+MySQL)

目 录 摘 要… 1 1 概述… 6 2 技术选型… 6 2.1 Scrapy-Redis 分布式爬虫 … 6 2.1.1 Redis… 6 2.1.2 Scrapy… 7 2.2 MySQL 数据存储 … 8 2.3 Django 搭建搜索网站 … 8 2.4 ElasticSearch 搜索引擎 … 9 2.4.1 Elasticsearch-RTF… 9 2.4.2 Elasticsearch-head… 10 2.4.3…

Kotlin编程实战——集合(07)

一 概述 集合概述构造集合迭代器(Iterable<T>)区间与数列序列(Sequence<T>)集合操作概述集合转换集合过滤加减操作符分组(groupBy())取集合的一部分取单个元素集合排序集合聚合操作集合写操作List 相关操作Set 相关操作Map 相关操作 二 集合概述 set、list 、map…

【python】Numpy统计函数总结

文章目录函数列表相关系数直方图函数列表 最值amin, amax, nanmin, nanmax, 极差ptp分位数percentile∗^*∗ quantile∗^*∗,统计量中位数median∗^*∗&#xff1b;平均数mean∗^*∗&#xff1b;变化幅度var&#xff1b;加权平均average标准差std&#xff1b;协方差cov&#x…

运算放大器正反馈负反馈判别法

---------------------------------------------------------------------------------------------------------------- 反馈可分为负反馈和正反馈。前者使输出起到与输入相反的作用&#xff0c;使系统输出与系统目标的误差减小&#xff0c;系统趋于稳定&#xff1b;后者使输出…

浅谈java中的String

Java中的String类型不属于八大基本数据类型&#xff0c;而是一个引用数据类型&#xff0c;所以在定义一个String对象的时候如果不直接赋值给这个对象&#xff0c;它的默认值就是null。我们要怎么理解String类型的不可变&#xff0c;在JDK源码中String这个类的value方法被final关…

【C++】如何修改set的值

问题&#xff1a;尝试通过begin方法得到的迭代器去修改值&#xff0c;发现会报错。 set<string> st{"hello", "world", "good"}; set<string>::iterator it st.begin(); *it "test"; 原因&#xff1a;我们可以在源码里…

怎么搭建搜题接口api

怎么搭建搜题接口api 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击…

RTSP协议学习Ubuntu环境准备

文章目录RTSP协议学习Ubuntu环境准备RTSP协议概述Ubuntu环境准备一、Ubuntu安装FFmpeg二、安装ZLMediaKit1、获取代码2、强烈推荐3、编译器3.1、编译器版本要求3.2、安装编译器4、cmake5、依赖库5.1、依赖库列表5.2、安装依赖库6、构建和编译项目7、运行8、测试三、测试推流测试…

【Tomcat】解决Tomcat服务器乱码问题

俩地方开展出现乱码的原因1、以startup.bat文件打开的服务器出现乱码2、在IDEA中运行Tomcat服务器出现乱码问题3、有关社区版IDEA如何开发JavaWeb项目出现乱码的原因 使用了错误的字符编码去解码字节流&#xff0c;所以出现乱码咱思维要清晰&#xff0c;就去找字符编码是否与其…

【TS04——接口的多态——泛型接口】

接口的多态&#xff0c;同一个方法&#xff0c;传入不同的参数&#xff0c;他所对应的操作不同成为多态【参数不同】或者可以理解为同一个方法&#xff0c;返回不同的结果&#xff0c;称之多态。 interface IfnPerson {run():voidrun(id:number):voidrun(id:number,name:strin…

【生日快乐】Node.js 实战 第1章 欢迎进入Node.js 的世界 1.3 安装Node

Node.js 实战 文章目录Node.js 实战第1章 欢迎进入Node.js 的世界1.3 安装Node第1章 欢迎进入Node.js 的世界 1.3 安装Node 安装Node的最简单的方法是使用其官网上的安装程序。可以用对应Mac或 Windows的安装程序安装最新的当前版。 官网安装包下载地址&#xff1a;https://…

Jenkins部署详细教程

Jenkins简介 Jenkins 是一个可扩展的持续集成引擎。是一个自成一体的开源自动化服务器, 可用于自动化与构建、测试、交付或部署软件相关的各种任务; Jenkins是一个高度可扩展的产品, 其功能可以通过安装插件来扩展。 在gitlab里可以完成源代码的管理&#xff0c;但是对于研发…

[ACTF2020 新生赛]Exec1命令注入

1.来看题目如下 得到一个ping的输入框&#xff0c;老样子先检查网页源码看有没有什么好东西&#xff0c;得到一个链接&#xff0c;我们来访问一下 发现也没什么有用处的信息&#xff0c;于是看到题目的标题之后联想到了命令注入&#xff0c; 那么是怎么判断使用命令注入的呢&am…

MyBatis初步了解

1.Mybatis简介 1.1原始jdbc操作&#xff08;查询数据&#xff09; 1.2原始jdbc操作&#xff08;插入数据&#xff09; 1.3 原始jdbc操作的分析 原始jdbc开发存在的问题如下&#xff1a; ①数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能 ②sql 语句在代码中硬编…

深入理解Java虚拟机:Java运行内存结构

本篇内容包括&#xff1a;JAVA 运行内存结构&#xff0c;即 程序计数器、Java 虚拟机栈、本地方法栈 、Java堆、方法区、运行时常量池 以及 直接内存等相关内容&#xff01; 一、JAVA 运行内存结构 Jvm 执行 Java 程序时&#xff0c;会把它所管理的内存划分为若干个不同的数据…

软件设计与体系——创建型模式

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔的个人空间 创建型模式&#xff1a; 创建型模式抽象了实例化过程帮助系统独立于如何创建、组合和表示对象 一个类创建型模式使用继承改变被实例化的类类创建型模式使用继承改变被实例化的类对象…

自学Python需要掌握哪些知识点?怎么学?

其实这个问题你可以转换一下思路&#xff0c;自学python有什么合适的学习路线&#xff0c;基本路线里涉及到的都是需要掌握的~ 单个知识点那罗列起来可是太多了~ 另外你可以考虑下你自学python的目的和方向&#xff0c;是单纯兴趣还是说要学了就业~ 想往人工智能方向发展还是P…

如何实现CAN/LIN通信路由测试?

目前车载网络通信越来越复杂&#xff0c;通信总线、协议多种多样&#xff0c;网关作为信息交互的载体&#xff0c;主要通过报文路由转发、报文过滤、信号重组等方式实现不同网段、不同协议间的信息交互&#xff1b;在复杂的车载网络中&#xff0c;网关通信路由转发功能具有非常…

软件设计师--数据结构考点细节总结

视频2022软件设计师-提炼高频考点-个人学习过程的总结&#xff0c;仅供参考&#xff01;_哔哩哔哩_bilibili 目录 1&#xff0c;栈 2,二叉树 3&#xff0c;HUFFMAN 特点&#xff1a; 4&#xff0c;文件压缩比 5&#xff0c;拓扑排序 -- 有向无环图 6&#xff0c;查找 7…

CSDN编程竞赛第八期 | 参赛经历分享

参赛经历分享 一共参与七次了&#xff0c;这是我第二次在CSDN竞赛上获奖&#xff0c;上一次获奖是在第四期&#xff0c;获得了第三名&#xff0c;拿到了一个高级背包、一件T恤和一个获奖证书&#xff0c;我之前拍照发过动态的&#xff0c;详情请见&#xff1a;动态 - CSDN 然后…