SQL的基础语句

news2024/9/22 11:26:26

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) t1
     INNER JOIN course  on t1.cno = course.cno) t2
 where gradeName = '数学';

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

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

相关文章

AR HUD_VSLAM+显示技术

智能座舱的一个重要技术方向是表达与展示。HUD可以将驾驶相关的信息,如车速、导航等投射到驾驶员的视线上方,避免驾驶员的目光离开前方道路。这种显示方式可以提供关键信息的实时展示,减少驾驶员的分心。 HUD的技术原理就是通过光学系统将信息…

突破文化壁垒:海外社交媒体营销的内容创新与个性化策略

随着全球化的加速和互联网的普及,海外社交媒体营销已成为企业拓展国际市场、提升品牌影响力的重要手段。然而,如何在众多品牌中脱颖而出,吸引海外用户的关注,却是一个值得深入探讨的问题。本文Nox聚星将和大家从内容创新和个性化策…

考研日常记录(upd 24.4.22)

由于实在太无聊了 , 所以记录以下考研备考日常 , 增加一点成就感 , 获得一点前进动力。 文章目录 2024.4.18 周四课程情况:时间规划: 2024.4.19 周五课程情况:时间规划: 2024.4.20 周六2024.4.2…

GaussianEditor:快速可控的3D编辑与高斯飞溅

GaussianEditor: Swift and Controllable 3D Editing with Gaussian Splatting GaussianEditor:快速可控的3D编辑与高斯飞溅 Yiwen Chen*​1,2   Zilong Chen*​3,5   Chi Zhang2   Feng Wang3   Xiaofeng Yang2 陈怡雯 *​1,2 陈子龙 *​3,5 张驰 2 王峰 3 杨晓…

k8s集群资源编排清单文件解读

1、YAML 文件概述 k8s集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源…

LTD271次升级 | 网站/小程序可设访问IP的黑白名单 • 官微中心支持PDF等办公文件预览与并分享 • 订单退款显示更详尽明细

1、新增IP访问限制功能; 2、订单新增交易号显示与退款明细显示; 3、自定义地址增加四级地区; 4、Android版App优化文件功能; 5、已知问题修复与优化; 01 官微中心 1) 新增IP限制访问功能 允许或者禁止某些 IP 或…

vue快速入门(四十)非父子组件通信

注释很详细&#xff0c;直接上代码 上一篇 新增内容 媒介js的创建发送组件发送事件示例接收组件接收事件示例 源码 App.vue <template><div id"app"><TessFirst></TessFirst><TestSecond></TestSecond></div> </templ…

Linux 引导过程与服务控制

Linux操作系统引导过程 完整启动过程 简化紧要关键步骤&#xff08;重点&#xff09; Linux系统开机引导过程&#xff1a; 1&#xff09;开机自检 检测硬件设备&#xff0c;找到能够引导系统的设备&#xff0c;比如硬盘 2&#xff09;MBR引导 运行MBR扇区里的主…

【STM32+HAL+Proteus】系列学习教程---RS485总线(收发仿真实现)

实现目标 1、掌握UART/USART/RS485等几个常见概念的区别 2、掌握RS485的逻辑电平、硬件接线等基础知识 3、具体实现目标&#xff1a;1、利用两个单片机组成RS485通信网络&#xff1b;2、两个单片机之间能实现正常收发数据。 一、串口、RS485等之间的关系 串口&#xff1a;是…

使用 Docker 部署 Draw.io 在线流程图系统

1&#xff09;介绍 Draw.io GitHub&#xff1a;https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具&#xff0c;拥有大量免费素材和模板。程序本身支持中文在内的多国语言&#xff0c;创建的文档可以导出到多种网盘或本地。无论是创建流程图、组织结构图…

vscode 解决无法创建临时文件。

报错&#xff1a; Fatal error: cant create C:\Users???y\AppData\Local\Temp\ccqkCS9j.o: No such file or directory 右击此 电脑 -> 属性 打开 系统信息 -> 高级系统设置 系统属性 -> 高级 -> 环境变量 将temp 和 tmp 改为其它英文路径 只更改用户变量…

Opencv_2_ 图像色彩空间转换

ColorInvert.h 内容如下&#xff1a; #pragma once #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void colorSpaceInvert(Mat&image); }; ColorInvert.cpp…

kubernetes中的副本控制器rc(replicationcontrollers)和rs(replicasets)

一、rc控制器replicationcontrollers rc控制器就是控制相同pod副本数量 使用rc控制器资源创建pod&#xff0c;设定创建pod资源的数量 1.1 案例 1.1.1、创建资源清单 [rootmaster rc-demo]# cat rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: rc01 …

Spring Cloud面试篇

面试篇-nacos面试题 1. springboot常见组件 注册中心组件&#xff1a;Eureka、Nacos 负载均衡组件&#xff1a;Ribbon 远程调用组件&#xff1a;OpenFeign 网关组件&#xff1a;Zuul、Gateway 服务保护组件&#xff1a;Hystrix、Sentinel 服务配置管理组件&#xff1a;SpringCl…

如何用PHP语言实现远程语音播报

如何用PHP语言实现远程语音播报呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现语音播报。通过发送文本信息&#xff0c;来实现远程语音播报、语音提醒、语音警报等。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称1…

路由引入,路由过滤,路由策略实验

1&#xff0c;配置IP地址 R1&#xff1a; [R1]dis ip interface brief Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 100.1.1.1/24 up up LoopBack0 …

环境配置--idea练习java实现一键运行

背景 练习java时&#xff0c;先编译再运行&#xff0c;手动执行效率太慢。需要像运行python脚本一下快速获取脚本执行效果。 idea配置 使用java草稿方式实现java脚本的快速调试。 具体配置&#xff1a; 添加java草稿配置 指定java主要类、文件路径、工作目录&#xff0c;…

高频前端面试题汇总之前端性能优化篇

一、CDN 1. CDN的概念 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是指一种通过互联网互相连接的电脑网络系统&#xff0c;利用最靠近每位用户的服务器&#xff0c;更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户&#…

基于51单片机的宠物自动喂食语音播报,有实物

1. 51仿真&#xff1a; LCD第一屏显示食物重量&#xff0c;当前时间&#xff0c;温湿度。第二屏显示喂食时间&#xff0c;第三屏显示喂食重量。可通过点击查看喂食时间翻转屏幕显示。 点击查看喂食时间后&#xff0c;显示喂食时间&#xff0c;可以设置三个时间&#xff0c;再点…

3D Gaussian Splatting介绍

目录 一、概述二、基础介绍1. 多维高斯分布2. 将3D 高斯投影到2D像素平面3. 球谐函数4. Splatting and α \alpha α blending 三、整体流程四、 伪代码五、评价指标六、实验结果七、reference 一、概述 3D Gaussian Splatting和NeRF一样&#xff0c;主要用于新视图合成。 特…