MySQL学习总结(二)

1 数据库备份与还原

1.1 备份的应用场景

  在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。

1.2 source命令备份与还原

    #备份格式:
            mysqldump -u用户名 -p密码 数据库 > 文件的路径
    #还原格式:
            SOURCE 导入文件的路径;

例子: 备份db1

  1. 备份: (无需登录)
    mysqldump -u root -p db1 > c:/test/mydb1.sql(这里报错的解决方法
    mysqldump --no-defaults -u root -p db1 > d:/cesheei.sql(上面报错可以使用这个)
    实际上备份的创建表和插入表数据的 sql命令
  2. 还原
    要先登录:      mysql -u root -p;
    创建对应数据库:   create database db1;
    选中对应数据库:   use db1;
    执行这个sql脚本文件: source c:/test/mydb1.sql;

注意:还原的时候需要先登录MySQL,并选中对应的数据库。

1.3 或使用可视化工具备份和还原

2 数据库约束

  在数据库服务器上,可以存储N个数据库,数据库中可以存储N个表,一个表中可以存储N条记录,一条记录里,可以有N个数据。每个数据在春初时,可以约束一下,约束完后,更利于我们对数据更好的操作。
  约束概述:约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。
在这里插入图片描述

2.1 主键约束(重点)

2.1.1 主键的作用

  用来标注一条记录的唯一性(唯一标识),每个表都应该有一个主键,并且每个表只能有一个主键。

  有些记录的 name,age,score 字段的值都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据。
哪个字段应该作为表的主键?
  通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复非空就行。

2.1.2 创建外键
    # 主键:PRIMARY KEY
    # 主键的特点:
        1. 主键字段值唯一(唯一不可重复)
        2. 主键列不能为NULL
        3. 一个表中只能有一个主键,但主键可以是多个字段 (联合主键)

创建主键方式:

方式1:创建表时,添加主键约束 (字段约束区)
    格式:
        create table 表名 (
            字段名称1 字段类型 primary key,
            字段名称2 字段类型 --字段约束区
        );
方式2:创建表时,在约束区域添加约束(扩展)
    格式1:单一主键
        create table 表名 (
            字段名称1 字段类型,
            字段名称2 字段类型,
            primary key(字段名称1)
        );
    格式2:联合主键
        create table 表名 (
            字段名称1 字段类型,
            字段名称2 字段类型,
            primary key(字段名称,字段名称1)
        );
方式3:给已有表中添加主键(扩展)
        alter table 表名 add primary key(字段名称);

注意 :一张表中只有一个主键 , 主键可以为多个字段 , 不过我们一般增加一个字段 id 来作为主键。

2.1.3 删除主键

语法格式:ALTER TABLE 表名 DROP PRIMARY KEY;

2.1.4 主键自增

  主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值。
  AUTO_INCREMENT表示自动增长(字段类型是整型数字)
语法格式:例:

--创建学生表user5, 包含字段(id, name)将id做为主键并自动增长
CREATE TABLE user5 (
     id INT PRIMARY KEY AUTO_INCREMENT,
     name VARCHAR(20)
);
--这样插入数据就会自增长
insert into user5(name)values('唐策')
  • DELETE和TRUNCATE的区别
    DELETE删除表中的数据,不重置AUTO_INCREMENT的值
    TRUNCATE摧毁表,重建表,AUTO_INCREMENT重置为1
    如果想自定义id的值,可以使用下面的sql进行设置,一般不需要
    ALTER TABLE 表名 AUTO_INCREMENT=起始值;

2.2 唯一约束

实质:在这张表中这个字段不能重复。(本身可为null:因为null是没有值,所以不存在重复的问题;可设置多个)
语法格式:字段名 字段类型 UNIQUE
例:创建学生表st7, 包含字段(id, name),name这一列设置唯一约束,不能出现同名的学生。

CREATE TABLE st7 (
     id INT,
     NAME VARCHAR(20) UNIQUE
);

2.3 非空约束

实质:被修饰的这个字段必须设置值,不能是NULL。
语法格式:字段名 字段类型 NOT NULL
例:创建表学生表st8, 包含字段(id,name,gender)其中name不能为NULL。

CREATE TABLE st8 (
     id INT,
     NAME VARCHAR(20) NOT NULL,
     gender CHAR(2)
);

2.4 默认值

实质:往表中添加数据时,如果不指定这个字段的数据,就使用默认值。
语法格式:字段名 字段类型 DEFAULT 默认值

例:创建一个学生表 st9,包含字段(id,name,address), 地址默认值是广州。

CREATE TABLE st9 (
     id INT,
     NAME VARCHAR(20),
     address VARCHAR(50) DEFAULT '广州'
);
#此时添加数据:如果不指定值,就会为默认值

3 多表间的关系

3.1 表关系概述

  现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。那么我们在设计表的时候,就应该体现出表与表之间的这种关系!

表和表之间的关系分成三种:

  1. 一对一 (老公和老婆)
  2. 一对多 (部门和员工, 用户和订单)
  3. 多对多 (学生和课程)

  双11当天,马哥和东哥两个用户分别在淘宝上下了一些订单,已知马哥下了1个订单,订单总金额为999元.东哥下了2个订单,订单金额分别为1314元和10元。
思考: 数据库该如何存放这些数据呢?
没有建立关系前:
    通过表数据不能得知数据间的联系,这样存放数据是没有意义的。
建立关系后:
    通过对该业务的分析,可得知一个用户可以有多个订单,一个订单只属于一个用户。
    我们管1的一方,叫主表或1表. 我们管多个一方,叫从表或多表。
    通常要在多的一方添加一个字段,用于存放主表主键的值,我们管这个字段叫外键字段。
    外键字段的值必须为主表主键的值,若为其他值,则没有意义。

用于限制外键字段取值必须为主表主键的值的约束叫做-外键约束。

3.2 一对多

一对多(1:n)
例如:班级和学生,部门和员工,客户和订单,分类和商品。

一对多建表原则:在从表(多方)创建一个字段,指向主表(一方)的主键.我们把这个字段称之为外键。

3.3 多对多

多对多(m:n)
例如:老师和学生,学生和课程,用户和角色。

多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。

3.4 一对一(了解)

一对一(1:1)
在实际的开发中应用不多.因为一对一可以创建成一张表。

两种建表原则:
        外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE
        外键是主键:主表的主键和从表的主键,形成主外键关系

3.5 外键约束

实质:一张表中的某个字段引用另一个表的主键。

主表: 约束别人。
副表/从表: 使用别人的数据,被别人约束。

3.5.1 创建外键
  1. 新建表时增加外键:
    [CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
    关键字解释:
    CONSTRAINT – 约束关键字
    [外键约束名称]–不指定会生成默认值
    FOREIGN KEY(外键字段名)– 某个字段作为外键
    REFERENCES – 主表名(主键字段名) 表示参照主表中的某个字段
  2. 已有表增加外键:
    ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
3.5.2 删除外键(了解)

语法格式:ALTER TABLE 从表 drop foreign key 外键名称;

3.5.3 数据操作注意事项

添加数据时:
    先添加主表中的数据,再添加从表中的数据。
删除数据时:
    先删从表中的数据,再删主表中的数据。
修改数据时:
    如果主表中的主键被从表引用了,不能修改此主键的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值