美文网首页
2018-08-13 外键 自增步长 创建字段 范式

2018-08-13 外键 自增步长 创建字段 范式

作者: 试翼腾渊 | 来源:发表于2018-08-13 20:30 被阅读0次

    关于自增的扩展可以设置auto_increment 一个起始值
    alter table 表名 auto_increment="要设置的值"
    改变自增的步长
    show session variables like "auto_inc%"; 查看步长(会话级别的)session:会议
    +--------------------------+-------+
    | Variable_name | Value |
    +--------------------------+-------+
    | auto_increment_increment | 3 |
    | auto_increment_offset | 1 |
    +--------------------------+-------+

    修改会话级别的步长
    set session auto_increment_increment=2;会话级别的步长
    set session auto_increment_offset=10;会话级别的起始值

    设置步长 全局级别的步长
    show global variables like 'auto_inc%'; (全局的)global:全球,全球性;总的;
    +--------------------------+-------+
    | Variable_name | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1 |
    | auto_increment_offset | 1 |
    +--------------------------+-------+
    set global auto_increment_increment=2;全局级别的步长
    set global auto_increment_offset=10;全局级别的起始值

    创建计算运算
    创建的计算字段原本并不存在我们的表里面。我们通过mysql 的函数
    或者算术运算得倒一个结果,我们把这个结果起一个别名,这个字段就是我们创建的计算字段。

    加密函数
    password(" ")
    md5(" ")

    创建计算字段
    if (x1,v1,v2): x1:表示条件,如果满足返回v1,否则返回v2;
    ifnull(v1,v2):if v1 是null 返回v1,否则返回v2
    case when 条件 then 结果1 else 返回结果2 end;当遇到某种条件,当when 后面的条件满足时,返回then后面的结果1,否则返回结果2。

    三范式 ,E-R
    第一范式
    第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。
    (就是在创建表时,没列都根据实际需要分到不能再分)
    第二范式,1。一个表必须要有一个主键(这个主键可以是但个列,也可以是多个列)
    2.非主键的列,必须完全依赖于主键,而不是几部分依赖主键。
    第三范式
    在第二范式的基础上,不能存在传递,非主键列必须直接依赖于主键,而不能存在传递依赖的关系。

    E -R 模型
    E:entry 表示实体,其实根据事物的特征,添加描述信息,我们将这些描述信息添加在一个表里(table),那么这个表相当于一个实体。

    R:relationship 关系 。 在这里其实就是指表于表之间的关系
    一对一:个人信息与身份证
    个人信息表
    create table user(
    name varchar(10) not null,
    primary key(id)
    constraint fk_idcard(起个名字) fro
    CONSTRAINT FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键名) )
    );
    身份表:
    create table identfity(
    id int auto_increment,
    id_num varchar(50) not null,
    primary key(id));

    一对多:一个班级对多个学生
    学生表
    create table students(
    stu_id int auto_increment,
    stu_name varchar(20) not null,
    primary key(stu_id)
    );
    班级表
    create table grade(
    cls_id int auto_increment,
    cls_name varchar(20) not null,
    cls_desc varchar(225) not null,
    cls_num int default 0,
    primary key(cls_id)
    );

    多对多:选课
    学生表
    create table students(
    stu_id int auto_increment,
    stu_name varchar(20) not null,
    primary key(stu_id)
    );

    课程
    create table courses(
    cour_id int auto_increment,
    cour_name varchar(20) not null,
    primary key(cour_id)
    )
    建立外键的表必须是InnoDB型,不能是临时表,因为在MYSQL中,只有Innodb类型才支持外键
    定义外键名时,不能加引号,如constraint 'FK_ID' 或则 constraint “FK_ID”,这样都是错误的
    如何设置外键?
    1.首先要找表与表之间的关系。
    2.班级表(id,name,主键为id)
    3.学生表(id,name,主键id,clsid(外键)->班级表中的班级的主键)
    创建学生表必须要有班级表
    创建班级表
    CREATE TABLE classes(
    id int auto_increment,
    name varchar(20) not null,
    primary key(id)
    )engine = innodb default charset=utf8

    CREATE TABLE students(
    id int auto_increment,
    name varchar(20) not null,
    clsid int,
    primary key(id),
    constraint FK_CLSID foreign key(clsid) references classes(id)
    );

    删除外键
    alter table 表名 drop foreign key 外键名;
    添加主键 alter table 表名 add constraint 外键名 foreign key(外键字段名)references 被应用的表名(被引用的主键)

    相关文章

      网友评论

          本文标题:2018-08-13 外键 自增步长 创建字段 范式

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