MySQL数据库高级语句

news/2025/3/16 7:35:53/

文章目录

  • MySQL高级语句
    • older by 排序
    • 区间判断查询
    • 或与且(or 与and)
    • 嵌套查询(多条件)
    • 查询不重复记录distinct
    • count 计数
    • 限制结果条目limit
    • 别名as
    • 常用通配符
    • 嵌套查询(子查询)
      • 同表
      • 不同表
      • 嵌套查询还能用于删除
      • 嵌套查询还可以用于修改表格
  • 视图
  • 内连接 左连接 右连接
    • 内连接
    • 左连接
    • 右连接
  • 结语

MySQL高级语句

1构建测试用表

create table test1 (id int primary key,name char(30) not null,gpa decimal(3,2),hobbid int(2));
insert into test1 values(1,'baijiahe',3.3,2);
insert into test1 values(2,)'Hu Zexing',2.9,2);
....

在这里插入图片描述

older by 排序

1.order by 排序默认升序

select * from test1 order by gpa;

在这里插入图片描述
2.添加desc 选线可以降序排序

select * from test1 order by gpa desc;

在这里插入图片描述
3.order by 还可以使用where来过滤数据

select * from test1 where hobbid=4   order by gpa desc;	

在这里插入图片描述
4.order by 还可以多个数值一起排序

select * from test  order by gpa,hobbid,id desc;

上面表示按绩点(gpa)排名,分数相同的按照hobbid来序排序hobbid相同按照 id降序排序
在这里插入图片描述

select * from test order by gpa desc,hobbid desc,id desc; 

在这里插入图片描述

区间判断查询

查询GPA大于2.7的数据

select * from test1 where gpa>2.7;

在这里插入图片描述

或与且(or 与and)

查询GPA>2.7或者id=7的数据

select * from test1 where gpa>2.7 or id=7;

在这里插入图片描述

查询GPA>2.7且GPA<=3.2的数据

select * from test1 where gpa>2.7 and gpa<=3.2;

在这里插入图片描述

嵌套查询(多条件)

查找gpa>2.4且(id大于4或者hobbid=2)的数据

select * from test1 where gpa>2.4 and(id>4 or hobbid=2);

在这里插入图片描述

查询不重复记录distinct

select distinct hobbid from test;

查询test表格中 hobbid项中不重复的数据
在这里插入图片描述

count 计数

统计一个有多少数据(包括空行),count(主键名)则不包括空行

select count(*) from test1;

在这里插入图片描述

统计表中hobbid不同的个数

select count(distinct hobbid) from test1;

在这里插入图片描述

限制结果条目limit

注:本文忽略第0行

显示表至第二行

select * from test1 limit 2;

在这里插入图片描述
从第二行开始显示,至第五行

select * from test1 limit 2,5

在这里插入图片描述
查询前五

select * from test1 order by gpa desc limit 1,5;

在这里插入图片描述

别名as

使用别名显示

select name 名字, gpa 绩点 from test1;

在这里插入图片描述
创建表别名

create table t1 as select * from test1;

在这里插入图片描述
用别名查询

select name,gpa from t1;

在这里插入图片描述

常用通配符

1.% - 通配符,匹配任何数量的字符。
2._ - 通配符,匹配任何单个字符。
例如

mysql> SELECT * FROM t1 AS t WHERE t.name LIKE 'w%';

在这里插入图片描述

SELECT * FROM test1 WHERE gpa LIKE '3___';

嵌套查询(子查询)

创建一个新表,用作实验

create table money(id int primary key,money decimal(15,2));
insert into money values (1,3000);
insert into money values (2,5000);
insert into money values (3,1300);
insert into money values (4,6000);
insert into money values (5,2800);
insert into money values (6,2300);
insert into money values (7,3300);
insert into money values (8,9200);
insert into money values (10,3154);
insert into money values (11,31575);
insert into money values (12,8547);
insert into money values (13,8745);
insert into money values (14,900);

在这里插入图片描述

同表

select id,gpa from test1 where id in (select id from test1 where gpa=>2.7)

上面这个SQL语句含义是,首先运行括号内的SQL语句,输出运行结果到达括号外的SQL语句,最为条件运行。
可以理解为上个SQL语句效果相当于SELECT id, gpa FROM test1 WHERE id=1 OR id=2 OR id=3 OR id=4 OR id=5 OR id=9;
在这里插入图片描述
在这里插入图片描述

不同表

select id,money from money where id in (select id  from test1);

在这里插入图片描述

上面这个SQL语句含义是,首先运行括号内的SQL语句,输出运行结果到达括号外的SQL语句,最为条件运行。
可以理解为上个SQL语句效果相当于select id,money from money where id=6 or id=7 or id=8 or id=9 or id=10;

嵌套查询还能用于删除

创建一个测试用的表test2
用select查询是否是要删除的值
是直接将select换成delete就可以删除了

create table test2 (select * from test1);
select * from text2 where id in (select id  from test1 where gpa<=2.7);
delete * from text2 where id in (select id  from test1 where gpa<=2.7);

在这里插入图片描述

嵌套查询还可以用于修改表格

将money表的id=1的用户money数改为1000

update money set money='1000' where id in(select id from test1 where id=1);

在这里插入图片描述

子查询,别名as
当运行

select id from (select id,name from test1);

在这里插入图片描述

会报错
原因为:
select * from 表名 此为标准格式,而以上的查询语句,“表名"的位置其实是一个完整结果集,mysql并不能直接识别,而此时给与结果集设置一个别名,以”select a.id from a“的方式查询将此结果集视为一张"表”,就可以正常查询数据了,如下:

select a.id from (select id,name from test) a;

在这里插入图片描述

相当于
select test.id,name from test;
select 表.字段,字段 from 表;

在MySQL中,视图(View)是一种虚拟表,它由一个SQL查询定义,但并不存储数据。视图的本质是一条SQL查询语句,它的结果集看起来像是一张表。视图可以用来简化复杂的SQL操作,提供数据的安全性和独立性,以及为用户提供一个更加直观的数据表示。

视图

在MySQL中,视图(View)是一种虚拟表,它由一个SQL查询定义,但并不存储数据。视图的本质是一条SQL查询语句,它的结果集看起来像是一张表。视图可以用来简化复杂的SQL操作,提供数据的安全性和独立性,以及为用户提供一个更加直观的数据表示。

CREATE VIEW 试图名 AS SELECT 字段1, 字段2, ... FROM 表名 WHERE 判断句;
create view test_view as select name,gpa from test1 where id<=10;

使用视图

select * from test_view;

在这里插入图片描述
查看视图与源表结构

desc test_view;

在这里插入图片描述

修改视图

update test_view set gpa=3.9 where name=Shirakanga ;

将视图的Shirakanga的gpa改成3.9原表也会自动修改

在这里插入图片描述

内连接 左连接 右连接

内连接

内连接是SQL中的一种连接查询,用于合并两个或多个表中具有匹配值的行。只有当连接条件在两个表中都匹配时,内连接才会返回这些行,内连接只返回两个表中都有匹配的记录的结果集。

SELECT test1.id, test1.name, money.id, money.money FROM test1 INNER JOIN money ON test1.id = money.id;

在这里插入图片描述

左连接

左连接是一种SQL连接操作,它返回左表(LEFT JOIN子句之前的表)的所有记录,即使右表中没有匹配的记录。如果右表中有匹配的记录,则左连接还会返回右表中的匹配记录。如果右表中没有匹配的记录,则结果集中右表的部分将包含NULL。

select * from test1 left join money on test1.id=money.id;

在这里插入图片描述

右连接

右连接(Right Join)是一种SQL连接操作,它返回右表(RIGHT JOIN子句之后的表)的所有记录,即使左表中没有匹配的记录。如果左表中有匹配的记录,则右连接还会返回左表中的匹配记录。如果左表中没有匹配的记录,则结果集中左表的部分将包含NULL。

SELECT * FROM test1 RIGHT JOIN money ON test1.id = money.id;

在这里插入图片描述

结语

  1. ORDER BY 排序:
    • 升序排序:ORDER BY column_name
    • 降序排序:ORDER BY column_name DESC
    • 多条件排序:ORDER BY column1, column2 DESC
  2. 区间判断查询:
    • 查询满足特定条件的数据:WHERE column_name BETWEEN value1 AND value2
  3. 或与且(OR 与 AND):
    • 组合多个条件进行查询:WHERE column_name = 'value' OR column_name2 = 'value2'
    • 组合多个条件进行查询:WHERE column_name = 'value' AND column_name2 = 'value2'
  4. 查询不重复记录(DISTINCT):
    • 去除重复记录:SELECT DISTINCT column_name FROM table_name
  5. COUNT 计数:
    • 统计记录数:SELECT COUNT(*) FROM table_name
  6. 限制结果条目(LIMIT):
    • 限制结果数量:LIMIT offset, limit_number
  7. 别名(AS):
    • 为列设置别名:SELECT column_name AS alias_name FROM table_name
    • 为表设置别名:SELECT * FROM table_name AS alias_name
  8. 常用通配符:
    • %:匹配任何数量的字符。
    • _:匹配任何单个字符。

http://www.ppmy.cn/news/1398695.html

相关文章

SOCKS5服务器(基于 C++11 实现)

项目地址&#xff1a;https://github.com/xukeawsl/socks-server

2020校招面试

文章目录 ------------------------------第一部分:实习2020.06------------------------1. 平安科技(实习)1.1 如何检验求得得梯度是正确得1.2 随机梯度下降步长取值范围1.3 SVM中为什么要使用对偶求解问题1.4 KKT条件是什么1.5 skip-gram的缺点1.6 NLP中文本表示方式(词向…

超算数据中心是什么?

小万今天主要是带大家一起来了解什么是超算数据中心&#xff0c;相信大家都听过计算机和数据中心&#xff0c;但是超算数据中心又是什么呢&#xff1f; 随着互联网的快速发展&#xff0c;人工智能、云技术和大数据等诸多新兴产业逐渐步入人们的生活当中。这些新兴技术的发展离不…

贝锐蒲公英虚拟DMZ:工业设备异地组网,解决网段冲突难题

虚拟DMZ 产品/技术的原理传统DMZ&#xff1a; DMZ中文名称为“隔离区”&#xff0c;也称“非军事化区”&#xff1b;它是为解决安装防火墙后外部网络不能访问内部网络服务器的问题。网关DMZ功能开启后&#xff0c; 将内网的一台服务器完全暴露在外网&#xff08;内网某个IP绑…

【学习】软件测试行业有哪些从业方向

从事任何一个行业&#xff0c;不论想入行的新人还是已经在职的从业人员&#xff0c;一定要系统化的掌握自身的学习路线和发展方向&#xff0c;随时对自身的优劣点掌握清楚。尤其是对于软件测试这个岗位。测试职业所涉及的技能范围比较广&#xff0c;测试流程、测试计划、缺陷管…

scau:程序设计与算法基础 学习笔记

一、C和SQL 1.pair用法 #include <iostream> #include <cstdio> #include <utility> using namespace std; //pair是一个将两个值合成一组的容器&#xff0c; //这两个值可以是同类型的也可以是不同类型的&#xff0c; //它们分别被称为first和second。pai…

实验3 中文分词

必做题&#xff1a; 数据准备&#xff1a;academy_titles.txt为“考硕考博”板块的帖子标题&#xff0c;job_titles.txt为“招聘信息”板块的帖子标题&#xff0c;使用jieba工具对academy_titles.txt进行分词&#xff0c;接着去除停用词&#xff0c;然后统计词频&#xff0c;最…

Wagtail-基于Python Django的内容管理系统CMS实现公网访问

目录 ⛳️推荐 前言 1. 安装并运行Wagtail 1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具 3. 实现Wagtail公网访问 4. 固定Wagtail公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给…