数据库查询语句相关

基本的查询语句
    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;

 

# 分页显示
总共为10页  每一页显示 3条   页数 10 / 3  由余数则 + 1   = 4

page = 1

select *from emp limit 0,3

page = 2

(page - 1) * 3

select *from emp limit 3,3


page = 3
(page - 1) * 3
select *from emp limit 6,3


起始位置的计算公式
limit (页数-1) * 每页的条数,每页条数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值