本文共 4056 字,大约阅读时间需要 13 分钟。
在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。
#备份格式: mysqldump -u用户名 -p密码 数据库 > 文件的路径 #还原格式: SOURCE 导入文件的路径;
例子
: 备份db1
注意:还原的时候需要先登录MySQL,并选中对应的数据库。
在数据库服务器上,可以存储N个数据库,数据库中可以存储N个表,一个表中可以存储N条记录,一条记录里,可以有N个数据。每个数据在春初时,可以约束一下,约束完后,更利于我们对数据更好的操作。
约束概述:约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。用来标注一条记录的唯一性(唯一标识),每个表都应该有一个主键,并且每个表只能有一个主键。
有些记录的 name,age,score 字段的值都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据。
哪个字段应该作为表的主键? 通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id
作为主键
。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复
,非空
就行。 # 主键: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 来作为主键。
语法格式:ALTER TABLE 表名 DROP PRIMARY KEY;
主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值。
AUTO_INCREMENT
表示自动增长(字段类型是整型数字) 语法格式:例: --创建学生表user5, 包含字段(id, name)将id做为主键并自动增长CREATE TABLE user5 ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20));--这样插入数据就会自增长insert into user5(name)values('唐策')
DELETE
删除表中的数据,不重置AUTO_INCREMENT
的值 TRUNCATE
摧毁表,重建表,AUTO_INCREMENT
重置为1 如果想自定义id的值,可以使用下面的sql进行设置,一般不需要 ALTER TABLE 表名 AUTO_INCREMENT=起始值;
实质:在这张表中这个字段不能重复。(本身可为null:因为null是没有值,所以不存在重复的问题
;可设置多个)
字段名 字段类型 UNIQUE
例:创建学生表st7, 包含字段(id, name),name这一列设置唯一约束,不能出现同名的学生。 CREATE TABLE st7 ( id INT, NAME VARCHAR(20) UNIQUE);
实质:被修饰的这个字段必须设置值,不能是NULL。
语法格式:字段名 字段类型 NOT NULL
例:创建表学生表st8, 包含字段(id,name,gender)其中name不能为NULL。 CREATE TABLE st8 ( id INT, NAME VARCHAR(20) NOT NULL, gender CHAR(2));
实质:往表中添加数据时,如果不指定这个字段的数据,就使用默认值。
语法格式:字段名 字段类型 DEFAULT 默认值
例:创建一个学生表 st9,包含字段(id,name,address), 地址默认值是广州。
CREATE TABLE st9 ( id INT, NAME VARCHAR(20), address VARCHAR(50) DEFAULT '广州');#此时添加数据:如果不指定值,就会为默认值
现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。那么我们在设计表的时候,就应该体现出表与表之间的这种关系!
表和表之间的关系分成三种:
双11当天,马哥和东哥两个用户分别在淘宝上下了一些订单,已知马哥下了1个订单,订单总金额为999元.东哥下了2个订单,订单金额分别为1314元和10元。
思考: 数据库该如何存放这些数据呢?没有建立关系前:
通过表数据不能得知数据间的联系,这样存放数据是没有意义的。 建立关系后:
通过对该业务的分析,可得知一个用户可以有多个订单,一个订单只属于一个用户。 我们管1的一方,叫主表或1表. 我们管多个一方,叫从表或多表。 通常要在多的一方添加一个字段,用于存放主表主键的值,我们管这个字段叫外键字段。 外键字段的值必须为主表主键的值,若为其他值,则没有意义。 用于限制外键字段取值必须为主表主键的值的约束叫做-外键约束。
一对多(1:n)
例如:班级和学生,部门和员工,客户和订单,分类和商品。一对多建表原则:在从表(多方)创建一个字段,指向主表(一方)的主键.我们把这个字段称之为外键。
多对多(m:n)
例如:老师和学生,学生和课程,用户和角色。多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。
一对一(1:1)
在实际的开发中应用不多.因为一对一可以创建成一张表。两种建表原则: 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE 外键是主键:主表的主键和从表的主键,形成主外键关系
实质:一张表中的某个字段引用另一个表的主键。
主表: 约束别人。
副表/从表: 使用别人的数据,被别人约束。[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
关键字解释: CONSTRAINT
– 约束关键字 [外键约束名称]–不指定会生成默认值 FOREIGN KEY(外键字段名)
– 某个字段作为外键 REFERENCES
– 主表名(主键字段名) 表示参照主表中的某个字段ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
语法格式:ALTER TABLE 从表 drop foreign key 外键名称;
添加数据时:
删除数据时:
先删从表中的数据,再删主表中的数据。 修改数据时:
如果主表中的主键被从表引用了,不能修改此主键的值。 转载地址:http://wfowb.baihongyu.com/