Kingbase备份与还原及表的约束(Kylin)

备份与还原

  • 逻辑备份是对整个数据库好数据库中的部分对象利用逻辑备份工具导出数据到备份文件
  • 在需要数据恢复的情况下利用逻辑还原工具把备份文件恢复到数据库中

使用场景

  1. 逻辑备份主要用于数据库逻辑错误的恢复,恢复后对其他数据没有太大影响
  2. 逻辑备份可用于在大型数据库中执行部分静态对象的备份
  3. 逻辑备份可用于跨平台数据恢复
  4. 逻辑备份在生产中是对物理备份的有效补充

备份单表或多表

bash 复制代码
# 使用system用户将test数据库中的schema01模式下t开头的表备份至/back/dump/table.dmp
sys_dump -U system -d test -f /backup/dump/table.dmp -Fc -t schema01.t*
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存路径
# -Fc 输出文件为定制
# -t 备份的数据表

备份模式

bash 复制代码
# 使用system用户将test数据库中的schema模式备份至/back/dump/schema.dmp
sys_dump -U system -d test -f /back/dump/schema.dmp -Fc -n schema01
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存路径
# -Fc 输出文件为定制
# -n 备份的模式

备份数据库

bash 复制代码
# 使用system用户将test数据库备份至/back/dump/dbidr目录下,添加插入语句,使用双并发备份
sys_dump -U system -d test -f /back/dump/dbdir -Fd --inserts -j 2
# /back/dump下的/dbdir目录不能存在,系统会自动创建
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存的路径
# -Fd 输出文件为文件夹
# --inserts 以inserts语句备份而不是默认的copy语句

备份数据到COPY格式的SQL脚本

bash 复制代码
# 使用system用户将test数据库下的schema01模式中的t01表备份至/back/dump/copy.sql
sys_dump -U system -d test -f /back/dump/copy.sql -Fp -t schema01.t01
# -U 备份使用的用户
# -d 备份的数据库
# -f 保存的路径
# -Fp 输出文件为明文
# -t 保存的数据表

备份数据到INSERT格式的SQL脚本

bash 复制代码
# 使用system用户将test数据库下的schema01模式中的t01表备份至/back/dump/inserts.sql
sys_dump -U system -d test -f /back/dump/inserts.sql -Fp -t schema01.t01 --inserts
# -U 备份使用的用户
# -d 备份使用的数据库
# -f 保存的路径
# -Fp 数据文件为明文
# --inserts 使用inserts语句备份

只备份对象定义 不包含表数据

bash 复制代码
# 使用system用户将test数据库下的对象信息备份至/back/dump、ddl.sql
sys_dump -U system -d test -f /back/dump/ddl.sql -Fp -s
# -U 备份使用的用户
# -d 备份的数据库
# -s 只存储模式,不包含数据
# -f 保存的路径
# -Fp 数据文件为明文

从DUMP格式的备份中还原表

bash 复制代码
sys_restore -U system -d test /back/dump/table.dmp -Fc -t t0

表的约束

数据完整性约束是指为了防止不符合规范的数据进入数据库,在录入数据或数据发生变化时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,是数据库中存储的数据正确、有效、相容。

表的三类完整性约束 约束可以在列或者在表级定义,单列约束可以定义在列级或表级,多列约束必须定义在表级

  • 实体完整性
  • 参照完整性
  • 用户定义完整性

实体完整性

实体完整性定义

  1. 关系数据库中每个元组应该是可区分的,是唯一的,这样的约束条件用实体完整性来保证。
  2. 实体完整性约束对应的属性被称为表的主键(primary key)或称为关系的主码
  3. 实体完整性约束可以定义在表中的一列或多列中

实体完整性规则

  1. 实体完整性规则是针对基本表而言的,一个基本表通常对应于现实世界的一个实体集
  2. 主键对应的列值在表中不能重复且不能为空
  3. 每个表最多只能拥有一个主键

创建表时添加主键约束

sql 复制代码
# 列级定义主键
CREATE TABLE student(
	name varchar(10),
    CONSTRAINT RULE_NAME PRIMARY KEY(name)  # 设置主键约束:约束名为RULE_NAME,约束列为name
);

# 表级定义主键
CREATE TABLE sutent (name varchar(10),PRIMARY KEY(name));

修改表增加主键约束

sql 复制代码
ALTER TABLE student ADD CONSTRAINT pk_student_name PRIMARY KEY(name);
# 修改student表增加约束,约束名为pk_student_nmae,主键字段为name

参照完整性约束

参照完整性定义

  1. 现实世界中的实体主键往往存在某种关系、关系和关系之间存在相互引用。
  2. 一个表的属性需要依赖另一个表的属性,这样的约束条件使用参照完整性来保证。
  3. 参照完整性约束对应的属性被称为表的外键(foreign key),或称为关系的外码。
  4. 参照完整性约束课定义在表中的一列或多列上。

参照完整性规则

  1. 被参照的相应列上必须被定义为主键约束或唯一键约束
  2. 表的外键列可以取空值
  3. 表的外键非空时,只能取被参照表中已经存在的值
sql 复制代码
CREATE TABLE student(
	name varchar(10),
    CONSTRAINT RULE_NAME FOREIGN KEY(name) REFERENCES student1 (name) # 设置外键约束:约束名为RULE_NAME,约束列为name,参照对象为student1的name列
);

修改表添加外键约束

sql 复制代码
ALTER TABLE student ADD CONSTRAINT fk_student1_name FOREIGN KEY (name) REFERENCES student1(name);

用户定义的完整性约束

非空约束 非空约束保证一个表中某列不能取空值

sql 复制代码
CREATE TABLE t1 (name varchar(10) NOT NULL);
# 限制name字段不能为空

唯一约束 唯一约束保证一个表的某列或多列的值在表中所有元组间是不能重复的,但可以为空

sql 复制代码
CREATE TABLE t1 (name varchar(10) UNIQUE);
# 限制字段name不可为空

check约束 限制一个特定列中的值必须要满足一个条件表达式

sql 复制代码
CREATE TABLE t1 (name varchar(10),score numeric CHECK(score>0));
# 限制字段score必须大于0

约束的状态控制

enable/disable对新进入数据的约束检查

validate/novalidate对现有数据的约束检查

约束控制方法

  1. enable + validate

    新插入的数据与表中现有数据均需符合约束条件,默认状态

  2. enable + novalidate

    对表中现有数据和新插入的数据都不执行完整性约束检查

  3. disable + validate

    对现有的数据执行完整性约束检查,不允许对表执行DML操作

  4. disable + novalidate

    对现有数据不执行完整性约束检查,对新插入的数据会执行检查

相关推荐
qq_4330994039 分钟前
Ubuntu20.04从零安装IsaacSim/IsaacLab
数据库
Dlwyz41 分钟前
redis-击穿、穿透、雪崩
数据库·redis·缓存
工业甲酰苯胺3 小时前
Redis性能优化的18招
数据库·redis·性能优化
没书读了4 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i4 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl4 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502775 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空5 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
聂 可 以6 小时前
Windows环境安装MongoDB
数据库·mongodb
web前端神器6 小时前
mongodb多表查询,五个表查询
数据库·mongodb