美文网首页
MySQL(二)

MySQL(二)

作者: 遇明不散 | 来源:发表于2019-01-13 10:19 被阅读5次

SQL查询

执行顺序

  • where ...
  • group by ...
  • select ... 聚合函数 from ...
  • having ...
  • order by ...
  • limit ...

  • order by
    • 作用:对查询结果进行排序
    • 语法:order by 字段名 排序方式;
    • 排序方式:
      • ASC:升序(默认)
      • DESC:降序
  • limit
    • 作用:显示显示查询记录的条数
    • 用法:
      • 永远放在SQL语句的最后面
      • limit n 显示n条记录
      • limit m,n m从0开始计数,表示从第几条记录开始显示,n代表显示几条
  • group by
    • 作用:给查询的结果进行分组
    • 注意:
      • group by之后的字段必须要为select之后的字段
      • 如果select之后的字段和group by之后的字段不一致,则必须要对select之后的该字段做聚合处理
  • having
    • 作用:对查询的结果进行j进一步筛选
    • 注意:
      • having语句通常与group by语句联合使用,用来过滤由group by语句返回的记录集
      • having语句的存在弥补了where关键字不能与聚合函数联合使用的不足,having操作的是聚合函数生成的显示列
      • where只能操作表中实际存在的字段,having可以操作聚合函数生成的显示列
  • distinct
    • 作用:不显示字段的重复值
    • 注意:
      • distinct处理的是distinctfrom之间的所有字段,所有字段值必须全部相同才能去重
      • distinct不能对任何字段做聚合处理
  • 查询表记录时可以做数学运算
    • 运算:+ - * / %

聚合函数

  • 分类

    • avg(字段名) 求字段的平均值
    • sum 求字段的和
    • max(字段名) 求字段的最大值
    • min(字段名) 求字段的最小值
    • count(字段名) 统计该字段记录的个数,空值null不会被统计

约束

  • 默认约束

    • 作用:在插入记录时,如果不给该字段赋值,则使用默认值
    • 格式:字段名 数据类型 default 值,
  • 非空约束

    • 作用:不允许将该字段设置为NULL
    • 格式:字段名 数据类型 not null

索引

  • 定义

    对数据库中表的一列或者多列的值进行排序的一种结构(MySQL中用Btree方式)
  • 优点

    加快数据的检索速度
  • 缺点

    • 当对表中的数据进行增加、删除或修改的时候,索引也得动态维护,降低了数据的维护速度
    • 索引需要占用物理空间
  • 索引分类

    普通索引(index)

    • 使用规则:
      • 一个表中可以有多个index字段
      • 字段的值可以有重复,且可以为null
      • 经常把做查询条件的字段设置为index字段
      • index字段的key标志是MUL
    • 创建index:
      • 创建表时创建:
        index(字段名1),index(字段名2)
      • 在已有表中创建:
        • 语法:create index 索引名 on 表名(字段名)
        • 注意:索引名一般和字段名一样
      • 查看普通索引:
        • desc 表名 查看key标志
        • show index from 表名
    • 删除索引
      drop index 索引名 on 表名

    唯一索引(unique key)

    • 使用规则:
      • 一个表中可以有多个unique字段
      • unique字段的值不允许重复,但可以为null
      • uniquekey标志是UNI
    • 创建唯一索引unique
      • 创建表时创建
        • unique(字段名1),unique(字段2)
        • 字段名 数据类型 unique
      • 在已有表中创建
        create unique idnex 索引名 on 表名
    • 删除唯一索引
      drop index 索引名 on 表名
      注意:index,unique在删除时只能一个一个删

    主键索引(primary key)

    • 使用规则
      • 一个表中只能有一个主键(primary)字段
      • 对应字段的值不允许重复,且不能为空
      • 主键字段的key标志PRI
      • 把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
    • 创建主键(primary key)
      • 创建表时创建
        • 字段名 数据类型 primary key,
        • primary key(字段名)
      • 在已有表中创建
        alter table 表名 add primary key(字段名);
    • 删除主键
      alter table 表名 drop primary key;
    • 自增长属性(auto_increment)
      • 作用:通常和主键字段一起配合使用
      • 创建:
        • 创建表时创建:
          字段名 数据类型 primary key auto_increment
        • 在已有表中添加增长属性:
          alter table 表名 modify 字段名 数据类型 primary key auto_increment;
      • 删除主键及自增长属性
        • alter table 表名 modify 字段名 数据类型
        • alter table 表名 drop primary key

    外键索引(foreign key)

    • 定义:让当前表的字段值字在另一个表的范围内选择
    • 语法格式
      foreign key(参考字段名)
      references 被参考表名(被参考字段名)
      on delete 级联动作
      on update 级联动作
    • 删除外键
      • 语法格式
        alter table 表名 drop foreign key 外键名
      • 注意
        • 外键名的查看方式
          show create table 表名;
    • 在已有表中添加外键
      • 语法格式:
        alter table 表名 add
        foreign key(参考字段名) references
        被参考表名(被参考字段名)
        on delete 级联动作
        on undate 级联动作
      • 注意
        在已有表中添加外键时,会受到表中原有数据的限制
    • 级联动作
      • cascade 数据级联更新
        • 当主表删除记录时,如果从表有相关联记录则级联删除
        • 当主表更新被参考字段的值时,从表级联更新参考字段的值
      • restrict (默认)
        • 当主表删除记录时,如果从表中有相关记录则不允许主表删除
        • 当主表更新记录时,如果从表中有相关记录则不允许主表更新
      • set null
        • 当主表删除记录时,从表中相关记录外键字段变为null
        • 当主表更新记录时,从表中相关记录外键字段变为null
      • no action
        • restrict,都是立即检查外键限制
    • 使用规则
      • 两张表被参考字段和参考字段的数据类型要一致
      • 被参考字段必须是key的一种,通常是primary key

相关文章

网友评论

      本文标题:MySQL(二)

      本文链接:https://www.haomeiwen.com/subject/hcekdqtx.html