廖雪峰SQL教程读书笔记(三):查询数据

从‘SELECT *’到外连接:用廖雪峰在线SQL工具,手把手拆解一个员工管理系统的查询实战 本文通过廖雪峰在线SQL工具,详细拆解员工管理系统的SQL查询实战,从基础查询到多表联查,涵盖精准字段选择、条件过滤、聚合分析、多表连接等核心技巧。结合实战案例,帮助开发者快速掌握SQL在业务场景中的应用,提升数据处理效率。 阅读详情
# 基本查询,SELECT查询结果是一个二维表
SELECT * FROM students;   # 从students表格中选取所有数据

SELECT 100+200   # 不带FROM可以直接运算得到300,用来检测当前数据库的连接是否有效
----------------------------------------------------------
# 条件查询,WHERE关键字
SELECT * FROM students WHRER score >= 80;   # score是列名

SELECT * FROM students WHERE score >= 80 AND gender = 'M'   # 条件可以有多个

SELECT * FROM students WHERE <条件1> OR <条件2>   # 或条件

SELECT * FROM students WHERE NOT <条件1>   # 非条件

SELECT * FROM students WHERE NOT class_id = 2

SELECT * FROM students WHERE class_id <> 2   # 两者等价

# 条件运算按照NOT > AND > OR的优先级进行

score = 80	name = 'abc'   # 判断相等

name > 'abc'   # 字符串比较根据ASCII码,中文字符比较根据数据库设置

name LIKE '%bc%'   # %表示任意字符,例如'ab%'将匹配'ab','abc','abcd';%表示0个到多个,_表示1个
----------------------------------------------------------
# 投影查询
SELECT id, score, name FROM students;   # 选择指定列

SELECT id, score points, name FROM students;   # 选择制定列并改名,score改为points

SELECT id, score points, name FROM students WHERE gender = 'M';   # 组合使用
----------------------------------------------------------
# 排序
# 选择后默认按照主键排序,通过ORDER BY更改排序
SELECT id, name, gender, score FROM students ORDER BY score;   # 结果依据score列排序,从低到高顺序,默认ASC可省略

SELECT id, name, gender, score FROM students ORDER BY score DESC;   # DESC倒序

SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;   # 先按score倒序,再按gender顺序

SELECT id, name, gender, score
FROM students
WHERE class_id = 1
ORDER BY score DESC;
# 先WHERE条件后ORDER BY排序
---------------------------------------------------------
# 分页查询,数据量太大,分页显示,本质就是截取数据LIMIT <M> OFFSET <N>
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;   # 三条记录,第一页,从0开始,LIMIT 3条

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 3;   # 从第三条记录开始,取3条记录,LIMIT总是设定为pageSize;OFFSET计算公式为pageSize * (pageIndex - 1)。

# OFFSET是可选的,如果只写LIMIT 15,那么相当于LIMIT 15 OFFSET 0。
# 在MySQL中,LIMIT 15 OFFSET 30还可以简写成LIMIT 30 15。
---------------------------------------------------------
# 聚合查询,查询记录数量
SELECT COUNT(*) FROM students;   # 查询students表中有多少条记录,返回结果是一个二维表,列名是默认COUNT(*)。

SELECT COUNT(*) num FROM students;   # 设置返回结果列名为num

SELECT COUNT(*) boys FROM students WHERE gender = 'M';   # 叠加条件

# 更多函数
SUM	  # 计算某一列的合计值,该列必须为数值类型
AVG	  # 计算某一列的平均值,该列必须为数值类型
MAX	  # 计算某一列的最大值
MIN	  # 计算某一列的最小值
# 如果聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而MAX()、MIN()、MAX()和MIN()会返回NULL。MAX()和MIN()函数并不限于数值类型。如果是字符类型,MAX()和MIN()会返回排序最后和排序最前的字符。

# 分组,GROUP BY
SELECT COUNT(*) num FROM students GROUP BY class_id;   # 先分组后计算
SELECT class_id, COUNT(*) num FROM students GROUP BY class_id;
SELECT class_id, gender, COUNT(*) num FROM students GROUP BY class_id, gender;   # 可以多个列分组
------------------------------------------------------------
# 多表查询,又称笛卡尔查询,慎用因为返回记录数量太多
SELECT * FROM students, classes;   # 同时同students、classes表查询数据,返回二维表,是students表和classes表的“乘积”,即students表的每一行与classes表的每一行都两两拼在一起返回。结果集的列数是students表和classes表的列数之和,行数是students表和classes表的行数之积

SELECT
    s.id sid,
    s.name,
    s.gender,
    s.score,
    c.id cid,
    c.name cname
FROM students s, classes c;   # 多表查询时,要使用表名.列名这样的方式来引用列和设置别名

SELECT
    s.id sid,
    s.name,
    s.gender,
    s.score,
    c.id cid,
    c.name cname
FROM students s, classes c
WHERE s.gender = 'M' AND c.id = 1;   # 增加WHERE条件
-------------------------------------------------------------
# 连续查询
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;   # 内连接 INNER JOIN
# 先确定主表,仍然使用FROM <表1>的语法;
# 再确定需要连接的表,使用INNER JOIN <表2>的语法;
# 然后确定连接条件,使用ON <条件...>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
# 可选:加上WHERE子句、ORDER BY等子句。

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
LEFT OUTER JOIN classes c
ON s.class_id = c.id;   # 外连接

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
FULL OUTER JOIN classes c
ON s.class_id = c.id;   # 全连接

SELECT ... FROM tableA ??? JOIN tableB ON tableA.column1 = tableB.column2;   # 查询语句语法
------------------------------------------------


在这里插入图片描述

.
.
.
2019-01-04 18:37:55写于风雪交加夜

[廖雪峰-SQL教程]1.关系数据库概述和安装MySQL 1.关系数据库概述 1.1为什么需要数据库? 关系数据库概述 如果每个应用程序都各自写自己的读写数据的代码,一方面效率低,容易出错,另一方面,每个应用程序访问数据的接口都不相同,数据难以复用。 所以,数据库作为一种专门管理数据的软件就出现了。应用程序不需要自己管理数据,而是通过数据库软件提供的接口来读写数据。至于数据本身如何存储到文件,那是数据库软件的事情,应用程序自己并不关心: ┌──────────────┐ │ application │ └──────────────┘ ... 阅读详情

相关推荐

Database:数据库查询

介绍了SQL中基本的查询语句,以及不同的数据库查询方式

Jingmin Wei's Blog 3627

SQL学习(廖雪峰)

1.主键:作为主键最好是完全业务无关的字段,我们一般把这个字段命名为id 主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL。 2.联合主键:关系数据库实际上还允许通过多个字段唯一标识记录,即两个或更多的字段都设置为主键,这种主键被称为联合主键。 3.要组合三个或者更多的条件,就需要用小括号()表示如何进行条件运算。如果不加括号,条件运算按照NOT、AND、...

sinat_29801549的博客 960

廖雪峰 SQL 教程

廖雪峰 SQL 教程 廖雪峰 SQL 教程 廖雪峰 SQL 教程 ==========

SQL语句(Mysql、Oracle等数据库)教程归纳

文章目录前言关系模型主键外键索引查询语句基本查询条件查询投影查询排序分页查询聚合查询分组多表查询连接查询 前言 廖雪峰SQL教程参考 SQL语句是很重要的内容 其中尤其以查询语句应用更为广泛 以下是在进行SQL语句学习时用到的需要用到的两张表 学生表 班级表 关系模型 主键 对于关系表,有个很重要的约束,就是任意两条记录不能重复。 不能重复不是指两条记录不完全相同, 而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。 主键是关系表中记录的唯一标识。 主键的选取非常重要:主键不要带有业务

泡泡龙的博客 703

SQL廖雪峰基础知识整理.docx

SQL廖雪峰基础知识整理,适用于初学者入门,有个基本的了解,之后可以刷刷题进行巩固,希望能够对您有所帮助~

廖雪峰SQL教程

抓下来打包成了PDF文件, 方便离线观看 这是小白的零基础SQL教程。 什么是SQL?简单地说,SQL就是访问和处理关系数据库的计算机标准语言。也就是说,无论用什么编程语言(Java、 Python、C++……)编写程序,只要涉及到操作关系数据库,比如,一个电商网站需要把用户和商品信息存入数据库, 或者一个手机游戏需要把用户的道具、通关信息存入数据库,都必须通过SQL来完成。 所以,现代程序离不开关系数据库,要使用关系数据库就必须掌握SQL。 在本教程中,你将学到关系数据库的基本概念,如何使用SQL操作数据库,以及一种最流行的开源数据库MySQL的基 本安装和使用方法。

SQL笔记——廖雪峰教程板(全篇五千九百字)【薛定谔‘.s cat的笔记】

数据库笔记 (学习完廖雪峰老师的教程后写的笔记。) 一、关系数据库概述 1.数据模型 层次模型 网状模型 关系模型 2.数据类型 名称 类型 说明 INT 整型 4字节整数类型,范围约+/-21亿 BIGINT 长整型 8字节整数类型,范围约+/-922亿亿 REAL FLOAT(别名) 浮点型 4字节浮点数,范围约+/-1038 DOUBLE 浮点型 8字节浮点数,范围约+/-10308 DECIMAL(M,N) decimal (小写) 高精度小数 由用户指定精度的小

m0_47812755的博客 606

风力摆控制系统 PCB 设计 3 要点:STM32+MPU6050+空心杯电机驱动一体化

本文详细解析了风力摆控制系统PCB设计的3大核心要点,重点介绍STM32主控、MPU6050姿态传感器与空心杯电机驱动的一体化方案。通过系统架构设计、PCB布局布线技巧以及噪声抑制方案,帮助参赛者在电子设计竞赛中构建高精度、高稳定性的风力摆控制系统,提升竞赛作品性能。

weixin_30363285的博客 359

SQL笔记(随缘更新)

为了学SQL注入和存储型XSS特地跑过来开一帖复习一手… 0x01 intro 数据库? 因为我们需要保存用户的数据,比如Word需要把用户文档保存起来,以便下次继续编辑或者拷贝到另一台电脑。 这种方法在自己的电脑上做一些简单的事情是可行的,但是在大规模的项目上容易造成管理的混乱。因为我们需要: 快速读写文件并解析出数据 从成千上万的数据中快速查询出指定数据 而由许多人维护的项目又需要做到比如统一接口以及同步化等等要求,所以,数据库作为一种专门管理数据的软件(以及标准)就出现了: 应用程序通过数据库软件

weixin_43466027的博客 351

【亲测】ubuntu20.4 安装CUDA11.8

一步一步搭建C++ CUDA CUDNN TENSORRT OPENCV DNN ONNXRUNTIME推理环境

weixin_40950590的博客 3894

谷粒商城学习笔记-15-数据库初始化

这一节的主要内容是把创建对应的数据库和数据库表。

epitomizelu的专栏 1438

廖雪峰SQL学习:SQL的基本用法、语法等(缓慢更新)

该文主要用于自己学习SQL基本用法、语法等的学习笔记,欢迎大家指导。 ** 数据类型 对于一个关系表,除了定义每一列的名称外,还需要定义每一列的数据类型。关系数据库支持的标准数据类型包括数值、字符串、时间等: 名称 类型 说明 INT 整型 4字节整数类型,范围约+/-21亿 BIGINT 长整型 8字节整数类型,范围约+/-922亿亿 REAL 浮点型 4字节浮点数,范围约+/-1038 DOU...

Kenny C 378

tcllib2.0 package - csv

tcl lib 的csv库

shin 859

喜大普奔,“Python教父”廖雪峰的SQL初学者教程中文PDF版本了!

不知道有多少小伙伴的Python是由廖雪峰老师启蒙? 他的Python 教程是网上最知名的 Python 入门教程之一,帮助无数初学者迈入编程世界。 廖雪峰,资深软件工程师,拥有丰富的软件开发和教学经验。 他是Python 和 Java 领域的专家,尤其擅长 Web 开发和数据库应用。 强推廖雪峰的这个《SQL 教程》,它专门针对零基础学习者,详细讲解 SQL 语言和 MySQL 数据库,轻松入门数据库应用。

Candyz7的博客 1008

Cadence Spectre仿真保姆级教程:从DC/AC到PSS/PV,手把手教你搞定模拟电路分析

作为业界标准的Cadence Spectre仿真器,以其精确的算法和丰富的分析类型,成为每个模拟IC工程师必须掌握的利器。本文将带你从零开始,系统掌握Spectre仿真的核心技能,从最基础的DC工作点分析到复杂的PSS相位噪声仿真,每个步骤都配有详细的操作指导和实用技巧。记得我第一次使用Spectre仿真一个简单的两级运放时,花了整整三天时间才得到正确的AC响应曲线。过程中踩过的坑、浪费的时间,现在想来都是宝贵的学习资源。与传统的AC分析不同,STB分析可以在不破坏环路的情况下评估稳定性。

weixin_30898555的博客 335

手把手教你模拟登录豆瓣并爬取个人书影音数据:从Cookie解析到反爬攻防实战

在开始写代码之前,先明确我们需要的工具。:建议用3.10以上版本,方便使用一些新特性(如match语句)httpx:比requests更现代,支持HTTP/2,异步性能强,连接池复用好:解析HTML,语法简单,容错性强selenium:仅用于处理登录时的滑块验证(模拟真人)pandas:最终数据清洗和导出Excel/CSVretrying:自动重试机制,应对临时封禁:随机UA,降低特征lxml:作为BeautifulSoup的解析器,速度快为什么不只用requests?

2201_76125261的博客 577

sql学习——查询数据

最近在廖雪峰老师的网站学习sql,以下为学习记录,方便日后查询。 https://www.liaoxuefeng.com/wiki/1177760294764384 一些基本概念: 1.主键 在关系数据库中,一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。 对于关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯...

weixin_44056331的博客 518

PrimeTime low power-多电压设计流程(1)

PrimeTime支持使用IEEE 1801统一电源格式(UPF)标准来指定设计的多电压特性。PrimeTime能够在多电压供电和使用set_voltage命令在特定电源网上设置电压值的情况下,正确分析设计的时序。要了解如何使用多电压设计流程,请参考以下内容:- 多电压分析需求- 指定电源连接性- UPF命令- GoldenUPF流程- 多重电源电压分析。

QRBQ 528

廖雪峰SQL教程-摘要

安装MySQL教程:https://www.cnblogs.com/laumians-notes/p/9069498.html#undefined #创建一个表 CREATE TABLE w3cschool_tbl( w3cschool_id INT NOT NULL AUTO_INCREMENT, w3cschool_title VARCHAR(100) NOT ...

刘宏宇的博客 381

置顶必读(1) |《滚雪球学SpringBoot 3.x》· 高质量专栏介绍,你值得拥有!

《滚雪球学SpringBoot 3.x》 并不是普通的技术讲解合集,它是专为开发者精心设计的系统化学习路径。通过不断“滚动学习”,我们将带领你从基础入门到高阶应用,从理解每一行代码到设计和优化大规模分布式系统,最终帮助你成长为一位精通 spring架构 的工程师。

**My Coding Family** 12万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

廖雪峰SQL教程读书笔记(六):数据库事务&隔离级别

数据库事务:把多条语句作为一个整体进行操作的功能。 数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。如果事务失败,那么效果就和没有执行这些SQL一样,不会对数据库数据有任何改动。 数据库事务具有ACID这4个特性: A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行; C:Consistent,一致性,事务完成后,所有数据的状态都是一致...

漫步量化 396

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

gorm聚合查询group结合join和count

场景:engineercms的文章article放在了成果product下面,成果有作者user,以及所属的目录project 现在想知道,某个project下的各位作者文章数量。 思路就是通过article表来分别join成果product表、user表和project表,然后group里用productid来筛选,最后再用projectid筛选。 //项目目录 type Project struct { Id int64 `form:"-"` Code

hotqin888的专栏 6334

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mysql 廖雪峰_廖雪峰大佬SQL教程学习笔记

1,SQL(Structured Query Language),就是访问和处理(操作)关系数据库的计算机标准语言。SQL语句既可以查询数据库中的数据,也可以添加,更新和删除数据库中的数据,还可以对数据库进行管理和维护。SQL定义几种操作数据库的能力。DDL:Data Definition Language(DDL允许用户定义数据,也就是创建表,修改表的结构)DML:Data Manipulati...

weixin_35712223的博客 604

廖雪峰SQL教程读书笔记(一):数据库与SQL

数据库与SQL 数据库作为专门管理数据的软件,避免应用程序在数据管理上徒耗精力,只需要使用数据库的接口就可以了,大大简化应用程序的数据读写功能。 数据库一共有三种模型:层次模型(树)、网状模型(路网)、关系模型(二维表格)。 SQL(Structured Query Language,结构化查询语言)是访问和处理关系数据库的计算机标准语言。不管什么编程语言(C++、Java、Python...

漫步量化 744

SQL笔记-摘录自廖雪峰老师教程

SQL笔记: 1 常用数据类型 INT 整型 4字节整数类型,范围约+/-21亿 BIGINT 长整型 8字节整数类型,范围约+/-922亿亿 REAL 浮点型 4字节浮点数,范围约+/-1038 DOUBLE 浮点型 8字节浮点数,范围约+/-10308 DECIMAL(M,N) 高精度小数 由用户指定精度的小数,例如,DECIMAL(20,10)表示一共20位,其中小数10位,通常用于财务计算 CHAR(N) 定长

wulitaotao96的博客 179

【读书笔记】python 数据挖掘与分析实战、深入浅出mysql、廖雪峰数据库sql教程、吴恩达机器学习--讲讲降维

从昨天开始学习吴恩达的机器学习篇,过两天来更新一下学习笔记…

Mr_charm的博客 561
上一篇: 廖雪峰SQL教程读书笔记(二):关系模型
下一篇: 廖雪峰SQL教程读书笔记(四):修改数据
ikeepo
ikeepo 优质创作者: 数据库技术领域 优质创作者: 数据库技术领域
博客等级 码龄8年 1万+粉丝 1457原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值