创建表与表中字段的约束类型

1.      创建表:

一个oracle数据库中包含下列几种数据类型:

——table(表) 存储数据

——view (视图)从一个表或多个表的数据中得到的子集(虚的)

——sequence(序列) 生成主键值(自增)

——index (索引)提高查询性能

建表语法:

Create table 表名( 字段名1,类型(数据长度)(default……)约束条件,字段2,类型(数据长度) 约束条件。。。);

其中的default为缺省值:例:create table testid number name varchar230 default waa’);即当插入数据没有给此列插值时,此列name默认为‘waa’;

Oracle的数据类型:

Charsize):定长字符型,字符长度不够自动在右边加空格。

Varchar2size):可变长字符型,大小必须指定。

Numbermn):数据字符型,大小必须指定。

   其中m指有效位,n指的是小数位(四舍五入)

   有效位:从左边不为0的数字算起,四舍五入。如果有效位大于m报异常。

如:123.45642)——>123.46 // 报错。

   若是number 表示整形 。如 id number

Date日期类型。

Loblarge object)大对象,不能直接用insert插入。

Blob二进制大对象,也是以相当于指针的形式存放的。采用单字节存储,适合保存二进制数据,如图片,文件等。

Clob字符大对象,存文本。采用多字节存储,适合保存文本数据等。

 举例:

1:创建一个表mytest

Create table mytestid number name varchar230));

2:创建一个表mytest,将id字段默认设置位11

Create table mytest ( id number default 11 name varchar230));

3:创建一个表mytest,表中id字段必须大于10name字段不允许位空:

Create table mytestid name checkid>10),name varchar230 not null);

4:创建一个表mytest,表中要求id字段必须唯一:

Create table mytestid number unique name varchar230));

 

 

2.      约束(针对表中的字段进行定义的)类型:

l       PK: primary key(主键)

唯一且非空。保证实体的完整性,保证记录的唯一。主键唯一且非空,并且每一个表中只能有一个主键,有两个字段联合作为主键时,将两个字段组合在一起唯一表识记录,叫做联合主键

主键约束的定义:

第一种定义方式:列级约束

Create table testc number primary key); ——列级约束

Create table testc number constraint pk_c primary key);—— 给约束命名,其名字:pk_c

 

第二种定义方式(有三种方法):表级约束

Create table testc number , primary key( c ));—— 表级约束

Create table testc numberc1 numberprimary keyc c1);——用表级约束可以实现联合主键,且只能使用表级约束。

l       FK: foreign key(外键)  

外键约束,要求引用另一张表中已经存在的数据. 保证引用的完整性,外键约束,外键的取值是受另一张表中的主键或唯一值的约束,不能够取其他值,只能够引用主键或唯一键的值,被引用的表,叫做parent table(父表),引用方的表叫做child table(子表),想要创建子表,就要先创建父表;记录的插入也是如此,先父表后子表;删除记录,要先删除子表记录,后删除父表记录;要修改记录,如果要修改父表的记录要保证没有被子表引用。要删表时,要先删子表,后删除父表(可以通过使用cascade constraint选项来删除父表)。

创建父表和子表(即级联表):

第一种:Fk 使用“列级约束”来进行建表:

Create table parentc1 number primary key);

Create table childc number primary keyc2 number references parentc1));

第二种:Fk 使用“表级约束”来进行建表:

Create table parent (c1 number primary key)

Create table childc number primary keyc2 numberforeign keyc2references parentc1));

级联删除:

情况一:(如果删除父表中的某条记录,子表相应记录也被删除)

Create table parentid number primary key;

(插入操作:insert into parentidvalues1);

  删除操作:delete from parent where id=1;)

Create table childid number primary keyp_id number references parentid on delete cascade);

情况二:(如果删除父表某条记录,子表相应记录被置空)

Create table parentid number primary key);

Create table chileid number primary keyp_id number references parentidon delete set null);

l       UK:unique key (唯一键)

唯一且为空。唯一约束,允许为空,要求插入的记录中的值是唯一的。

例:create table student(id number ,name varchar2(30) ,address varchar2(30) , primary key(id) , unique(address));

检查(check)约束可以按照指定条件,检查记录的插入。Check中不能使用伪列,不能使用函数,不能引用其他字段。

1create table sal( a1 number  checka1> 1000)

2:创建表mytest表中id必须大于10name字段不能为空。

     Create table mytestid number checkid>10),name varchar2(30) not null);

3create table studentid number primary keyname varchar2(30) not nullage number(2) checkage between 10 and 90);

4create table student( id number primary keyname varchar2(30)sex varchar22checksex in’,’;

l       NN: not null(非空)

这是一个列级约束,在建表时,在数据类型的后面加上not null也就是在插入时不允许插入空值。

例:create table student (id number primary key ,name varchar2(30) not null unique , address varchar(30) );  // 一个字段上可以加多个约束

等价于:create table student (id number primary key ,name varchar2(30) not null, address varchar(30) ,unique( name ) );  // 一个字段上可以加多个约束

 

 

查看表约束:

Select * from user_constraints where table_name=’parent’;

Constraint_type:  c: check   p: primary key  r: foreign key  u: unique

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值