在sql中怎样设置主键语法
4个回答
展开全部
创建表
--------------------------------------------------------------------------------
CREATE TABLE TABLE_NAME(
column1 DATATYPE [NOT NULL] [PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...
[constraint <约束名> 约束类型 (要约束的字段名)... ]
);
说明:
TABLE_NAME --表名.
column1,column2 --列的名称 不能取关键字
DATATYPE --是Oracle的数据类型,可以查看附录.
NOT NULL /NULL --不可以/可以允许资料有空的.NULL一般省略.
PRIMARY KEY --是本表的主键。
CONSTRAINT --是对表里的字段添加约束.(约束类型有 Check,Unique,Primary key,not null,Foreign key)。
示例:
CREATE TABLE student(
s_id number(8) PRIMARY KEY,
s_name varchar2(20) NOT NULL,
s_sex varchar2(8) ,
clsid number(8) ,
CONSTRAINT u_1 UNIQUE(s_name),
CONSTRAINT c_1 CHECK (s_sex in ('MALE','FEMALE'))
);
表级约束
如 设置 两列不能同时为空
ALTER TABLE tablename ADD CONSTRAINT check_name CHECK (col1 is not null or col2 is not null) ;
复制表
--------------------------------------------------------------------------------
CREATE TABLE TABLE as <SELECT 语句>
(需注意的是复制表不能复制表的约束);
示例:
CREATE TABLE test AS SELECT * FROM emp;
会将表emp的数据一并复制到test中,但约束没有复制.
如果只复制表的结构不复制表的数据则:
CREATE TABLE test as (SELECT * FROM emp WHERE 1=2);
或者
CREATE TABLE test as (SELECT * FROM emp WHERE FALSE);
--------------------------------------------------------------------------------
CREATE TABLE TABLE_NAME(
column1 DATATYPE [NOT NULL] [PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...
[constraint <约束名> 约束类型 (要约束的字段名)... ]
);
说明:
TABLE_NAME --表名.
column1,column2 --列的名称 不能取关键字
DATATYPE --是Oracle的数据类型,可以查看附录.
NOT NULL /NULL --不可以/可以允许资料有空的.NULL一般省略.
PRIMARY KEY --是本表的主键。
CONSTRAINT --是对表里的字段添加约束.(约束类型有 Check,Unique,Primary key,not null,Foreign key)。
示例:
CREATE TABLE student(
s_id number(8) PRIMARY KEY,
s_name varchar2(20) NOT NULL,
s_sex varchar2(8) ,
clsid number(8) ,
CONSTRAINT u_1 UNIQUE(s_name),
CONSTRAINT c_1 CHECK (s_sex in ('MALE','FEMALE'))
);
表级约束
如 设置 两列不能同时为空
ALTER TABLE tablename ADD CONSTRAINT check_name CHECK (col1 is not null or col2 is not null) ;
复制表
--------------------------------------------------------------------------------
CREATE TABLE TABLE as <SELECT 语句>
(需注意的是复制表不能复制表的约束);
示例:
CREATE TABLE test AS SELECT * FROM emp;
会将表emp的数据一并复制到test中,但约束没有复制.
如果只复制表的结构不复制表的数据则:
CREATE TABLE test as (SELECT * FROM emp WHERE 1=2);
或者
CREATE TABLE test as (SELECT * FROM emp WHERE FALSE);
展开全部
如果只是简单需要主键约束,其实可以直接写在你要设置字段后面就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create table table_name
(
column1 data_type,
column2 data_type,
column3 data_type
......
primary key (column_name1,column_name2...)
)
(
column1 data_type,
column2 data_type,
column3 data_type
......
primary key (column_name1,column_name2...)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE TABLE table_name
(
column1 data_type,
column2 data_type,
column3 data_type
)
CREATE UNIQUE INDEX PK_ table_name ON table_name
(column1 )
ALTER TABLE table_name ADD (
CONSTRAINT PK_table_name
PRIMARY KEY
(column1 )
USING INDEX PK_table_name
ENABLE VALIDATE);
(
column1 data_type,
column2 data_type,
column3 data_type
)
CREATE UNIQUE INDEX PK_ table_name ON table_name
(column1 )
ALTER TABLE table_name ADD (
CONSTRAINT PK_table_name
PRIMARY KEY
(column1 )
USING INDEX PK_table_name
ENABLE VALIDATE);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询