热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库常用知识点

数据库常用知识点分组语句groupby作用就是将一个或是多个列数据进行结果分组,通过成聚合函数来组合使用,如sum()求和max()最大值min()最小

数据库常用知识点


  • 分组语句 group by
    作用就是将一个或是多个列数据进行结果分组,通过成聚合函数来组合使用,如sum()求和 max()最大值 min()最小值count()计数
    语法:select name,max(age) form users group by name having …
    group by前面可以没有where 也可以执行
    having 可以做分组条件的筛选

  • 字符函数length()获取字节个数,utf-8一个字符顶三个字节,

  • 先说一下sql的执行顺序,我虽然已经写过了这个但是还是在这里在写一遍吧
    sql queries run in this order
    form 首先第一步要确定表,
    join连接表条件,这个可以对表的数据进行筛选,过滤掉多余的数据,
    where对整体数据进行一个筛选,对想要输出显示的数据或是不想要显示的数据进行条件满足
    group by 对显示出的数据进行分组,having对分好组的数据再进行一次数据过滤
    select 显示出想要的数据
    order by 对显示出来的数据进行一个排序 aes desc
    limit 对显示出来的数据进行一个分页或是理解分组也可以吧 显示出来的数据很多的话就很有必要会分组limit
    其实可以这样想,把表作为是一个底层, 把显示出来的数据比作是视图,想或取数据肯定是要先确定表,表条件,
    然后在对表数据进行业务处理(分组 ),最后在把查询来的数据进行美化 select order by limit

  • 注意几个点 在group by 后面不能使用where ,where 在group by之前,只能使用having来约束
    可以在group by之后写order by order by是最后实现的,所以可以在任何数据后面,
    limit是数据查询显示之后最最最后才进行分页,还有就是尽量在连接多表使用表别名来区分,

  • 事实上数据库不会按部就班的去执行sql,因为可以对sql进行优化,减少数据库执行步骤,提高执行效率,

  • mysql是关系型数据库,关系型数据库就是将数据放到表中,是二维表关系,
    mysql与oracle的区别是
    mysql是小型数据库,300M oracle是收费的,3G
    mysql是一个实例可以操作多个库, oracle是一个实例对应一个库
    mysql主键使用自动增长 oracle是使用序列对象
    mysql使用双引号包起字符串 oracle是单引号抱起字符串
    mysql分页是使用limit函数 oracle是使用rownum伪列来显式
    事务上是自动提交 手动提交
    mysql中数据类型 数值类型 :int (4字节) bigint(8字节)
    浮点类型 :float() 单精度 double() 双精度
    字符类型:char(n) 固定长度 varchar() 可变长度 text() 不能有默认值,varchar查询书速度快
    日期类型:date() time() datetime() timestamp()自动存储记录修改时间
    DDL数据定义语言 create table创建表 show tables查看表 drop table name删除表 alter table name rename newtablename
    mysql中的约束类型 非空约束 not null 唯一约束 unique 主键约束 primary key 外键约束 foreign key
    查询表中约束 show keys from tablename
    DML数据操作语句 就是对表中的数据进行增删改查
    insert into table(列名) values(值 ) 完全添加 insert into table values(值 )
    update table set key = value
    delete from tablename where
    truncate table tablename 清空表
    truncate 是整体删除数据速度快 delete是按条删除
    truncate 不会写日志 会重置自增值 delete是写日志,累加
    select 显示列 from 表 where 筛选条件
    mysql中的连字符是使用concat()函数,oracle是可以使用||来作为连接符号的,
    使用distinct来去重复相同的行
    模糊查询 like %是代表多个任意字符 _是代表任意一个字符,
    逻辑运算 and or not
    范围查询 in()在一个连续范围内, between and 一个最大值和一个最小值之间
    order by 排序 asc 正序 desc 降序
    单行函数 concat() 把字符串连接起来,length() substr() trim(str)去掉前后空格, ltrim()删除左头空格 rtrim()删除右头空格
    replace(str,t,T)
    通用函数 ifnull(exprl1,exprl2) 如果exprl是null 则会用输出exprl2
    if(exprl1,exprl2,exprl3)如果exprl不是null返回exprl2 否则返回exprl3
    case when then else end
    多表连接 的方式有
    等值连接 也就是内连接 取符合条件的交集
    select * from table1,table2 where 1.id = 2.id
    非等值连接
    select * from table1,table2 where 1.id between 2.id and 2.id
    外连接 outer join 有 left outer join right outer join mysql不支持full outer join 可以使用union
    union是将两个查询结果集合并在一起,返回的行是唯一的,就相当于是distinct
    union all 将两个结果合并查询
    在这里插入图片描述
    聚合函数
    avg()函数 对分组数据进行计算 sum()对分组数据进行求和 min()求出分组中的最小值 max()求出分组中的最大值,
    count(*) 统计表中的行数,不忽视null数据 ,count(str)是返回指定列的数量,忽视null值
    count(distinct 列名) 返回不重复值
    count(1)忽视所有列,
    创建数据组 约束分组结果 having

  • 基本概念

1 database 数据库, 2 table, 3 模式 scheam, 4 column 字段 列,5 row 记录 行 6 primary key 主键子句:查询部分表达式:可以产生值谓词:条件

推荐阅读
author-avatar
临沂李晓楠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有