create table中的小问题,3ks

csdnbanqiliao 2006-04-01 07:44:14
CREATE TABLE
[ database_name.[ owner ] .| owner.] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }

| [ { PRIMARY KEY | UNIQUE } [ ,...n ]

)
看第7行,[ { PRIMARY KEY | UNIQUE } [ ,...n ]怎么用??给个例子吧,谢谢:)
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnbanqiliao 2006-04-02
  • 打赏
  • 举报
回复
up
tian790317 2006-04-01
  • 打赏
  • 举报
回复
那是加主键的

csdnbanqiliao 2006-04-01
  • 打赏
  • 举报
回复
确实 unique 、primary key、foreign key和check都是约束,default就算做属性吧。
但根据这段形式定义
CREATE TABLE
[ database_name.[ owner ] .| owner.] table_name
( { < column_definition > <----这里包括列约束的定义了
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] } <--- 表约束在这

| [ { PRIMARY KEY | UNIQUE } [ ,...n ] <------这里是什么啊?
)
我完全可以这么写
create table mytable (
id int identity(0,1) constraint PK_id primary key,
info varchar(100) constraint CK_info check not for replication ( info like '%'),
primary key (id, info)
)
但这样确实是不对的
我想知道的是mssql doc关于create table的说明中,既然列约束和表约束都在后面说明了,那么{ PRIMARY KEY | UNIQUE } [ ,...n ] 有什么用?个人觉得是多余的,但mssql文档都出了多少年了,不应该有这种错误,因此应该是我自己没有搞清楚,所以来问问大家这个该死的、挨千刀的、看似多余的[ { PRIMARY KEY | UNIQUE } [ ,...n ]该怎么用:)),[ { PRIMARY KEY | UNIQUE } [ ,...n ]的括号还不匹配,真不知道ms的文档是怎么写的
zhigangsun 2006-04-01
  • 打赏
  • 举报
回复
表的主键、外键就是表约束啊。
csdnbanqiliao 2006-04-01
  • 打赏
  • 举报
回复
谢谢两位老大的热心
to Big_Gun(大枪):我用的是mssql,不是oracle :(请给mssql的例子:)
to xeqtr1982(ShaKa):您说的是column_constraint吧,但这段形式化定义里
CREATE TABLE
[ database_name.[ owner ] .| owner.] table_name
( { < column_definition > <----这里包括列约束的定义了
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] } <--- 表约束在这

| [ { PRIMARY KEY | UNIQUE } [ ,...n ] <------这里是什么啊?
)

[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]

< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]

< column_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}

< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
}

再次感谢您的解答:))
xeqtr1982 2006-04-01
  • 打赏
  • 举报
回复
使用 PRIMARY KEY 约束
下例显示在示例数据库 pubs 的 jobs 表中,job_id 列中具有聚集索引的 PRIMARY KEY 约束的列定义;此例由系统提供约束名。

job_id smallint
PRIMARY KEY CLUSTERED

下例显示如何为 PRIMARY KEY 约束提供名称。此约束用于 employee 表中的 emp_id 列。此列基于用户定义数据类型。

emp_id empid
CONSTRAINT PK_emp_id PRIMARY KEY NONCLUSTERED

使用 UNIQUE 约束
UNIQUE 约束用于强制非主键列的唯一性。PRIMARY KEY 约束列自动包含唯一性限制;但是,UNIQUE 约束允许存在空值。下例显示表 authors 中名为 pseudonym 的列。该列强制作者笔名必须唯一。

pseudonym varchar(30) NULL
UNIQUE NONCLUSTERED

下例显示在 stor_id 实际上是 PRIMARY KEY 的 stores 表中,stor_name 列和 city 列上创建的 UNIQUE 约束;同一个城市中的商店不应同名。

CONSTRAINT U_store UNIQUE NONCLUSTERED (stor_name, city)

CREATE TABLE publishers
(
pub_id char(4) NOT NULL
CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756')
OR pub_id LIKE '99[0-9][0-9]'),
pub_name varchar(40) NULL,
city varchar(20) NULL,
state char(2) NULL,
country varchar(30) NULL
DEFAULT('USA')
)
Big_Gun 2006-04-01
  • 打赏
  • 举报
回复
指定主键

CREATE TABLE UserName.TalbeName
( X CHAR(16) NOT NULL ENABLE,
Y VARCHAR2(30) NOT NULL ENABLE,
Z DATE NOT NULL ENABLE,
CONSTRAINT "CONSTRAINT_NAME"
PRIMARY KEY (X)
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE TABLESPACE_NAME ENABLE
) P

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧