今日学习之数据库语句深入

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

昨天说到了数据库的一些简单的入门级别的语句增、删、改、今天学习一下查询语句的使用以及规范。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数据库查询语句

 --查询不会对数据库中的数据进行修改.只是一种显示数据的方式
 SELECT 列名 FROM 表名 [WHERE 条件表达式]
1) SELECT 命令可以读取一行或者多行记录。
2) 你可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数 
1.简答查询
1.1查询表所有行和列的数据
--是用* 表示所有列
select * from 表名;
--查询所有学生
select * from student;
1.2查询指定列
--查询指定列的数据,多个列之间以逗号分离
select 字段名1,字段名2,字段名3,......form 表名;

--查询student表中的name 和age 列
select name ,age from student;
2.指定列的别名进行查询
2.1使用关键字

使用别名的好处:显示的时候使用新的名字,并不修改表的结构。

2.2 语法
--对列指定别名
select 字段名称1 AS别名,字段名称2 AS别名...from表名;

对列和表同时指定别名
select 字段名1 AS 别名,字段名2 AS别名…from AS 表名;

2.3具体操作
--使用别名
select name as 姓名,age as 年龄 from student;

--表使用别名
 select s.name as 姓名,age as 年龄 from student as s 
 表使用别名的原因:用与多表查询操作
3.清除重复值
3.1查询指定列并且结果不出现重复数据
 select distinct 字段名from 表名;
3.2具体操作
--查询学生来自于哪些地方
select address from student; 
--去掉重复的记录
select distinct address from student;
4 查询结果参与运算
4.1 某列数据和固定值运算
select 列名1+固定值 from表名;
4.2 某列数据和其他列数据参与运算
select 列名1+列名2 from表名;
注意:参与运算的必须是数值类型
4.3 示例
添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩,查询的时候将数学和英语的成绩相加

select * from student;
– 给所有的数学加 5 分
select math+5 from student;
– 查询 math + english 的和
select * from student;
select ,(math+english) as 总成绩 from student; --as可以省略
select
,(math+english)from student;

5.条件查询
5.1为什么要条件查询
 如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录
 进行过滤。
5.2语法
select 字段名from 表名 where 条件;
流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回

创建一个学生表如下
在这里插入图片描述
运算符
> ,<,>=,<=,=,<>
<>在sql中表示不等于,在sql中也可以使用!=

between…and
在一个范围之内,如between 100 and 200 相当于在100到200之间,包头又包尾

in(集合)相当于表示多个值,使用逗号分离

like ‘张%’ 模糊查询
is null 查询某一列为null的值,注:不能写=null

具体操作

--查询英语成绩大于90分的同学
SELECT *
FROM
student
WHERE 
english > 90;

 查询总分大于200分的所有同学
SELECT
 *
FROM
student
WHERE
(math+chinese+english)>200;

在这里插入图片描述

逻辑运算符
1)and或&&
    与,sql中建议使用前者,后者并不通用。
2)or或||
    或
3)not 或!
    非   

示例

 查询数学分>80并且语文分>80的同学
 SELECT 
  * 
FROM
student
WHERE math>80 && chinese>80;

在这里插入图片描述

 in关键字
SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);
in 里面的每个数据都会作为一次条件,只要满足条件的就会显示

示例

查询数学分数为89,90,91的同学。
SELECT 
 * 
FROM
student 
WHERE math IN (89, 90, 91) ;

在这里插入图片描述
范围查询

 BETWEEN 值 1 AND 值 2
表示从值 1 到值 2 范围,包头又包尾
比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100

示例

查询英语分数在 80-90之间的同学。
SELECT
*
FROM
student
WHERE
english BETWEEN 80 AND 90;

在这里插入图片描述

like关键字
LIKE 表示模糊查询
SELECT * FROM 表名
MySQL通配符
%  匹配多个字符串
_  匹配一个字符串

示例

模糊查询  学生姓名中第二个字是化的学生所有信息
 SELECT
*
FROM student3
WHERE
NAME LIKE '%_化_%';

在这里插入图片描述

6.查询语句进阶
6.1排序
通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中
数据的顺序)
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
ASC: 升序,默认值
DESC: 降 序
6.11 单列排序
什么是单列排序:
只按某一个字段进行排序,单列排序

示例

  数学成绩升序排顺序
SELECT
*
FROM
student3
ORDER BY 
math ASC;

在这里插入图片描述

6.1.2组合排序
同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。
组合排序的语法:
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 

示例

查询数学成绩降序,英语成绩是升序的学生信息
SELECT
*
FROM
student3
ORDER BY math DESC,english ASC;

在这里插入图片描述

6.2 聚合函数
 之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数
 查询是纵向查询,  它是对一列的值进行计算,然后返回一个结果值。聚合函数会忽略空
 值 NULL
6.2.1 五个聚合函数
  max(列名)求这一列最大值
  min(列名)  求这一列最小值
  avg(列名)求这一列平均值
count(列名)统计这一列有多少条记录
  sum(列名)对这一列求综合
6.2.2语法
 SELECT 聚合函数(列名) FROM 表名

示例

查询学生表中有多少条记录
SELECT
COUNT(id) 
'总记录数' 
  FROM 
 student ;

在这里插入图片描述
示例

查询出英语成绩最高分的学生信息
SELECT 
*
FROM
student
WHERE
english=(SELECT MAX(english) FROM student);

在这里插入图片描述

今日练习

先建库建表录入数据

create table student(
id int,   -- id编号
name varchar(20), -- 姓名
chinese int,  -- 语文
english int, -- 英语
math int -- 数学
);
insert into student(id,name,chinese,english,math) values(1,'行哥',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'潘金莲',67,53,95);
insert into student(id,name,chinese,english,math) values(3,'凤姐',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'旺财',88,98,92);
insert into student(id,name,chinese,english,math) values(5,'白小黑',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'白小黄',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'范蹦蹦',75,65,30);

查询语句练习
– 1.查询表中所有学生的信息。
SELECT * FROM student;
在这里插入图片描述

– 2 查询表中所有学生的姓名和英语成绩。
SELECT
NAME ‘姓名’,
english ‘英语成绩’
FROM student;
在这里插入图片描述
– 3 过滤表中重复数据。(去重的关键字 distinct)
SELECT
DISTINCT math ,english,chinese
FROM
student;
在这里插入图片描述
– 4 统计每个学生的总分
SELECT
id ‘学生编号’,
NAME ‘学生姓名’,
(math + chinese + english) ‘总分’
FROM
student ;
在这里插入图片描述
– 5.在所有学生总分数上加10分特长分。
SELECT
id ‘学生编号’,
NAME ‘学生姓名’,
(math + chinese + english+10) ‘总分’
FROM
student ;
在这里插入图片描述
– 6.使用别名表示学生分数。
SELECT
s.id AS ‘编号’,
s.name AS ‘姓名’,
s.chinese AS ‘语文成绩’,
s.english AS ‘英语成绩’,
s.math AS ‘数学成绩’
FROM
student AS s ;
在这里插入图片描述
– 7.查询姓名为行哥的学生成绩
SELECT
*
FROM student
WHERE
NAME = ‘行哥’;
在这里插入图片描述
– 8.查询英语成绩大于90分的同学
SELECT *
FROM
student
WHERE
english > 90;
在这里插入图片描述
– 10.查询英语分数在 80-90之间的同学。
SELECT
*
FROM
student
WHERE
english BETWEEN 80 AND 90;
在这里插入图片描述
– 11.查询数学分数为89,90,91的同学。
SELECT
*
FROM
student
WHERE math IN (89, 90, 91) ;
在这里插入图片描述
– 12.查询所有姓白的学生英语成绩。
SELECT
english,
NAME
FROM
student
WHERE NAME LIKE’白%';
在这里插入图片描述
– 13.查询数学分>80并且语文分>80的同学
SELECT
*
FROM
student
WHERE math>80 && chinese>80;
在这里插入图片描述
– 14.查询英语>80或者总分>200的同学
SELECT
*
FROM
student
WHERE english>80||(math+chinese+english)>200;
在这里插入图片描述
– 15.对数学成绩升序排序
SELECT
*
FROM
student
ORDER BY
math ASC;
在这里插入图片描述
– 16.对总分降序排序,然后再按数学从高到低的顺序输出
SELECT
*
FROM
student
ORDER BY
(math+english+chinese) DESC, math ASC;
在这里插入图片描述

  • 17.对姓白的学生成绩排序输出(排序规则自己定义)
    – 语文升序,英语降序输出
    SELECT
    *
    FROM
    student
    WHERE NAME LIKE ‘白%’
    ORDER BY
    chinese ASC,english DESC;
    在这里插入图片描述
    – 18.查询数学成绩大于等于平均分的所有学生信息
    SELECT
    *
    FROM
    student
    WHERE
    math>= (SELECT AVG(math) FROM student);

在这里插入图片描述
– 19.查询出英语成绩最高分的学生信息
SELECT
*
FROM
student
WHERE
english=(SELECT MAX(english) FROM student);
在这里插入图片描述
– 20.模糊查询出学生姓名中第二个字是金的学生信息
SELECT
*
FROM
student
WHERE NAME LIKE’’;
在这里插入图片描述
– 21.查询出英语成绩平均分是多少
SELECT
AVG(english)
FROM
student;
在这里插入图片描述
– 22.查询出数学总分是多少
SELECT
SUM(math)
FROM
student;
在这里插入图片描述
– 23.查询学生表中有多少条记录
SELECT
COUNT(id)
‘总记录数’
FROM
student ;
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值