DQL数据库其他查询语句与备份还原

本文详细介绍了SQL中的分组查询(GROUP BY)、筛选查询(HAVING)、分页查询(LIMIT)以及数据库约束。通过实例展示了如何按性别分组并计算平均分和人数,如何进行分页查询以及如何使用默认约束为字段设置默认值,帮助读者深入理解SQL查询操作。
摘要由CSDN通过智能技术生成

目录

一、其他查询语句

1.分组查询

2.筛选查询

3.分页查询

4.数据库的约束 


创建库

-- 创建库
CREATE DATABASE mysql_02;

选择库

-- 选择库
USE mysql_02;

创建表

--创建表
CREATE TABLE student(
	id INT,   -- id编号
	NAME VARCHAR(20), -- 姓名
	sex VARCHAR(2), -- 性别
	chinese INT,  -- 语文
	english INT, -- 英语
	math INT -- 数学
);

插入数据

-- 插入数据
INSERT INTO student(id,NAME,sex,chinese,english,math) VALUES
(1,'武松','男',89,78,90),(2,'潘金莲','女',67,53,95),
(3,'扈三娘','女',87,78,77),(4,'武大郎','男',88,98,92),
(5,'西门庆','男',82,84,67),(6,'玉面狐','女',55,85,45),
(7,'牛魔王','男',75,65,30),(8,'孙悟空','男',90,100,91),
(9,'唐三','男',99,99,99),(10,'小舞','女',60,95,85),
(11,'石昊','男',96,68,40),(12,'狠人','女',98,90,20);

查询表数据

-- 查询表数据
SELECT	* FROM student;

最终的表

  

 本文是以上述创建的表来进行操作的

一、其他查询语句

1.分组查询

分组查询使用关键字group by

注意事项1:gruop by 的后面不能使用聚合函数

语句:

SELECT 
    字段列表(可以包含查询的分组字段) 
FROM
    表名 
GROUP BY 
    分组字段;

需求:按照性别进行分组,查询分组信息和总人数(总人数用关键字count

SELECT 
     sex '性别', -- 查询分组字段
     COUNT(id) '总人数'
FROM
     student
GROUP BY sex ;

如果现在有where条件,并且还有分组的查询

需求:要按性别分组,查询性别以及数学的平均分

条件:数学成绩不小于70分的人参与分组

select
     sex,
     avg(math)
from  
    student
group by 
	sex
where 
	math > 70 ;

 

运行后,出现错误代码

正确的应该是

SELECT
    sex '性别',
    AVG(math) '数学平均分' 
FROM
    student

WHERE 
	math > 70 
	
GROUP BY sex ;

注意事项: group by 后面不能使用where条件,应该先满足这个条件,才能进行分组

2.筛选查询

筛选查询使用关键字having

having后面是可以使用聚合函数的,且having必须置于group by之后

需求:按性别进行分组,查询分组信息以及数学平均分和总人数
       条件:数学成绩不小于70分的人参与分组
              筛选:总人数大于2的那一组

SELECT
	sex '学生性别',
	AVG(math) '数学平均分',
	COUNT(id) '总人数'
FROM

	student
    
 WHERE 
	math > 70 
 GROUP BY 
	sex 
 
 HAVING  
	COUNT(id) > 2 ;

注意事项:
    关于group by和having使用的先后顺序,而且有where条件
    where在group by 之前,having在group by 之后
    group by不能使用聚合函数,having是可以使用聚合函数查询的 

3.分页查询

筛选查询使用关键字limit

语法格式:
    select
        字段列表
    from
        表名
    limit
        起始行数,每页显示的条数;

注意:起始行数从0开始算的

算法:(当前页码-1)*每页显示的条数

需求:每页显示4个学生数据,求每页的分页数据

第一页:

SELECT
	*
FROM
	student
LIMIT
	0,4;

 第二页:

SELECT
	*
FROM
	student
LIMIT
	4,4;

 第三页:

SELECT
	*
FROM
	student
LIMIT
	8,4;

 4.数据库的约束 

约束:在操作数据库的时候,约束管理人员使用数据的时候行为;

举例: 有一张员工表,插入一行数据,没有给员工给性别值,默认值就是null,这毫无意义

默认约束 default :当在给某个字段没有插入值的时候,这个默认约束就可以作用,给字段设置默认值

创建一张员工表

CREATE TABLE emp(
	id INT, -- 员工编号
	emp_name VARCHAR(10),-- 员工姓名
	gender VARCHAR(5) -- 员工性别  
);

插入正常数据

INSERT INTO emp VALUES(1,'孙悟空','男') ;

 插入部分字段

INSERT INTO emp(id,emp_name) VALUES(2,'猪八戒') ; 

 可以发现猪八戒的性别是null,没有任何意义

创建新表加入默认约束

CREATE TABLE emp(
	id INT, -- 员工编号
	emp_name VARCHAR(10),-- 员工姓名
	gender VARCHAR(5)  DEFAULT '男' -- 员工性别   ,加入默认约束
);

再插入部分字段

INSERT INTO emp(id,emp_name) VALUES(2,'猪八戒') ; 

 可以发现没有给猪八戒添加性别,但是表自动添加了

也可以更改字段类型加入默认约束

ALTER TABLE emp	MODIFY gender VARCHAR(5) DEFAULT '男' ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值