mysql基础

数据库三范式

  • 1、列不可以在分
  • 2、属性完全依赖主键
  • 3、属性直接依赖主键

库有关的命令

  • show databases
    显示当前所有的数据库
  • create data name;
    创建名为那么的数据库
  • drop database name
    删除名字为name的数据库
  • use name
    选择使用的数据库

表的有关命令

  • create table 表名(字段名 数据类型 ,字段名,数据类型)
    create table name(id int PRIMARY KEY,name varchar(30) NOT NULL,deptid int,salary float) 创建一个名为name的表,id为主键,name字段不能为null
  • drop table name
    删除名为name的表
  • desc name
    查看表的结构
  • alter name add 字段名 数据类型
    添加字段 给名为name的表添加新的字段
  • alter name drop 字段名
    删除字段 删除名为name的表的字段
  • 增:insert into table(field1,field2,field3) values (values1,values2,values3);
    or
    insert into table values (value1,value2,value3)
  • 删:delete from table where 条件
  • 改:update table set field = value where 条件

聚合函数

  • count(*)
    统计所有的行数,包括空值
  • count(field)
    查询表中含有field的记录数
  • sum(field)
    对指定的列求和
  • avg(field)
    计算指定列的平均值
  • max(field)
    查询出field字段的最大记录
  • min
    同上相反

条件函数

  • IFNULL(expr1,expr2)
    如果前面为null,返回expr2,如果前面不为null,返回expr1
  • 判断null
    field = null or field ! null 查不出数据
    应是
    field is null or field is not null ;

生疏

  • DISTINCT
    关键词 DISTINCT 用于返回唯一不同的值。eg:SELECT DISTINCT 列名称 FROM 表名称
  • having
    SQL 中增加 having子句原因是,where关键字无法与聚合函数一起使用.注意的是having后面跟的条件判断的字段必须是聚合函数返回的结果,否则sql会报错
    HAVING 子句可以让我们筛选分组后的各组数据。
  • sql语句的书写顺序为
    select->from->where->group by->having->order by->limit
  • sql语句的执行顺序为
    from ->where->group by->avg,sum.... ->having->select->order by->limit

子查询和连接查询

虽然可以通过多表连接查询实现查询数据的功能,但是不建议使用连接查询. 因为在连接查询时,先对两个表做笛卡儿积,再筛选符合条件的记录, 所以连接查询性能很差. 使用子查询替代连接查询.

索引

  • key:普通索引
  • unique key:唯一索引
  • primary key:主键索引
  • 多列索引:把两列或者多列的值成一个整体,然后建索引
  • 冗余索引:在某列上,存在多个索引
  • 添加索引
    alter table 表名 add index 索引名
  • 删除table的索引名字
    drop index from table 索引名 on 表名
    或者
    alter table 表名 drop index 索引名
  • 查看table的索引
    show index from table
    或者
    create table 表明

    具体字段分析
    1、table:表名字
    2、Non_unique 唯一索引
    3、Key_name 索引名称
    4、Seq_in_index 索引中的列序列号
    5、Column_name 索引的列名
    6、Collation 列以什么方式存储在索引中,有值’A’(升序)或NULL(无分类)。默认的类型是utf8_general_ci
    7、Cardinality 基数的意思,表示索引中唯一值的数目的估计值。
    8、Sub_part 前置索引的意思,列只是被部分地编入索引,如果整列被编入索引,则为NULL。
    9、Packed 指示关键字如何被压缩。
    10、Null 用于显示索引列中是否包含NULL。若列含有NULL,该列的值为YES。若没有,则该列的值为NO。
    11、Index_type 索引类型(BTREE)
    12、Index_comment 注释的意思
posted @ 2021-08-31 15:00  8ling1ling  阅读(39)  评论(0)    收藏  举报