数据库优化第三讲(数据的修改和删除及数据的条件查询))

数据库优化

标题

修改
– update 表名 set 列1=值1,列2=值2… where 条件;
– 修改 名字为juran 改成 煎饼侠
update students set name=‘煎饼侠’; – 不加where 全部修改
update students set name=‘python’ where name=‘煎饼侠’;

update students set name=‘无名’ where id=6; – 修改id 为6的
update students set name=‘帅哥’,gender = ‘保密’ where id=7;

删除
物理删除
–delete from 表名 where 条件
delete from students; --删除的是 数据
delete from students where id =1;

逻辑删除
– is_delete 表示 是否删除 1 删除 0 未删除
– 查找 select * from students where is_delete=0;
– 修改
update students set is_delete = 1 where id=6;

查询基本使用
– select 去重选项 字段列表[as 字段名] from 数据表
– where [group by 子句] [having子句] [order by 子句] [limit子句];

–查询所有列
select * from students;

– 去除重复字段的查询 distinct 整个查询的行是否重复
select distinct name from students;

–查询指定列
– select 列1,列2,… from 表名;
select name,age,gender from students;

– 可以使用as为列或表指定别名
select name as n,age,gender from students_abc_demoas_asdasd where n = ‘juran’;
select name as n,gender from students where name=‘帅哥’;
select name as 姓名,gender from students where name=‘帅哥’;
在这里插入图片描述
查询
–查询所有字段
–select * from 表名;
select * from students;

–查询指定字段
– select 列1,列2,…from students;

– 使用as 给字段起别名
– select 字段 as 名字… from 表名;
select name as 姓名,age,gender from students;

–select 表名.字段 … from 表名;
select name as 姓名,age,gender from students as s;

– 可以通过as 表起别名
– select 别名.字段 … from 表名 as 别名;

–消除重复行
– distinct 字段
select distint name,age from students;

条件查询
比较运算符
select …from 表名 where …
– >
–查询大于18岁的信息
select * from students where age >18;

– <
–查询小于18岁的信息
select * from students where age < 18;

– >=
– <=
– 查询小于或等于18岁的信息
select * from students where age <= 18;

– =
– 查询年龄为18岁的所有学生的名字
select * from students where age =18;

– != 或者 <>
– 查询姓名不是python的
select * from students where name !=‘python’;

逻辑运算符
– and
–18到28之间的所有学生信息
select * from students where age > 18 and age < 28;

select * from students where age 18 < age < 28;没有意义

–18岁以上的女性
select * from students where age > 18 and gender=‘女’;

–or
– 查询编号小于4或没被删除的学生
select * from students where id < 4 or is_delete = 0;
在这里插入图片描述
– not
– 查询年龄不是18岁的女性 这个范围内的信息
select * from students where not age = 18 and gender=‘女’; – 可读性 更高
select * from students where not (age = ‘18’ and gender=‘女’);

– 年龄不是小于或者等于18 并且是女性
select * from students where not age <=18 and gender = 2;

– MySQL数据库中优先级:not > and > or

模糊查询
– like
– % 替换 1 个或者多个
– _ 替换1个

–查询姓名中 以“小” 开始的名字
select * from students where name like ‘小%’ --‘小于’ ‘小张’ ‘小xx’
在这里插入图片描述
–查询姓名中 有“小”所有的名字
select * from students where name like ‘%小%’;
在这里插入图片描述
–查询有2个字的名字
select * from students where name like ‘__’;

–查询至少有两个字的名字
select * from students where name like ‘__%’;

– rlike 正则
– 查询以 周开始的姓名
select name from students where name rlike “^周.*”;

– 查询以 周开始、伦结尾的姓名
select name from students where name rlike “^周.*伦$”;

范围查询
– in (1,3,8)表示在以一个非连续的范围内
– 查询 年龄为18、20的姓名
select name from students where age in (18,20);

– 查询 姓名为名的
select * from students where name in (‘juran’,‘名’);
在这里插入图片描述
–not in 不非连续的范围之内
– 年龄不是18、34岁之间的信息
select name from students where age not in (18,20);

– between … and …表示在一个连续的范围内
– 查询 查询id是3到8的学生
select * from students where id between 3 and 8;

– 查询学生id是3到8的男生
select * from students where (id between 3 and 8) and gender = 1;
select * from students where (id between 3 and 8) and gender = 1;-带括号为了可读性

– not between … and …表示不在一个连续的范围内
– 查询 年龄不是在18到20之间的信息
select * from students where age not between 18 and 20;
–select * from students where not age between 18 and 20;-建议不用这写法。

在这里插入图片描述
空判断
–判空is null 不能用 =
– 查询姓名为空的信息
select * from students where name is null;

– 判断空is not null
select * from students where name is not null;

聚合函数
总数

  • count(*)表示计算总行数,括号中写行与列名,结果是相同的
  • max(列)表示求此列的最大值
  • min(列)表示求此列的最小值
  • sum(列)表示求此列的和
  • avg(列)表示求此列的平均值

总数
–count
–查询学生总数
select count(*) from students;

– 查询男性有多少人,女性有多少人
select count() as 男性人数 from students where gender =1;
select count(
) as 女性人数 from students where gender =2;

最大值
–max
– 查询最大的年龄
select max(age) as 最大年龄 from students;

– 查询女性的最大编号
select max(id) as 女性最大编号 from students where gender =2;
在这里插入图片描述
–查询最大年龄的女性id
select id,max(age) from students where gender = 2;

最小值
–min
– 查询未删除的学生最小编号
select min(id) as 未删除学生最小编号 from students where is_delete = 0;

求和
– sum
– 查询男生的年龄和
select sum(age) from students where gender = 1;
– 求和字段 是varchar 0 如果内容是数字的话会进行相加

平均值
– avg
– 查询未删除女生的ID的平均值
select avg(id) from students where gender = 2 and is_delete = 0;-默认保留4位小数

– 计算平均年龄 sum(age)/count()
select sum(age)/count(
) from students;

– 四舍五入 round(123.23,1) 保留1位小数
在这里插入图片描述
– 计算所有人的平均年龄,保留2位小数
select round(avg(age),2) from students;
在这里插入图片描述
– 计算男性的平均编号 保留2位小数
select round(avg(id),2) from students where gender =1;
在这里插入图片描述

课堂总结

在这里插入图片描述

发布了30 篇原创文章 · 获赞 0 · 访问量 687

猜你喜欢

转载自blog.csdn.net/luobofengl/article/details/104424516