您的位置:首页 > 数据库 > Oracle

关于oracle表的操作

2011-08-22 16:39 148 查看
2.修改表.
Alter table table_name
Add column_name type [default expression] 增加新列
   Modify datatype default expression 修改已有列和属性
    Storage storage_clause        修改存储特征
    Drop drop_clause 删除约束条件
       a.改变表所在的表空间
    alter table name move tablespace newtablespace
例: ①在表xs中添加两列.jsj,djsm
Alter table xs add(jxj num<img src="<img src="<img src="">">">ber(1),djsm varchar(40) default
‘奖金1000’);
②在表xs中修改名为djsm的列的默认值
         Alter talbe xs modify(djsm default ‘奖金800’)
 ③在表中删除名为jxj和djxm的列.
  Alter table xs drop column jxj;
  Alter table xs drop column djsm;
 ④修改表xs_kc的存储特征
         Alter talbe xs pctfree 20 maxtrans 200
  ⑤为表xs_jsj加上主键
         Alter table xs_jsj add (constraint “pk_jsj” primary key(xh));
⑥ 增加列
  语法:ALTER TABLE [schema.] table_name ADD column_definition type
  例: ALTER TABLE orders ADD order_date DATE;
⑦更改列
      语法:ALTER TABLE [schema.] table_name MODIFY column_name new_attributes;
      例: ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15));

⑧.更改表名:
alter table t rename to s;
⑨.更改列名
alter table t rename column n to s;

3.约束
Oracle数据库的完整性约束规则
唯一性约束(Unique constraint)
唯一性约束可以保护表中多个数据列,保证在保护的数据列中任何两行的数据都不相同。唯一性约束与表一起创建,在唯一性约束创建后,可以使用ALTER TABLE语句修改。
语法:
column_name data_type CONSTRAINT constraint_name UNIQUE
如果唯一性约束保护多个数据列,那么唯一性约束要作为表约束增加。语法如下:
CONSTRAINT constraint_name (column) UNIQUE
USING INDEX TABLESPACE (tablespace_name)
STORAGE (stored clause)
唯一性约束由一个B-tree索引增强,所以可以在USING子串中为索引使用特殊特征,比如表空间或存储参数。CREATE TABLE语句在创建唯一性约束的同时也给目标数据列建立了一个唯一的索引。 Feedom.net国内最早的网管网站
CREATE TABLE insured_autos (policy_id NUMBER CONSTRAINT pk_policies PRIMARY KEY, vin VARCHAR2(10), coverage_begin DATE, coverage_term NUMBER, CONSTRAIN unique_auto UNIQUE (policy_id,vin) bitsCN_com
USING INDEX TABLESPACE index STORAGE (INITIAL 1M NEXT 10M PCTINCREASE 0) )用户可以禁用未以性约束,但他仍然存在,禁用唯一性约束使用ALTER TABLE 语句
ALTER TABLE insured_autos DISABLE CONSTRAIN unique_name;

删除唯一性约束,使用ALTER TABLE....DROP CONSTRAIN语句 ALTER TABLE insured_autos DROP CONSTRAIN unique_name;
注意用户不能删除在有外部键指向的表的唯一性约束。这种情况下用户必须首 先禁用或删除外部键(foreign key)。 bitscn.com中国网管联盟
删除或禁用唯一性约束通常同时删除相关联的唯一索引,因而降低了数据库性能。经常删除或禁用唯一性约束有可能导致丢失索引带来的性能错误。要避免这样错误,可以采取下面的步骤:

1、在唯一性约束保护的数据列上创建非唯一性索引。
2、添加唯一性约束
主键(Primary Key)约束 bitscn.com中国网管联盟
表有唯一的主键约束。表的主键可以保护一个或多个列,主键约束可与NOT NULL约束共同作用于每一数据列。NOT NULL约束和唯一性约束的组合将保证主键唯一地标识每一行。像唯一性约束一样,主键由B-tree索引增强。 09hr.com网管求职
创建主键约束使用CREATE TABLE语句与表一起创建,如果表已经创建了,可以使用ALTER TABLE语句。
CREATE TABLE policies (policy_id NUMBER CONSTRAINT pk_policies PRIMARY KEY, holder_name VARCHAR2(40), gender VARCHAR2(1), marital_status VARCHAR2(1), date_of_birth DATE );

  与唯一性约束一样,如果主键约束保护多个数据列,那么必须作为一个表约束创建。 bitscn.com中国网管联盟
CREATE TABLE insured_autos (policy_id NUMBER, vin VARCHAR2(40), coverage_begin DATE, coverage_term NUMBER, CONSTRAINT pk_insured_autos PRIMARY KEY (policy_id,vin) USING INDEX TABLESPACE index STORAGE (INITIAL 1M NEXT
10M PCTINCREASE 0) );
  禁用或删除主键必须与ALTER TABLE 语句一起使用
ALTER TABLE policies DROP PRIMARY KEY;
ALTER TABLE policies DISABLE PRIMARY KEY;
1、创建约束
CREATE TABLE students
(student_id VARCHAR2(10) NOT NULL,
student_name VARCHAR2(30) NOT NULL,
college_major VARCHAR2(15) NOT NULL,
status VARCHAR2(20) NOT NULL,
state VARCHAR2(2),
license_no VARCHAR2(30)) TABLESPACE student_data;
2、创建主键
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (student_id)
USING INDEX TABLESPACE student_index;
3、创建Unique约束
ALTER TABLE students
ADD CONSTRAINT uk_students_license
UNIQUE (state, license_no)
USING INDEX TABLESPACE student_index;
4、创建Check约束
ALTER TABLE students
ADD CONSTRAINT ck_students_st_lic
CHECK ((state IS NULL AND license_no IS NULL) OR
(state IS NOT NULL AND license_no is NOT NULL));
添加check约束
      alter table emp add constraint con check(dept_salary>0);
        con 为约束名, dept_salary为字段名

5、创建外键约束
ALTER TABLE students
ADD CONSTRAINT fk_students_state
FOREIGN KEY (state) REFERENCES state_lookup (state);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: