ITPub博客

首页 > 数据库 > Oracle > oracle自增长、字段修改、主键外键 huanglei

oracle自增长、字段修改、主键外键 huanglei

Oracle 作者:ptlz 时间:2012-12-30 20:24:34 0 删除 编辑
字段类型修改:
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   –   –   逻辑型    
  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、删除操作 -- 先删除从表,后删除主表。
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24068598/viewspace-1116738/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-06-10