字段类型修改:
ALTER TABLE test MODIFY password number;
oracle自增长:
需要一个自定义的sequence
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 --
每次加几个
START WITH 1 --
从1开始计数
NOMAXVALUE --
不设置最大值
NOCYCLE --
一直累加,不循环
NOCACHE --
不建缓冲区
emp_sequence.currval
当前sequence值
emp_sequence.nextval
下一sequence值
例:
SELECT emp_sequence.currval
FROM DUAL
SELECT emp_sequence.nextval
FROM DUAL
以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle
是决定不循环,如果你设置了最大值那么你可以用cycle
会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.只有了表和序列还不够,还需要一个触发器来执行它!代码如下:
CREATE TRIGGER "触发器名称" BEFORE
INSERT ON example FOR EACH ROW WHEN (new.id is null)
begin
select emp_sequence.nextval into: new.id from dual;
end;
试插入数据!
INSERT INTO example(Name,phone,address)
Values('Cao','56498543','Heibei');
如果在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
注释:如果您使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL
值(在表首次创建时)。
撤销 PRIMARY KEY 约束
如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE Persons DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
如果在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES
Persons(Id_P)
如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN
KEY (Id_P) REFERENCES Persons(Id_P)
撤销 FOREIGN KEY 约束
如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
附录:
ALTER TABLE
TableName1
ADD |
ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth
[, nPrecision])]
[NULL |
NOT NULL]
[CHECK lExpression1
[ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY
| UNIQUE]
[REFERENCES TableName2
[TAG TagName1]]
[NOCPTRANS]
[NOVALIDATE]
看书的时候一直很轻视这个格式,其实在自己编的时候遇到要修改一些字段和属性时候感觉书上没举例,其实都这些字段已经在书上的‘[]'中的选项列出来了而已!!
— 或者
—
ALTER TABLE
TableName1
ALTER [COLUMN]
FieldName2
[NULL |
NOT NULL]
[SET DEFAULT
eExpression2]
[SET CHECK
lExpression2 [ERROR
cMessageText2]]
[DROP DEFAULT]
[DROP CHECK]
[NOVALIDATE]
— 或者 —
ALTER TABLE
TableName1
[DROP [COLUMN]
FieldName3]
[SET CHECK
lExpression3 [ERROR
cMessageText3]]
[DROP CHECK]
[ADD PRIMARY
KEY eExpression3
TAG TagName2
[FOR lExpression4]]
[DROP PRIMARY
KEY]
[ADD UNIQUE
eExpression4 [TAG
TagName3 [FOR
lExpression5]]]
[DROP UNIQUE
TAG TagName4]
[ADD FOREIGN
KEY [eExpression5]
TAG TagName4
[FOR lExpression6]
REFERENCES TableName2
[TAG TagName5]]
[DROP FOREIGN
KEY TAG
TagName6 [SAVE]]
[RENAME COLUMN
FieldName4 TO
FieldName5]
[NOVALIDATE]
参数
TableName1
指定要修改其结构的表名。
ADD [COLUMN]
FieldName1
指定要添加的字段名。单个的表中最多可以有 255
个字段。 如果一个或更多的字段允许
null 值,
该限制为 254 个字段。
ALTER [COLUMN]
FieldName1
指定要修改的已有的字段名。
FieldType [(nFieldWidth
[, nPrecision])]
指定新字段或待修改字段的字段类型、字段宽度和字段精度(小数点后的位数)。
参数 FieldType
是表示字段数据类型的单个字符。有些字段类型还需要参数
nFiledWidth 或
nPrecision,或者两者皆要。
下表列出了参数 FiledType
的值及其对应参数 nFiledWidth
和 nPression
的取舍情况:
字段类型 字段宽度
精度 说明
C n –
宽度为 n
的字符字段
D – –
日期
T – –
日期时间
N n d
宽度为 n
的数值型字段,小数点后保留 d 位
F n d
宽度为 n
的浮点型字段,小数点后保留 d 位
I – –
整数型
B – d
双精度型
Y – –
货币型
L – –
逻辑型