sql(2)

  复制表

  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约束

          默认约束  指定默认值

          

           

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值