有些关键字在查询分析器中不能用,请指教

KevC 2006-01-14 09:07:16
我用这一段建了个表
create table student
(Sno char(5) NOT NULL UNIQUE,
Sname char(20) UNIQUE,
Ssex char(1),
Sage int,
Sdept char(15));

当我执行下面三个指令的时候出现错误,找不到原因,请各位看看哪里有错误.

alter table student drop UNIQUE(Sname);

服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'UNIQUE' 附近有语法错误。

---------------------------------------------------------

alter table student modify Sage smallint;

服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'Sage' 附近有语法错误。

-------------------------------------------------------------

CREATE CLUSTER INDEX ON student(Sname);

服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'CLUSTER' 附近有语法错误。

------------------------------------------------------------
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevC 2006-01-15
  • 打赏
  • 举报
回复
谢谢!

我用的是SQL Server,一直有加;的习惯.

第一个问题我照你的方法查了一下,其它有两个是以UQ开头的名字,这两个就应该是UNIQUE约束的名字吧?可是我不知道哪个是哪个哦?因为我这个表有两个有UNIQUE约束.

还有就是在SQL Server里删除UNIQUE的时候一定要查出它的名字吗?

第二个问题我是想改Sage的类型,不过你给我的那句好象不怎么对.

第三个问题我照你的方法把关键字CLUSTER改成CLUSTERED,但还有错误:

CREATE CLUSTERED INDEX ON student(Sname);

服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'ON' 附近有语法错误。

不知道又出了什么问题

plus:我用的好象都是标准的SQL语言,为什么在这里用会出错?是不是我的SERVER版本有问题?还是说SQL Server并不是完全用SQL语言?
mislrb 2006-01-14
  • 打赏
  • 举报
回复
1.改下
select name from sysindexes where id=object_id(N'student')

alter table student drop constraint name --name 为上句你查询到的值
mislrb 2006-01-14
  • 打赏
  • 举报
回复
带;的语句?Oracle?

SQLSERVER

1.先用下面查出
select name from sysindexes where id=object_id(N'student')
你的UNIQUE的名字再
alter table student drop constraint UQ__student__14270015

2.
CREATE CLUSTERED INDEX idx_sname ON student(Sname)

3.
CREATE CLUSTERED INDEX Stusname ON student(Sname)

KevC 2006-01-14
  • 打赏
  • 举报
回复
CREATE CLUSTER INDEX Stusname ON student(Sname);

服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'CLUSTER' 附近有语法错误。

34,575

社区成员

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

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