数据库入门之DML和DQL

DML:对表中数据的增删

DQL:对表中数据的查询 

DML:

  

-- 创建stu表
create table stu(
id int, -- 编号
name varchar(20), -- 姓名
age int, -- 年龄
sex varchar(5), -- 性别
address varchar(100), -- 地址 
math double(5,2), -- 数学成绩
english double(5,2), -- 英语成绩
hire_date date -- 入学时间
);

-- 添加数据
insert into stu(id,name,age,sex,address,math,english,hire_date)
values
(1,'马云',55,'男','杭州',66,78,'1995-09-01'),
(2,'马化腾',45,'女','深圳',66,78,'1998-09-01'),
(3,'马斯克',55,'男','香港',66,78,'1997-09-01'),
(4,'六百',20,'女','南京',66,78,'1996-09-01'),
(5,'留情',20,'男','天津',66,78,'1995-09-01'),
(6,'刘德华',78,'男','北京',66,NULL,'1994-09-01'),
(7,'马靴有',22,'女','杭州',66,78,'1993-09-01'),
(8,'德玛西亚',12,'男','湖南',66,78,'1991-09-01');

UPDATE stu SET hire_date ='2002-6-11' where name='马云';
SELECT * FROM stu;-- 尽量不要使用*,因为无法看出想要查询哪个数据
desc stu;

 DQL:

 

-- 基础查询========================
SELECT name,age FROM stu;

select address FROM stu;
-- DISTINCT关键字可以去重
SELECT DISTINCT address FROM stu;

-- 可以给想要查询的列起别名,使用as关键字
SELECT name,math as 数学成绩,english as 英语成绩 FROM stu;

​​​​​​​ 

模糊查询:关键字like

_一个随机字符

%至少一个随机字符

select * from 试题表 where 题干 like %英语一%;
-- 条件查询=======================
-- 年龄大于20的
SELECT * FROM stu where age>20;
-- 年龄大于等于20
SELECT * FROM stu where age>=20;
-- 查找年龄大于等于20并且年龄小于等于30
SELECT * FROM stu where age>=20 AND age<=30;
SELECT * FROM stu where age BETWEEN 20 and 30;
-- 查询入学日期到1998-1-1到1999-1-1
SELECT * FROM stu WHERE hire_date BETWEEN '1998-1-1' AND '1999-1-1';
-- 查找18岁
SELECT * FROM stu where age=20;
-- 查找不等于18岁
SELECT * FROM stu where age !=20;
SELECT * FROM stu where age <>20;
-- 查找年龄18 20 22的
SELECT * FROM stu where age=18 or 20 or 22;
SELECT * FROM stu where age in(18,20,22);
-- 注意:NULL值的比较不可以使用等号或者不等号,只能使用is null后者is not null

排序查询

show DATABASEs;-- 查询都有什么数据库
show tables;-- 查询当前数据库下面都有什么表
desc stu; -- 查询表结构
SELECT * FROM stu;

-- 修改表中数据
update stu set 
-- 查询学生信息,按照升序
-- desc从大到小 asc从小到大(默认) 
SELECT * from stu ORDER BY age desc;
-- 如果数学成绩一样,按照英语成绩进行查询
-- 多个条件进行排序查询的时候,如果前面的条件相同,才会由后面的条件判断
SELECT * from stu ORDER BY math,english asc;

分组查询

聚合函数

什么是聚合函数:将一列作为一个整体进行纵向计算

-- 统计班里面一共有多少个学生
SELECT * FROM stu;
SELECT COUNT(age) FROM stu; -- 统计的列名不可以为NULL,建议()里面写*,只要这一行有一个数据不为空,就可以统计出来
SELECT COUNT(*) FROM stu;
-- 查询数学成绩的最高分
SELECT MAX(math) FROM stu;
-- 查询数学成绩的最低分
SELECT MIN(math) FROM stu;
-- 查询数学成绩的平均分
SELECT AVG(math) FROM stu;

 分组查询

​​​​​​​yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

-- 查询男同学和女同学个各自的数学平均分
SELECT sex,AVG(math) FROM stu GROUP BY sex;
-- 分组之后查询的字段只能为聚合函数和分组字段,其他字段并没有任何意义
SELECT name, sex, AVG(math) FROM stu GROUP BY sex;-- 该语句有错误
-- 查询男同学和女同学各自的数学平均分,以及各自人数
SELECT sex,AVG(math),COUNT(*) FROM stu GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分,低于60的不参与分组
SELECT sex,AVG(math),COUNT(*) FROM stu WHERE math >70 GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分,低于60的不参与分组,分组之后人数需要大于两个
SELECT sex,AVG(math),COUNT(*) FROM stu WHERE math >70 GROUP BY sex having COUNT(*)>=2;

分页查询

注意:分页操作一般情况下不同数据库关键字不同。

 

-- SELECT 字段列表 from 表名 LIMIT 起始索引 , 查询条目数

SELECT * FROM stu;
-- 从0开始,查询三条数据
SELECT * FROM stu LIMIT 0,3;
-- 启始索引等于 (当前页码-1)*每页显示的条数
-- 每页显示三条数据,查询第一页数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示三条数据,查询第二页数据
SELECT * FROM stu LIMIT 3,3;
-- 每页显示三条数据,查询第三页数据
SELECT * FROM stu LIMIT 6,3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值