字段类型修改:
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');
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 PersonsADD 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 OrdersDROP CONSTRAINT fk_PerOrders
附录:
ALTER
看书的时候一直很轻视这个格式,其实在自己编的时候遇到要修改一些字段和属性时候感觉书上没举例,其实都这些字段已经在书上的‘[]'中的选项列出来了而已!!
—
或者
—
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
–
–
逻辑型
M
–
–
备注型
G
–
–
通用型
P
–
–
图象
对于
D、T、I、Y、L、M、G
和
P
型数据,省略参数
nFieldWidth
和
nPrecision。如果对
N、F
或
B
型数据没有给出参数
nPrecision
的值,其的默认值为零。
NULL
|
NOT
NULL
允许或不允许字段为空值。
如果省略
NULL
和
NOT
NULL,当前的
SET
NULL
设置将决定字段是否允许为空;并且如果命令中带有
PRIMARY
KEY
或
UNIQUE
子句,当前的
SET
NULL
设置不起作用,字段默认状况为非空。
CHECK
lExpression1
指定字段的有效性规则。lExpression1
为逻辑表达式值,可以是用户定义的函数或存储过程。注意:每添加一个空记录时,都将进行有效性检查。如果有效性规则不允许添加的记录中有空字段值,VisualFoxPro
将产生错误信息。
ERROR
cMessageText1
指定字段有效性检查出现错误时显示的错误信息。只有在“浏览”或“编辑”窗口中修改数据时,此信息才可能显示。
DEFAULT
eExpression1
指定字段默认值。eExpression1
的数据类型必须与字段的数据类型相同。
PRIMARY
KEY
创建主索引标识。索引标识与字段同名。
1、外键的概念:外键是关系数据库三个完整性的五个约束条件之一,是表与表之间建立的一种关系。在Oracle数据库的scott/tiger用户中,表Dept和Emp通过外键进行了关联。在这里Dept表叫主表,Emp表叫从表,外键是字段Deptno。
2、加入外键的条件:a、两个表有相同属性字段,取值范围相同;
b、外键在主表中是主键或者是唯一字段;
c、外键可以是多个字段的组合。
记住一句话:从表的外键是主表的主键或唯一字段。
3、对外键的操作:a、插入操作 -- 先插入主表,后插入从表;
b、修改操作 -- 先插入主表正确的外键字段记录,后修改从表的外键,
并删除主表错误的外键字段记录;
c、删除操作 -- 先删除从表,后删除主表。