Oracle中如何创建约束,查询约束和删除约束(check约束,外键和主键约束)

Oracle  创建主键,外键, check约束的几种方法:(write by RFH)

1. 在创建表时创建约束:

//添加主键约束

Create table userinfo (userid number(20)constraint  pk_user  primary key ,uname varchar(20));

Create table userinfo(userid number(20),unamevarchar(20),constraint  pk_user  primary key(userid);

//添加外键约束

create table userinfo(useridnumber(20),deptid number(20)  referencesdept(deptid));

create table userinfo(useridnumber(20),deptid number(20), constraint fk_dept foreign key(deptid)references  dept(deptid));

//添加check约束

create table userinfo(useridnumber(20),age number(3) constraint ck_age check(age<100 and age>10));

create table userinfo(useridnumber(20),age number(3), constraint ck_age check(age<100 and age>10))


2. 假如你已经建表完成,而忘记添加约束,没关系,可以单独添加:

   //添加主键约束:

   alter table userinfo add constraintpk_user primary key(userid);

   //添加外键约束:

    alter table userinfo add constraint fk_dept foreign key(deptid)references dept(deptid);

   //添加check约束

   alter table userinfo add constraint ck_age check(age<100 andage>10);


3对表中约束的查询:

      Desc userinfo;

all_constraints 包含了表的约束信息,但是会被刷屏

我们用user_constrains表来获取当前用户的约束:

select constraint_name,table_name,constraint_type from  user_constraints;

如果我们要想看某个表的约束:

select constraint_name,table_name,constraint_type from  user_constraints where table_name=’TABLENAME’;//注意表名要大写


类似的,索引表USER_INDEXES,序列表USER_SEQUENCES,触发器表USER_TRIGGERS,存储过程表USER_PROCEDURES,当然还有USER_TABLES,VIEW_TABLES 等。有个惊人的发现,之前建的外键会被添加到索引表中。他们中一般都有对应字段table_name ,trigger_name等等。

4.我们已经可以自己创建和查询约束,那么如果想要删掉无用的约束呢?

//删除主键

alter table dept drop primary key;

或者

alter table userinfo drop constraint pk_user;

//删除check约束

alter table userinfo drop constraint  ck_age;

//删除外键约束

alter table userinfo drop constraint fk_dept;

 

alter table语句:(仅供参考)

 完整用法:

ALTER [IGNORE] TABLE tbl_name alter_specification [,alter_specification] ... alter_specification: table_option ...

 | ADD [COLUMN]column_definition [FIRST

 | AFTER col_name ]

 | ADD [COLUMN](column_definition,...)

| ADD {INDEX|KEY} [index_name] [index_type](index_col_name,...)

 | ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_col_name,...)

 | ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)

| ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)

 | ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition]

 | ALTER [COLUMN]col_name {SET DEFAULT literal | DROP DEFAULT}

| CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTERcol_name]

 | MODIFY [COLUMN]column_definition [FIRST | AFTER col_name]

| DROP [COLUMN] col_name

 | DROP PRIMARY KEY

| DROP {INDEX|KEY} index_name

 | DROP FOREIGN KEYfk_symbol

| DISABLE KEYS | ENABLE KEYS | RENAME [TO] new_tbl_name

| ORDER BY col_name [, col_name] ...

 | CONVERT TO CHARACTERSET charset_name [COLLATE collation_name]

 | [DEFAULT] CHARACTERSET charset_name [COLLATE collation_name]

 | DISCARD TABLESPACE

 | IMPORT TABLESPACE

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(primary key)约束是一种用于唯一标识表每一行的约束。它确保表的每一行都具有唯一的标识符,并且不允许为空。约束可以由一个或多个列组成,这些列的值必须是唯一的。 (foreign key)约束用于建立表之间的关系。它定义了一个列或一组列,这些列的值必须与另一个表或唯一的值相匹配。约束可以确保数据的完整性,防止无效的引用和维护表之间的关联。 唯一性(unique)约束用于确保表的某一列或一组列的值是唯一的。唯一性约束可以防止重复的值出现在列,但允许空值。 检查(check约束用于限制列的值必须满足指定的条件。检查约束可以是简单的比较运算符,也可以是复杂的表达式。它可以用于限制列的值的范围、数据类型或其他条件。 以下是一个示例,演示了如何在Oracle数据库创建约束约束、唯一性约束和检查约束: 1. 创建约束: ```sql CREATE TABLE employees ( employee_id INT PRIMARY KEY, employee_name VARCHAR(50) ); ``` 2. 创建约束: ```sql CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); ``` 3. 创建唯一性约束: ```sql CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(50), product_code VARCHAR(10) UNIQUE ); ``` 4. 创建检查约束: ```sql CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(50), age INT CHECK (age >= 18) ); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值