数据库 高阶语句

news2024/12/25 12:55:01

目录

数据库 高阶语句

使用select 语句,用order by来对进行排序

区间判断查询和去重查询

如何对结果进行分组查询group by语句

limit 限制输出的结果记录,查看表中的指定行

通配符

设置别名:alias  简写就是 as


使用select 语句,用order by来对进行排序

数据库的权限一般是很小的,我们在工作使用最多的场景是查

id int(4) primary key,
name varchar(10) not null,
score decimal(5,2),
address varchar(20),
sex char(3) not NULL
);

select * from info;

使用select 语句,用order by来对进行排序
ASC 
#升序排列,默认就是升序,可以不加
desc
#降序排列,需要添加

格式 举例
select id,name from info order by id;   
#升序查看id那一列

select id,name from info order by id desc;  
#降序查看id那一列

select id,name,score from info order by name desc;   
#最好用数据排序比较合适,但不绝对

order by 结合where 条件过滤

select name,score from info where address='南京西路' order by score desc;
#根据名字,成绩查询地址那一列是南京西路,降序过滤,只有第一个参数出现相同值时,第二个才会按照要求排序

#举例:查id姓名成绩,根据性别都是女,按照id进行降序排列
select id,name,score from info where sex='女' order by id desc;

区间判断查询和去重查询

AND   /   or
#且      或

select * from info where score > 70 and score <=90;
#例  查询score 列 大于70 且 小于等于90 的数据

举例
#大于80或者小于90
select * from info where score > 80 AND score <90;
#查询score列大于80且小于90的数据
select * from info where score > 80 or score <90;
#大于80或小于90


嵌套条件

select * from info where score > 70 and ( score >75 and score <90 );
#大于70且大于75且小于90
select * from info where score > 70 or ( score >75 and score <90 );
#大于70或大于75且小于90

#嵌套条件,满足性别是男,然后进行筛选成绩 80-90
select * from info where sex='男' and (score >80 and score <90);


#去重查询
select distinct address from info;
select distinct sex from info;

#根据地址address去重,然后过滤成绩=90且性别是男
select distinct address from info where sex='男' and score =90;

如何对结果进行分组查询group by语句

对结果进行分组查询group by语句,一般是结合聚合函数一块使用
count() 统计有多少行
sum()列的值相加,求和
avg() 列的值求平均数
max() 过滤出列的最大值
min() 过滤出列的最小值
分组的时候可以按照一个字段,也可以按照多个字段对结果进项分组处理
select * from info;

举例格式
select count(name),sex from info group by sex;
#统计name 列 对结果进行分组查询


#根据where 条件删选,score >= 80
select count(name),sex,score from info where score >= 80 group by sex;

#求和;以地址为分组,对score求和
select sum(score),address from info group by address;

#算出男生女生平均成绩
select avg(score),sex from info group by sex;

#分别求出男生组和女生组的成绩最低的姓名
select min(score),sex from info group by sex;

#group by 实现条件过滤,后面跟上having语句实现条件过滤
select avg(score),address from info group by address having avg(score) >



按照地址分组,求成绩的平均值,然后>50,按照id的降序排列
select avg(score),address,id from info group by  address having avg(score) >50 order by id desc;

select avg(score),address,id from info group by  address having avg(score) >50 order by id desc;
统计name 的行数,计算出学生的个数把成绩也查出来按照统计出来的学生个数升序排列按照地址分组,学生的成绩大于等于70分

select count(name),score,address from info group by address having score >= 70 order by count(name);
按照性别分组,求出男生和女生的最大成绩,最大成绩是否超过75分,满足条件的过滤出来

select max(score),sex from info group by sex having max(score) > 75;
使用聚合函数必须要加group by 要选用有多个重复值的列,group by的过滤条件要用having语句过滤

limit 限制输出的结果记录,查看表中的指定行

select * from info;

select * from info limit 3; 
#只看前三行

#看2行到5行
select * from info limit 1,4;

#看6到7行
select * from info limit 5,3;

select * from info order by id desc limit 3;  
#快速查询后几行,将最后几行降序方式到前几行,再用limit只查看前三行
通配符
#通配符主要用于替换字符串中的部分字符,通过部分字符的匹配向相关的结果查询出来
#通配符和like一起使用,使用where语句一起来完成查询
# %  表示0个,1个或者多个
# _  表示单个字符



select * from info where address like '山%';  
#以山为结尾

select * from info where address like '%路';  
#以路为结尾

select * from info where address like '%山%'; 
#中间有山



select * from info where name like '杨_婷';

select * from info where name like '%婷';

select * from info where address like '山%__';  
#通配符可以结合在一块使用
设置别名:alias  简写就是 as
#设置别名的目的是在mysql查询时,表的名字或者字段名太长,可以使用别名替代,方便书写,也可以增加可读性
#可以给表起别名,但是要注意别名不能和数据库其他的表名互相冲突
#列的别名在结果中可以显示,但是表的别名在结果中没有显示,只能用于查询

格式 举例
select name as 姓名, score as 成绩 from info;


select name 姓名,score 成绩 from info; 
#可以不加as

create table test as select * from info;
#创建了一个表,叫test ,test的数据结构完整的从info复制过来,但是约束不会被复制

desc test;
#使用as复制表,约束不会被复制过来。

create table test1 as select * from info where score >=60;
#创建一个表,通过as复制info表,但只有score那列 大于等于60 才会被复制

#以这种方式创建的表主键在不在,外键在不在,索引在不在?
#都不在
#通过as创建,主键没了,外键没了,外键在不在,索引在不在?
#都不在



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

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

相关文章

用C++编写动画+音频版极乐净土

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<graphics.h> #include<Windows.h> #include<MMSystem.h>//播放音乐所需要的头文件 #pragma comment(lib,"winmm.lib")//告诉编译器&#xff0c;加载winmm.lib库文件 #define C…

文件包含漏洞培训

CTF介绍 MISC(Miscellaneous)类型,即安全杂项,题目或涉及流量分析、电子取证、人肉搜索、数据分析等等。CRYPTO(Cryptography)类型,即密码学,题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。PWN类型,PWN在黑客俚语中代表着攻破、取得权限…

项目管理之如何召开项目时间箱启动会议

时间箱启动会议是项目管理中至关重要的一环&#xff0c;它帮助项目团队明确目标、分配任务、制定计划&#xff0c;并为项目的顺利实施提供指导和支持。下边为大家介绍有关如何召开时间箱启动会议的一些建议&#xff1a; 确定会议目标 在召开时间箱启动会议前&#xff0c;首先…

分布式任务调度(02)--ElasticJob-Lite

1 简介 轻量级无中心化解决方案&#xff0c;jar包提供分布式任务的协调服务。 // 应用内部定义任务类&#xff0c;实现SimpleJob接口 public class MyElasticJob implements SimpleJob {// 编写自己任务的实际业务流程Overridepublic void execute(ShardingContext context) {…

Alert警告提示(antd-design组件库)简单使用

1.Alert警告提示 警告提示&#xff0c;展现需要关注的信息。 2.何时使用 当某个页面需要向用户显示警告的信息时。 非浮层的静态展现形式&#xff0c;始终展现&#xff0c;不会自动消失&#xff0c;用户可以点击关闭。 组件代码来自&#xff1a; 警告提示 Alert - Ant Design 3…

VM虚拟机逆向---羊城杯2023 vm_wo复现【详解】

文章目录 前言题目分析还原汇编exp后言 前言 兜兜转转终于回到这里了。之前复现了羊城杯较简单点的三题&#xff0c;到这一题vm卡住了&#xff0c;刷了好几道&#xff0c;终于搞定了。 题目分析 第一次遇到Mac os的题目&#xff0c;幸好还可以做。 opcode 和 指令操作 密文…

【Azure 架构师学习笔记】-Azure Storage Account(5)- Data Lake layers

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account&#xff08;4&#xff09;- ADF 读取Queue Storage 前言 不管在云还是非云环境中&#xff0c; 存储是IT 系统的其中一个核心组件。在…

uni-app基于vue实现商城小程序

一、前言 参考“网易严选”小程序 项目采用传统vue项目结构&#xff0c;即uni-app打包和运行成小程序&#xff0c;使用HBuilder开发工具开发项目&#xff0c;通过运行启动“微信开发者工具”完成项目启动。 二、功能效果图 1.首页 2.分类 3.活动 4.我的 5.商品详情 6.购物车…

什么是AI算子开发

今天在某离职群里看到前同事聊天&#xff0c;说到国内某大厂的一个面试&#xff0c;本来求职面试的岗位是通信库&#xff0c;类似于英伟达的 nccl&#xff0c; 但是却被问到了很多与算子开发相关的问题。 看来算子开发岗位依然很稀缺。 联想到之前写过的一篇关于AI算子开发的文…

关闭EasyConnect进程详细步骤

1、不关闭导致的问题 nacos浏览器可以正常访问&#xff0c;但idea启动的时候连不上nacos&#xff0c;而且第二次启动都启动不了&#xff0c;一直卡在那里&#xff0c;排查了半天&#xff0c;怀疑是装的EasyConnect的VPN导致的&#xff0c;于是停止掉相关服务即可。但直接结束进…

Ubuntu中安装rabbitMQ

一、安装 RabbitMQ ①&#xff1a;更新源 sudo apt-get update②&#xff1a;安装Rrlang语言 由于RabbitMq需要erlang语言的支持&#xff0c;在安装RabbitMq之前需要安装erlang sudo apt-get install erlang-nox③&#xff1a;安装rabbitMQ sudo apt-get install rabbitmq-s…

【Proteus仿真】【Arduino单片机】数码管显示

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用TM1637、共阳数码管等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示数字、字符。 二、软件设计 /* 作者&#xff1a;嗨小易&am…

如何手动获取spring/springboot中的IOC容器(全局上下文对象)?

IDE&#xff1a;IntelliJ IDEA 2022.2.3 x64 操作系统&#xff1a;win10 x64 位 家庭版 JDK: 1.8 文章目录 前言一、如何手动获取spring容器[ApplicationContext]&#xff1f;方式①&#xff1a;在启动类中获取spring容器方式②&#xff1a;自定义工具类实现ServletContextList…

6.1二叉树的递归遍历(LC144,LC15,LC94)

什么是递归函数&#xff1f; 递归函数是一种函数调用自身的编程技巧。 在递归函数中&#xff0c;函数通过不断调用自身来解决一个问题&#xff0c;直到达到基本情况&#xff08;递归终止条件&#xff09;并返回结果。 递归函数在解决一些问题时非常有用&#xff0c;特别是那些…

kmp算法详解+next数组求解

KMP算法是一种高效的字符串匹配算法&#xff0c;其核心思想是利用已经匹配的部分信息&#xff0c;尽可能减少匹配次数。KMP算法通过预处理阶段计算一个最大前后缀长度数组&#xff08;也称为“部分匹配表”或“失败函数”&#xff09;&#xff0c;用于在匹配失败时确定模式串应…

互联网Java工程师面试题·Spring篇·第七弹

目录 36、什么是基于 Java 的 Spring 注解配置? 给一些注解的例子. 37、什么是基于注解的容器配置? 38、怎样开启注解装配&#xff1f; 39、Required 注解 40、Autowired 注解 41、Qualifier 注解 42、在 Spring 框架中如何更有效地使用 JDBC? 43、JdbcTemplate 44…

网络安全(黑客)-零基础自学

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

NowCoder | 环形链表的约瑟夫问题

NowCoder | 环形链表的约瑟夫问题 OJ链接 思路&#xff1a; 创建带环链表带环链表的删除节点 代码如下&#xff1a; #include<stdlib.h>typedef struct ListNode ListNode; ListNode* ListBuyNode(int x) {ListNode* node (ListNode*)malloc(sizeof(ListNode));node…

基于springboot+vue的图书馆管理系统

图书馆管理系统 springboot32阿博图书馆管理系统 源码合集&#xff1a; www.yuque.com/mick-hanyi/javaweb 源码下载&#xff1a;博主私 摘 要 随着社会的发展&#xff0c;计算机的优势和普及使得阿博图书馆管理系统的开发成为必需。阿博图书馆管理系统主要是借助计算机&…

vue3高德地图+搜索+点击获取经纬度

首先 安装依赖 npm i amap/amap-jsapi-loader --save html&#xff08;设置一个容器&#xff09;点击位置控制台可以打印到数据 如果想要回显到input 只需在input内绑定v-modal即可 <template><div><input style"width: 80%; height: 30px" v-mode…