复制表
1.如果两个表的结构一样,只复制表数据
insert into 新表 select * from 旧表 //从旧表复制数据到新表中
2.如果两个表结构不一样
如果两个表结构不一样,复制表数据:
insert into 新表(column1,column2...) select column1,column2... from 旧表
SQL 约束(Constraints)
SQL 约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
在 SQL 中,我们有如下约束:
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。简单点就是这个列的值不能重复。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速 地找到表中的一个特定的记录。一个表中只能有一个主键
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。
重点说明:
定义了UNIQUE约束的字段中不能包含重复值,可以为一个或多个字段定义UNIQUE约束,因此,UNIQUE即可以在字段级也 可以在表级定义,在UNIQUE约束的字段上可以包含空值.
ORACLE自动会为具有PRIMARY KEY约束的字段(主码字段)建立 一个唯一索引和一个NOT NULL约束,定义PRIMARY KEY约束时可以为它的索引;
UNIQUED 可空,可以在一个表里的一 个或多个字段定义;
unique和primary key的区别:
相同:它们都属于实体完整性约束.
不同点:
(1) 唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。
(2) 可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的。但是,唯一性约束所在的列并不是表的主 键列。
(3) 唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创 建的索引是聚簇索引。
(4)建立主键的目的是让外键来引用.
(5)一个表最多只有一个主键,但可以有很多唯一键
外键约束foreign key
1.拥有外键的表是子表。主键被其它表引用的表是父表
2。拥有外键关系,并且可以随便删除数据,不影响其它表的数据的那个表叫子表
3。foreign key 是外键的意思。foreign key (id)说明外键是ID。references person(id) 是说明这个ID是来自PERSON表 中的
外键约束的优点和缺点:
优点:
1、保证数据的一致性,完整性,更可靠。
2、关联查询时,可以用到FK 的统计信息。
3、有主外键的数据库设计可以增加ER图的可读性。
缺点:
1、删队或更新关联数据时需要做检查,效率会很低。
2、手工调数据时,会存在主从表校验,会比较麻烦。
3、批量导入数据时,会存在外键校验,需要先关闭外键约束,导入完成再打开外键约束,操作比较麻烦。
check约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
default约束
默认约束 指定默认值