基本的查询语句
select (* | 字段名 | 四则运算 | 聚合函数) from 表名称;
取别名 当字段名显示较长时 可以添加别名
select 字段名 as 别名 from 表名称;
as可以省略
select 字段名 别名 from 表名称;
增删改查
增
insert into 表名称(字段,...) values(值,....),(值,....);
values中的值的个数 和类型必须与 前方声明的字段一致
insert into 表名称 values(值,....);
values中的值的个数 和类型必须与表的字段完全一致
into 可以省略
stu name char(20) default "张三",age int
#insert into table_name values(20),(30),(40);
# 错误name虽然有默认值 但是在这种语法下也必须赋值
删
delete from table_name where 条件;
delete from table_name;
truncate table table_name;
改
update table_name set 字段名称 = 新的值 where 条件;
update table_name set 字段名称 = 新的值[,字段2 = 值2,...];
查
select语句的完整语法:
select [distinct] (*|字段|四则运算|聚合函数) from 表名
where 查询条件
group by 分组
having 分组后的过滤
order by 排序
limit 限制获取的条数
必须的 select 字段 from 表名
distinct 去除重复
强调: 书写顺序必须按照上面的来
执行顺序与书写顺序不一致
# 伪代码 演示执行顺序
def select():
from()
where()
group by()
having()
order by()
limit()
distinct()
# 从文件读取数据
def from():
with open("表名称")
pass
# 过滤从文件读取的数据
def where():
pass
# 分组
def group by()
pass
# 对分组后的数据 进行过滤
def having():
pass
# 排序
def order by():
pass
# 控制获取的条数
def limit():
pass
# 去除重复
def distinct():
pass
group by 分组查询
什么是分组
把一个整体 按照某个标识分成不同的部分
分组目的
通常分组都为了要统计数据
语法
select *from emp group by 某个字段;
强调:
用于分组的字段 通常应该是重复度高的 例如 部门 性别
而不应该id name.....
语法要求:
select 后面的字段 必须是出现在group by后面的字段
一旦分组后 组内的详细数据就被隐藏了 无法直接查看但是要知道 分组不是为了查看 而是为了统计
分组后就只能看到分组的那个字段
聚合函数(统计函数)
给他一堆数据 它统计后 返回一个数据
(1,2,3,4,5) sum = 15
sum 求和
avg 平均数
max 最大值
min 最小值
count 计数
注意注意: 聚合函数不能用在where后面
如果要对分组数据进行过滤 必须使用having
因为 where在执行时,数据还没有读完 ,必须等到数据读完之后再进行过滤,
where 与 having的区别就在于 执行时机不同
group by
where 后不能有聚合函数
select 后面的字段 必须出现在group by的后面
通常聚合函数会与group by 连用
如果要对分组数据进行过滤 必须使用having
having与where 都是过滤 但是执行时机不同
order by
排序 默认为升序
select *from emp order by salary;
用desc 来指定为降序
select *from emp order by salary desc;
可以义多个字段作为排序依据,并且可以单独设置顺序
select *from emp order by salary desc,id; # 先按照工资降序 如果工资相同则按照id 升序
limit 控制要查询的记录数量
select *from emp limit a,b;
a 表示起始位置
b 要获取的条数
如果只有a 则表示 获取的条数
select *from emp limit 0,3;