MySQL单表查询大全【SELECT】

山再高,往上攀,总能登顶;路再长,走下去,定能到达。

Mysql中Select 的用法

------前言------

在MySQL语句中,最重要的莫过于查询了,也就是select的用法,前一篇博客我们只是给大家大概一个思路去学数据库,由库到表再到表中的数据,今天我们说的就是单表查询表中数据,之后再给大家更新多表的联合查询等知识

在此之前为了方便大家可以一起练习,我们先来创建一些数据,以便大家可以知道我们查的是什么,在哪查的

除此之外,还有一些知识,来让我们认识到更全面的查询,大家按照顺序观看即可

【SELECT】

0.【准备工作】

0.1 创建一个库

sql 复制代码
show databases;		-- 查看库
create database test;		--创建一个名字为test的库

0.2 库中创建表

sql 复制代码
use test;		-- 使用名字为test的库
show tables;		-- 查看test库中是否有表
-- 创建一个名字为demoStudent的表格,包含id,名字,年龄,语数英各科成绩 
 create table demoStudent(		
          id int,
         name varchar(20),
         age int,
    	 chinese float,
    	 math float,
    	 english float
    );

0.3 表中加入一些数据

sql 复制代码
-- 插入六条数据
    insert into demoStudent(id,age,name,chinese,math,english)values
    	 (1,17,'张三',66,54,32),
    	 (2,17,'李四',22,22,54),
    	 (3,18,'王五',12,23,34),
     	 (4,17,'陈六',55,44,33),
    	 (5,18,'赵七',45,67,86),
    	 (6,17,'宋九',22,33,99);


1.【查询全部】

sql 复制代码
-- select * from 表名;
select * from demoStudent;

2.【查询指定列】

2.1查询指定列

sql 复制代码
select 列名 from 表名; -- 该行是语法说明
select id,name,chinese from demoStudent;

2.2 查询总和

那如果我们想查询一下总成绩,又该怎么办呢?

答案也很简单, 我们只需要加一下就好了

sql 复制代码
select name,chinese+math+english from demoStudent;

2.3 别名查询

那么我们不想以chinese+math+english为列名当总成绩的表头又该怎么办呢?

这就需要我们所说的别名查询了~

sql 复制代码
select 列名1,列名2 as 列名2的新名字 from 表名;
select name,chinese+math+english as total from demoStudent;

2.4 去重查询

当我们发现有两条语文成绩一样的分数,但是我们只想要不重复的语文成绩,这个时候我们又应该如何?

那就是去重查询了~

sql 复制代码
select distinct 去重列名 from 表名;
select distinct chinese from demoStudent;

3.【where】

3.1普通条件查询

sql 复制代码
-- 在表中查询年龄为18的学生
select * from demoStudent where age = 18;
sql 复制代码
-- 查询总成绩小于100的学生
select name,chinese+math+english as total from demoStudent where chinese+math+english<100;
sql 复制代码
-- 查询语文成绩大于数学成绩的学生
select * from demoStudent where chinese>math;
sql 复制代码
-- 查询语文成绩大于数学成绩而且名字为张三的学生
select * from demoStudent where chinese>math and name='张三';

3.1区间查询

sql 复制代码
-- 查询语文成绩在10到50之间的学生
语法:between...and...
select *from demoStudent where chinese between 10 and 50;

3.2模糊查询

为了给大家演示,我们再插入一条数据

sql 复制代码
 insert into demoStudent(id,name,age,chinese,math,english) values (7,'张五',17,11,22,33);

-- 查询表中所有姓名为张的(姓名几个字行)
select *from demoStudent where name like '张%';
-- 查询名字为什么张的学生(姓名两个字)
select *from demoStudent where name like '_张';
-- 查询名字为张什么的学生(姓名两个字)
select *from demoStudent where name like '张_';
-- 查询名字为张什么什么的学生(姓名三个字)
select *from demoStudent where name like '张__';

4.【order by】

4.1 排序查询

sql 复制代码
-- 总分按照从高到低排序 desc
select name,chinese+math+english as total from demoStudent order by total desc;
-- 总分按照从低到高排序 asc
select name,chinese+math+english as total from demoStudent order by total asc;

4.2 分页查询

sql 复制代码
-- 查询num1之后到num2的数据
select *from demoStudent order by id asc limit num1,num2;

5.【聚合函数】

5.1 count

sql 复制代码
-- 查询数学成绩大于50的有几条
select count(math) from demoStudent where math>50;

5.2 sum

sql 复制代码
-- 查询语文总成绩
select sum(chinese) from demoStudent;

5.3 avg

sql 复制代码
-- 查询英语的平均成绩
select avg(english) from demoStudent;

5.4 max

sql 复制代码
-- 查询英语的最大成绩
select max(english) from demoStudent;

5.5 min

sql 复制代码
-- 查询英语的最小成绩
select min(english) from demoStudent;

6.【分组查询】

6.1 group by

sql 复制代码
-- 显示不同年龄的个数
select age,count(*) from demoStudent group by age ;

6.2 having

sql 复制代码
-- 查询年龄为18的学生有几个
select age,count(*) from demoStudent group by age having age =18;

今天的内容就到这里啦,内容比较多,大家加油啊!

相关推荐
韩曙亮2 分钟前
【AI 大模型】RAG 检索增强生成 ⑤ ( 向量数据库 | 向量数据库 索引结构和搜索算法 | 常见 向量数据库 对比 | 安装并使用 向量数据库 chromadb 案例 )
数据库·人工智能·大模型·openai·向量数据库·ai大模型·chromadb
安於宿命7 分钟前
【MySQL】基本查询
android·数据库·mysql
安科瑞刘鸿鹏9 分钟前
什么是故障电弧?故障电弧的危害该如何应对?
运维·网络·数据库·物联网
油丶酸萝卜别吃16 分钟前
mariaDB中常见的DDL,DML,DQL语句
数据库·oracle·mariadb
Lorin 洛林23 分钟前
使用 yum 命令安装 MariaDB 指南
数据库
hxung24 分钟前
使用 Docker 部署 MySQL 8
mysql·docker·容器
顾漂亮25 分钟前
深入理解MySQL数据库索引
数据库·mysql
{⌐■_■}1 小时前
【Redis】缓存穿透、缓存击穿、缓存雪崩
数据库·redis·缓存
StevenLdh1 小时前
StarRocks SQL使用与MySql的差异及规范注意事项
数据库·starrocks·sql·mysql
一 乐1 小时前
农业电商|基于SprinBoot+vue的农业电商服务系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·农业电商