0
点赞
收藏
分享

微信扫一扫

Mysql——DML(查询语句语法、格式、举例)以及全部数据库源码,复制就可实现全部功能

雨鸣静声 2022-03-12 阅读 204

文章目录

一、基础查询

    1、查询多列

	select 列名1,列名2……列名n from 表名;

在这里插入图片描述

    2、查询全表

	select * from 表名;

在这里插入图片描述

    3、去除重复记录

这里把重复的地址去掉

	select distinct 列名 from 表名;

在这里插入图片描述

    4、查询时修改表头

select 列名1 as 新列名1,列名2 as 新列名2……列名n as 新列名n from 表名;
其中as关键字可以不写。

在这里插入图片描述

二、条件查询

    1、基础语法

	select 列名 from 表名 where 条件;

    2、几类条件

  1. 比较条件
    包括:=, >, <, >=, <=, !=, <>(不等于), !>, !<;
    下面完成几个需求实现查询:

    	-- 比较条件
    	-- 	查找总分大于80分的同学信息
    	select * from student where score > 80;
    

在这里插入图片描述

	--  查找不在上海住的同学信息
select * from student where adr <> '上海';

在这里插入图片描述

  1. 确定范围条件
    包括:between and,not between and

    -- 查找id在5到10之间的同学信息
    select * from student where id between 5 and 10;
    

在这里插入图片描述

  1. 确定集合条件
    包括:in,not in

    -- 	查询住在北京和上海的同学
    	select * from student where adr in ('北京','上海');
    

在这里插入图片描述

  1. 空值
    包括:is null,not is null

    	-- 查询成绩为空的同学信息
    	select * from student where score is null;
    

在这里插入图片描述

  1. 多重运算(逻辑运算)
    包括:and,or,not

    	-- 查询成绩大于80或者在北京并且id小于10同学
    		select * from student where score > 80 or 
    		adr in ('北京') and id < 10;
    

在这里插入图片描述

    3、模糊查询(字符匹配)

_表示匹配单个任意字符
%表示匹配多个任意字符

		-- 查询姓李的同学
select * from student where name like '李%'; 

在这里插入图片描述

		-- 查询分数第二位为8的同学
		select * from student where score like '_8';

在这里插入图片描述

		-- 查询地址包含州或者包含上海的同学
		select * from student where 
		adr like '%州%' or adr like '%上海%';

在这里插入图片描述

三、排序查询

    1、排序查询语法

	select 列名 from 表名 order by 排序列名1  排序方式……排序列表n 排序方式;

    2、排序方式

asc:升序排列
desc:降序排列
如果多列排序,当前边值一样时才会进行后面的排序。

		-- 将成绩降序排列
		select * from student order by score	desc;

在这里插入图片描述

		-- 将姓名升序排列(好像是笔画)
		select * from student order by name asc;

在这里插入图片描述

		-- 先将成绩奖序排列,再按姓名升序排列
		select * from student order by score desc,name asc;

在这里插入图片描述

四、聚合函数

    1、聚合函数语法

聚合函数就是将一列作为整体纵向计算。

	select 聚合函数(列名) from 表名;
	注意null值不参与计算

    2、5个聚合函数

1.count(列)求总数
在这里插入图片描述
2.max(列)求最大值
在这里插入图片描述
3.min(列)求最小值(null不参与计算)
在这里插入图片描述
4.sum(列)求和函数
在这里插入图片描述

5.avg(列)求平均数
在这里插入图片描述

五、分组查询

    1.分组查询语法

select  列名 from 表名 分组条件 group by 分组列 过滤条件;

分组之后表示的列为可以用聚合函数计算的列,其他列信息无效,如姓名,地址等。

    2.where与having的区别

having用来分组后过滤信息,如分组后人数小于3人的组不要,就可以用having过滤。
where和having的区别:
1.不满足where条件不参与分组。
2.where在分组前限定,而having在分组后过滤。
3.having可以对聚合函数进行判断,但是where不行。

    3.举例

先加一个性别的列,便于分组

		alter table student add gender varcher(4);

		-- 将男生女生分组,查询他们各自平均分
		select gender,avg(score)	from student group by gender;

在这里插入图片描述

		-- 将男生女生分组,查询他们各自平均分,以及各自总人数
		select gender,avg(score),count(*)	from student group by gender;

在这里插入图片描述

		-- 将男生女生分组,查询他们各自平均分, 以及各自总人数,低于70分不参与分组
		select gender,avg(score),count(*)	from student 
		where score > 70 group by gender;

在这里插入图片描述

			-- 将男生女生分组,查询他们各自平均分, 以及各自总人数,低于70分不参与分组,分组后要大于5人
			select gender,avg(score),count(*)	from student 
			where score > 70 group by gender having count(*)>5;

在这里插入图片描述

六、分页查询

分页查询语法:

	select 列名 from 表名 limit 起始索引 ,每页条数;
	起始索引(0开始) = (页码-1)* 每页条数;
	
	-- 	每页5条,查询第三页
	select * from student limit 10,5;
	-- 	每页7条,查询第三页
	select * from student limit 14,7;

在这里插入图片描述

七、全部代码

SELECT * FROM student;
-- 创建数据库
CREATE DATABASE IF NOT EXISTS dbcsdn;
-- 使用数据库
USE dbcsdn;
-- 创建表
CREATE TABLE student(
	id int(5) PRIMARY KEY,
	name VARCHAR(20) UNIQUE,
	adr VARCHAR(50),
	score int(3)
	);

-- 向表里面添加数据
insert into student values
	(1,'李华','上海',82),
	(2,'李明','厦门',98),
	(3,'李刚','北京',67),
	(4,'李丽','重庆',66),
	(5,'小赵','北京',88),
	(6,'小钱','上海',76),
	(7,'小孙','武汉',94),
	(8,'小李','广东',64),
	(9,'小周','成都',82),
	(10,'小刘','重庆',69),
	(11,'小智','深圳',78),
	(12,'小王','厦门',66),
	(13,'小陈','泉州',99),
	(14,'小成','福州',85),
	(15,'小郑','北京',68),
	(16,'小吴','上海',96),
	(17,'小宋','武汉',88)
	(18,'小伍','天津');
	
-- 	insert into student(id,name,adr) VALUES(18,'小伍','天津');
	-- 查询多列
	select name,score from student;  
	-- 查询全部
	select * from student;
	-- 去除重复数据
	select distinct adr from student;
	-- 查询时修改列名
	select id,name as 姓名,adr as 地址,score as 总分 from student;
	
	-- 比较条件
-- 	查找总分大于80分的同学信息
	select * from student where score > 80;
--  查找不在上海住的同学信息
	select * from student where adr <> '上海';
-- 	查找ID不小于10的同学信息
-- 	select * from student where id <! 10;
-- 查找id在5到10之间的同学信息
	
	select * from student where id between 5 and 10;
-- 	查询住在北京和上海的同学
	
	select * from student where adr in ('北京','上海');
	-- 查询成绩为空的同学信息

	select * from student where score is null;
	-- 查询成绩大于80或者在北京并且id小于10同学
	select * from student where score > 80 or 
	adr in ('北京') and id < 10;
	-- 查询姓李的同学

	select * from student where name like '李%'; 
	-- 查询分数第二位为8的同学
	select * from student where score like '_8';
	-- 查询地址包含州或者包含上海的同学
	select * from student where 
	adr like '%州%' or adr like '%上海%';
	
	-- 将成绩降序排列
	select * from student order by score	desc;
	-- 将姓名升序排列
	select * from student order by name asc;
	-- 先将成绩奖序排列,再按姓名升序排列
	select * from student order by score desc,name asc;
	
	-- 查询一共有多少个同学
	select count(id) from student;
	-- 查询成绩最高分
	select max(score) from student;
		-- 查询成绩最低分
	select min(score) from student;
	-- 求该班成绩总和
	select sum(score) from student;
		-- 求该班成绩平均数
	
	select avg(score) from student;
-- 	增加一列性别便于分组
	alter table student add gender varchar(4);
select * from student;
	-- 将男生女生分组,查询他们各自平均分
	select gender,avg(score)	from student group by gender;
	-- 将男生女生分组,查询他们各自平均分,以及各自总人数
	select gender,avg(score),count(*)	from student group by gender;
	-- 将男生女生分组,查询他们各自平均分, 			    以及各自总人数,低于70分不参与分组
	select gender,avg(score),count(*)	from student 
	where score > 70 group by gender;
		-- 将男生女生分组,查询他们各自平均分, 			  以及各自总人数,低于70分不参与分组,分组后要大于5人
	select gender,avg(score),count(*)	from student 
	where score > 70 group by gender having count(*)>5;
	
-- 	每页5条,查询第三页
select * from student limit 10,5;
-- 	每页7条,查询第三页
select * from student limit 14,7;
举报

相关推荐

0 条评论