SQL的基础语句

1、select语句

select colums from table_name

2、条件语句

        

#查询出查询出用户id为1和3的用户记录   IN 操作符允许我们在 WHERE 子句中规定多个值。
select * from  student where id in (1,3)
#查询出所有姓王的同学  模糊查询 like 通配符(% 任意多个字符 _单个字符)
#下例中的'王%'将相当于'王xxxx',也可能是'王x',但不可能是'x王'
SELECT * FROM student WHERE name like '王%';
#查询姓王且名字只有两个字的学生,此时就只能是'王x'
SELECT * FROM student WHERE name like '王_';
#查询出所有含有花子的同学的名称,此时就可以随意,只要带'花'就可以
SELECT * FR OM student WHERE name like '%花%';

3、聚合函数

    

#求学生年龄的总和
select sum(age) from student;
#查询所有的学生数量
SELECT count(*) from student;
#查询出班级号不为空的学生数
SELECT count(class_num) from student

   注意,count(*)表示取得当前查询表所有记录  ,同时count(字段名称),不会统计为null的记录

4、分组查询        grounp by

        作用:通过哪个字段(或哪些)字段来分组

#查询出各个班年龄的最大值,以班级号来分组
SELECT max(age),class_num from student GROUP BY class_num
#求每个班的平均年龄,以班级号来分组
SELECT avg(age),class_num from student GROUP BY class_num

5、排序 order by

#按照年龄从低到高进行排序:
SELECT * FROM student ORDER BY age;
#默认的排序规则是ASC:“升序”,即从小到大。ASC可以省略,即ORDER BY score ASC和ORDER BY score效果一样。
#如果要反过来,按照年龄从高到底排序,我们可以加上DESC表示“倒序”:
SELECT * FROM student ORDER BY age DESC;
#如果想按照年龄降序,并且按照学号升序怎么弄?
SELECT * FROM student ORDER BY age DESC,sno;

6、分页查询(限制查询)

        使用SELECT查询时,如果结果集数据量很大,比如几万行数据,放在一个页面显示的话数据量太大,不如分页显示,每次显示100条。

        要实现分页功能,实际上就是从结果集中显示第1~100条记录作为第1页,显示第101~200条记录作为第2页,以此类推。

        因此,分页实际上就是从结果集中“截取”出第M~N条记录。这个查询可以通过LIMIT  OFFSET 子句实现。我们先把所有学生按照成绩从高到低进行排序:

        现在,我们把结果集分页,每页3条记录。要获取第1页的记录,可以使用LIMIT 3 OFFSET 0:

SELECT * FROM student LIMIT 3 OFFSET 0;

        上述查询LIMIT 3 OFFSET 0表示,对结果集从0号记录开始,最多取3条。注意SQL记录集的索引从0开始。

#如果要查询第2页,那么我们只需要“跳过”头3条记录,也就是对结果集从3号记录开始查询,把OFFSET设定为3:
SELECT * FROM student LIMIT 3 OFFSET 3;

        可见,分页查询的关键在于,首先要确定每页需要显示的结果数量pageSize(这里是3),然后根据当前页的索引pageIndex(从1开始),确定LIMIT和OFFSET应该设定的值:

        LIMIT总是设定为pageSize

        OFFSET计算公式为pageSize * (pageIndex - 1)

7、联表查询

        SQL92语法   select xxx from A 表名,B表名 where 表连接条件 and 数据查询条件;

SELECT s.name,c.class_name from student s,class c where s.class_num = c.class_num

        缺点:表连接条件与查询条件放在一起,没有分离

        SQL99语法   select xxx from A 表名 join B 表名 on 表的连接条件;

select student.name,class.class_name  from student  join class on student.class_num = class.class_num;

        优点:表连接独立,结构清晰,如果结果数据不满足要求,可再追加where条件进行过滤;

        内连接    inner join

        用于根据两个或多个表之间的共同字段将表组合在一起,两个表都要有的数据才能展现

#取两个表都有的数据
SELECT student.name,class.class_name  from student 
INNER JOIN class on student.class_num = class.class_num;

        左外连接   Right join   

包含左边表的全部行(不管右边的表中是否存在与他们匹配的行),以及右边表中全部匹配的行。

#以左表为基础
SELECT student.name,class.class_name  from student 
LEFT JOIN class on student.class_num = class.class_num;

        右外连接   Left join

包含右边表的全部行(不管右边的表中是否存在与他们匹配的行),以及左边表中全部匹配的行。

#以右表为基础
SELECT student.name,class.class_name  from student 
RIGHT JOIN class on student.class_num = class.class_num;

8、嵌套查询

        一般在子查询中,程序先运行在嵌套在最内层的语句,再运行外层。因此在写子查询语句时,可以先测试下内层的子查询语句是否输出了想要的内容,再一层层往外测试,增加子查询正确率。否则多层的嵌套使语句可读性很低。

        关于嵌套查询,都是从最内层开始的

#找到所有选选择课程号为1001的同学的名称
select t1.name FROM
(SELECT student.name,relationship.cno FROM student 
INNER JOIN relationship on student.sno = relationship.sno) t1
WHERE t1.cno = '1001';
#找到所有选选择课程号为 数学 的同学的名称
SELECT t2.name FROM
(select t1.name,course.gradeName from 
(SELECT student.name,relationship.cno FROM student INNER JOIN relationship on student.sno = relationship.sno) t1INNER JOIN course  on t1.cno = course.cno) t2where gradeName = '数学';

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

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

相关文章

达芬奇调色:色彩理论入门

写在前面 整理一些达芬奇调色的笔记博文内容涉及: 一级调色是什么,以及 调色素材格式 log,raw,rec709 简单认知理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候&#…

【剪映专业版】03立体自动翻页

【剪映专业版】立体自动翻页制作 1.导入素材,图片或视频均可 2.将素材2拖动至素材1的上方,点击蒙版,选择线性蒙版,并旋转为90度。 3.复制素材1,并拖动到素材2上方,分割并删除后半部分,点击蒙版…

Innodb之Doublewrite Buffer

Innodb 事件流程 Doublewrite Buffer InnoDB 存储引擎的 Doublewrite Buffer(双写缓冲区)是一种用于数据完整性和恢复的关键机制。它是为了在数据库发生崩溃时保护数据不受损坏设计的。下面将详细介绍 Doublewrite Buffer 的工作原理、目的以及其对性能…

echarts柱形图实现2.5D

思路:使用markpoint option {title: {text: Rainfall vs Evaporation,subtext: Fake Data},tooltip: {trigger: axis},legend: {data: [Rainfall, Evaporation]},toolbox: {show: true,feature: {dataView: { show: true, readOnly: false },magicType: { show: t…

一文了解什么是私有化部署

在当今数据驱动的商业环境中,企业对于数据的处理和传输需求日益增长,这使得私有化部署成为了一种受到青睐的数据管理策略。私有化部署不仅能够提供更高的数据安全性和隐私保护,还能让企业根据自身需求定制解决方案,从而更有效地控…

你们项目日志是如何处理的???

ELK日志采集系统 1.什么是ELK ELK 是一套流行的数据搜索、分析和可视化解决方案,由三个开源项目组成,每个项目的首字母合起来形成了“ELK”这一术语: Elasticsearch (ES): Elasticsearch 是一个基于 Apache Lucene 构建的分布式、实时搜索与…

RAG开山之作:结合参数化与非参数化记忆的知识密集型NLP任务新解法

20年RAG刚提出时的论文:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,也算是RAG的开山之作之一了。 摘要:检索增强生成(RAG)方法结合了预训练语言模型与基于检索的非参数化记忆,通过…

布局香港之零售小店篇 | 香港一人小企与连锁超市的竞争

近年来,内地品牌入驻香港市场开拓业务已成大势所趋。香港特区政府早前公布的「2023年有香港境外母公司的驻港公司按年统计调查」显示,2023年母公司在海外及内地的驻港公司数量高达9039家。内地品牌在香港的成功落地,不仅为香港市民带来了丰富…

rosdep一键修复

External Player - 哔哩哔哩嵌入式外链播放器 rosdep失败原因 通常在执行rosdep init操作时就会报错,问题的核心在于rosdep会访问raw.githubusercontent.com这个网址下的资源,例如https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sour…

Leetcode 119 杨辉三角 II

目录 一、问题描述二、示例及约束三、代码方法一:递推方法二:线性递推 四、总结 一、问题描述 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。   在「杨辉三角」中,每个数是它左上方和右上方的数的和。   自我…

运行Java或Python的时候,Git是必要的吗?

在运行Java或Python代码时,Git并不是必需的,但它可以成为一个非常有用的工具,特别是在团队协作、版本控制和代码管理方面。 Git的作用和优势 版本控制: Git是一个分布式版本控制系统,可以跟踪文件的更改历史&#xff…

CodeGemma初探

什么是 CodeGemma CodeGemma是一系列强大而轻量级的模型的集合,可以执行各种编码任务,包括填充中间代码补全、代码生成、自然语言理解、数学推理和指令跟随。 版本: instruct:7B, 这个版本专门针对自然语言到代码聊天和指令跟随…

租房管理|基于SprinBoot+vue的租房管理系统(源码+数据库+文档)

租房管理目录 基于SprinBootvue的租房管理系统 一、前言 二、系统设计 三、系统功能设计 前台 后台 管理员 订单信息管理 屋主申诉管理 屋主权限 房源信息管理 订单信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

阿里云mysql8.0 this is incompatible withsql mode=only full group by

阿里云RDS中mysql5.6升级为8.0后,出现如下问题: ### Error querying database. Cause:java.sql.SQLSyntaxErrorException: Expression #1 of SELECT listis not in GROUP BY clause and contains nonaggregatedcolumn temp.product_id which is not fun…

陪诊小程序开发:守护健康,温暖陪伴每一步

在繁忙的都市生活中,每个人都可能面临就医的困扰。面对陌生的医院环境、复杂的就诊流程,很多人感到无助和迷茫。陪诊小程序的开发,旨在通过科技与服务的融合,为用户带来更加贴心、便捷的陪诊体验,守护健康,…

编译支持播放H265的cef控件

接着在上次编译的基础上增加h265支持编译支持视频播放的cef控件(h264) 测试页面,直接使用cef_enhancement,里边带着的那个html即可,h265视频去这个网站下载elecard,我修改的这个版本参考了里边的修改方式,不过我的这个…

web前端学习笔记1

前端学习笔记 1. 走进HTML 1.1 什么是HTML 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。HTML文档的后缀名 .html.htm以上两种后缀名没有区别…

Mediasoup-demo 本地启动步骤(超详细)

Mediasoup-demo 本地启动步骤(超详细) 一.本人环境 系统:macos13.6.3 node: v16.20.2 npm:8.19.4 python: 3.9.6 二.下载代码 git 下载代码: git clone gitgithub.com:versatica/mediasoup-demo.git 三.代码介绍 下载下来…

第⑮讲:Ceph集群管理与监控操作指南

文章目录 1.查看集群的状态信息2.动态的查看集群的状态信息3.查看集群的利用率4.查看OSD的资源利用率5.查看OSD的列表6.查看各组件的状态7.查看集群的仲裁信息8.查看/修改集群组件sock的配置参数 1.查看集群的状态信息 通过集群状态信息可以看到集群的健康状态、各个组件的运行…

实时数仓选型

实时数仓选型 实时数仓选型第一版实时数仓选型第二版 实时数仓选型第一版 实时数仓分层: 计算框架:Flink;存储框架:消息队列(可以实时读取&可以实时写入)ODS:Kafka 使用场景:每过来一条数据,读取到并加工处理DIM: HBase 使用场景:事实表会根据主键获取一行维表数据(1.永…