MYSQL基础(二)

  • 概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。

  • 分类:

    1.主键约束:primary key //primary:初始的 prim 第一 + ary …的 → 最初的;根本的

    2.非空约束:not null

    3.唯一约束:unique

    4.外键约束:foreign key

  • 非空约束:not null

    1.在创建表时添加约束:

    CREATE TABLE stu(
        id INT,
        NAME VARCHAR(20) NOT NULL
    );
    

    2.使用表时添加非空约束:

    ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
    
  • 唯一约束:unique ,被修复的那一列的值不能重复

    1.在创建表时添加约束:

    CREATE TABLE stu(
        id INT  UNIQUE ,
        NAME VARCHAR(20) NOT NULL
    );
    

    2.使用表时添加非空约束:

    ALTER TABLE stu MODIFY id INT UNIQUE;
    

    3.删除唯一约束:

    ALTER TABLE stu DROP INDEX id;
    
  • 主键约束:primary key 第一 + ary …的 → 最初的;根本的

    1.注意:

    ​ 1.1 含义:非空且唯一

    ​ 1.2 一张表只能有一个字段为主键

    ​ 1.3主键就是表中记录的唯一标识

    2.在创建表时,添加主键约束

    CREATE TABLE stu (
    id INT PRIMARY KEY,
    NAME VARCHAR(20)
    );
    

    3.删除主键约束

    ALTER TABLE stu DROP PRIMARY KEY;
    

    4.使用表时添加主键约束

  ALTER TABLE stu MODIFY id INT PRIMARY KEY;

​ 5.自动增长

​ 5.1 概念:如果时数值类型的,使用auto_increment 可以来完成值的自动增长 in 使…;加以…;饰以… + cre 增长 + ment 表结果 → 增值;增加

​ 5.2 在创建表时,添加主键约束,并且完整主键的自增长

CREATE TABLE stu (
id INT PRIMARY KEY auto_increment,
NAME VARCHAR(20)
);

​ 5.3 删除自动增长

ALTER TABLE stu MODIFY id INT ;        这种写法删不掉主键约束,所以只删掉了自动增长
  • 外键约束 foreign key

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eoi3o6x0-1592296853223)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200616113410415.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tmOUXCba-1592296853232)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200616113428743.png)]

    1.在创建表时添加外键 让表与表产生关系,从而保证数据的正确性。

CREATE TABLE employee(
          id INT PRIMARY KEY AUTO_INCREMENT,
          NAME VARCHAR(30),
          age INT,
          dep_id   INT  ,
          
        CONSTRAINT  emp_dep_id FOREIGN KEY (dep_id) REFERENCES department(id)
);

references 关联

​ 2.删除外键

ALTER TABLE employee DROP FOREIGN KEY emp_dep_id;

3.使用时添加外键约束

ALTER TABLE employee ADD CONSTRAINT  emp_dep_id FOREIGN KEY (dep_id) REFERENCES department(id);
  • 级联更新
ALTER TABLE employee ADD CONSTRAINT emp_dep_id FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE;
  • 级联删除
ALTER TABLE employee ADD CONSTRAINT emp_dep_id FOREIGN KEY
 (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE;

数据库的设计

  1. 多表之间的关系

    分类:

    一对一的关系:人和身份证,一个人只有一个身份证,一个身份证只有一个人,这就是一对一的关系。

​ 一对多的关系: 部门和员工,一个部门有多个员工,一个员工只能对应一个部分

​ 多对多的关系:一个学生可以选很多学科,一个学科也可以被多个学生选择。

​ 实现关系:

​ 一对多:部门和员工,在多的一方建立外键,指向一的一个放的主键。

​ 多对多:学生和课程, 设置一个中间表,列内容为两个表的主键。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Upb0Sp8n-1592296853241)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200616135634676.png)]

​ 一对一:两个表,在任意一个表添加唯一约束的外键,指向另一个表的主键即可

  1. 数据库设计的范式

    设计数据库时需要遵循的规范

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

    分类:

    • 第一范式(1NF)数据库表的每一列都是不可分割的原子数据项

    • 第二范式(2NF)在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码 的部分函数依赖)

      函数依赖:通过A确定B,如果通过A属性或者属性组的值,可以确定唯一B属性的值。则成B依赖A,例如通过学号确定学生的姓名。(学号和课程名称)可以确定分数,()里的内容则为属性组。

      完全函数依赖:通过A确定B,如果A时一个属性组,则B属性值的确定需要依赖A所有的属性值。

      部分函数依赖:(学号,课程名称)可以确定b姓名 , 学号自己就可以确定姓名成为部分函数依赖。

      传递函数依赖 :通过A确定B,通过B确定C,如果通过A属性确定B属性的值,再通过B属性的值可以确定唯一C的值,则称C传递函数依赖于A。 学号确定系名,系名确定系主任,那么系主任传递依赖于学号。

      码:如果一个属性属性组在一张表中,这个属性被其他所有属性完全依赖,则称这个属性为该表的码。

      (学号,课程名称)确定了其他所有属性。

      主属性:码属性组中的所有属性

      非主属性:除了码属性组的属性的其他属性

      解决冗余的问题

    • 第三范式(3NF)在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

      解决添加和删除的问题

  2. 数据库的备份和还原

    • 命令行方式: 备份 mysqldump -u用户名 -p密码 数据库名称 > 保存的路径

      ​ 还原: 登陆数据库,创建数据库,使用数据库, source 数据库路径

​ 图形化工具方式:(简单)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值