create table as 复制not null

创建一张表包含非空约束,唯一约束和check约束

SQL> create table dept(
2 ename varchar2(20) constraint mep_ename_nn not null,
3 email varchar2(30) constraint mep_email_uk unique,
4 constraint emp_email_ck check ((instr(email,‘@‘)>0)));

Table created.

查看约束情况:
SQL> select constraint_name,constraint_type,column_name
2 from user_constraints natural join user_cons_columns
3 where table_name=‘DEPT‘;

CONSTRAINT_NAME C COLUMN_NAME
------------------------------ - ---------------
MEP_ENAME_NN       C ENAME
EMP_EMAIL_CK         C EMAIL
MEP_EMAIL_UK         U EMAIL

使用create table as语句创建另外一张表:

SQL> create table dept_test as select * from dept;

Table created.

检查约束情况,只有ename上的nut null约束被复制了过来

SQL> select constraint_name,constraint_type,column_name
2 from user_constraints natural join user_cons_columns
3 where table_name=‘DEPT_TEST‘;

CONSTRAINT_NAME C COLUMN_NAME
------------------------------ - ---------------
SYS_C0011591           C ENAME

尝试插入数据报错

SQL> insert into dept_test(email) values(‘[email protected]‘);
insert into dept_test(email) values(‘[email protected]‘)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SYS"."DEPT_TEST"."ENAME")

时间: 2024-08-11 03:52:38

create table as 复制not null的相关文章

oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别

create table  as select * from和insert into select from两种表复制语句区别 [sql] view plain copy create table targer_table as select * from source_table insert into target_table(column1,column2) select column1,column2 from source_table 以上两句都是将源表source_table的记录插

SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... ) 数据类型(data_type)规定了列可容纳何种数据类型.下面的表格包含了SQL中最常用的数据类型: 数据类型 描述 integer(size) int(size) smallint(size) tinyint(size) 仅容纳整数.在括号内规定数字的最

MySQL中表复制:create table like 与 create table as select

CREATE TABLE A LIKE B 此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来. CREATE TABLE A AS SELECT x,x,x,xx FROM B LIMIT 0 此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来.这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字段,并且自身复制表也可以根据需要增加字段结构. 两种方式在复制表的时候均不会复制权限对表的设置.比如说原本对表B做了权限设置,复制后,表A不具备类似

mysql复制表结构create table as和like的区别

对于MySQL的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? create table t2 as select * from t1 where 1=2;或者 limit 0; as创建出来的t2表(新表)缺少t1表(源表)的索引信息,只有表结构相同,没有索引. create table t2 like t1 ; like 创建出来的新表包含源表的完整表结构和索引信息. 二者的用途:as用来创建相同表结构并复制源表数据.like

MySQL中表复制:create table like 与 create table as select

1    CREATE TABLE A LIKE B此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来. 2.    CREATE TABLE A AS SELECT * FROM B 此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来.这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字段,并且自身复制表也可以根据需要增加字段结构. 两种方式在复制表的时候均不会复制权限对表的设置.比如说原本对表B做了权限设置,复制后,表A不具备类似于表B的权

慎用create table as select,不会copy约束,主键什么东东都不会复制

1.再做一些数据迁移时候,很多人会使用create table  as select * from table where id=-1的方式来年建立一摸一样的表,但是这样做有个很大的弊端,不能将原表中的default value也一同迁移过来. 2.  Using the CREATE TABLE ... AS SELECT ... command: This command will copy acrooss to the new table all the data,but the cons

myql查询创建表语句SHOW CREATE TABLE table_name

技术背景:刚开始学习MySQL时候,有时偷懒,会用SHOW CREATE TABLE 表名\G来复制表创建语句,可是当运行的时候总会因为"表名和列名上有单引号",提示语法错误不能运行.问题列表:1,为什么会出错呢?2,有什么解决方法?解决问题:1,分析show create table拷贝的语句出错原因1.1 重现过程1.1.1 创建测试表test,并通过show create table test取得表的创建语句,可见表名,列名都用引号包着.mysql> create tabl

【SQL篇章--CREATE TABLE】

[SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:CREATE TABLE][会坚持完善] SQL : 1. Data Definition Statements: 1.3 CREATE TABLE 格式:3种建表语句 1.简单SQL表明结构: CREATE TABLE t7(id INT ,NAME VARCHAR(20), PRIMARY KEY(`id`)) ENGINE=INNODB; 格式: CREATE [TEMPORARY] TABLE [IF NOT EXIS

MYSQL create database 和 create table 做了一些什么!

create database Studio; 这样就可以创建一个数据库了.他包涵一些什么呢? 可以看到它创建了一个文件夹,下面我们进去看一下它里面有一些什么东西. 还是先建一张表再进去吧,运行一下这个  create table Nums(X int not null); 内容分析: db.opt 文件. 复制到另一个地方,用计事本打开. 发现它保存的是字符集与排序规则信息. .frm 文件. 它保存整个表框架的定义,但是它保存的是密文. .idb文件. 它用来保存表中的数据.