Oracle表管理以及约束笔记
2014-08-25来源:易贤网

[导读]最近一直在学习Oracle数据库。这几天整理了下 表管理 以及约束的笔记 给大家分享下。

最近一直在学习Oracle数据库。这几天整理了下 表管理 以及约束的笔记 给大家分享下。

表管理

*!常用的数据类型!*

varchar/varchar2 表示一个字符串

number/ number(n): 表示一个整数,数字长度是n,可以使用INT

\ number(m,n): 表示一个小数,数字小数位长度是n,整数长度是m-n,可以使用FLOAT代替

date 表示日期类型,日期要按照标准日期格式进行存放。

clob 大对象,表示大文本数据,一般可以存放4G的文本。

blob 大对象,表示二进制数据,最大可以存放4G,例如:电影、歌曲、图片

·表的建立。

1·复制一张表

create table 表名 as select * from emp; ----复制emp表中的结构和内容

create table 表名 as select * from emp where 1=2;----复制结构不复制内容

2·创建一张表。create 命令

________________范例____________________

create table person

(

pid varchar2(18),

name varchar2(200),

age number(3),

birthday date,

sex varchar2(2)default '男'

);

________________________________________

·删除表

drop 删除表。

·修改表(了解) 一般很少修改表 在IBM 的DB2中根本没有alter指令

*!表中存在大量记录,删除的话 是不是很麻烦?!* 有命令:

·增加列:alter指令+table+表名称+add

__________________________范例__________________________________

alter table person add(address varchar(200) default '暂无地址');

________________________________________________________________

·修改列。alter指令+table+表名称+modify+(列信息);

·表重命名(Oracle独有的命令)

rename … to … 只能在Oracle中使用

·截断表

清空一张表 不能回滚,

需要截断表语法:

truncate +表明

############约束############

主要分为五种:

·主键约束:表示唯一的表示,本身不能为空。 *例如*:身份证编号、

·唯一约束:在以个表中只允许建立以个主键约束而其他不想出现重复的值的话,则可以使用唯一约束。

·检查约束:检查一个列的内容是否合法。 *例如*:性别只能是男、女、中性。

·非空约束,就好像姓名这样的字段就不能为空。

·外间约束,在两张表中间进行约束操作。

1·主键约束(primary key)

·一般在ID上使用,而且本身已经默认内容不能为空。可以在建立表的时候指定。

_________________________范例__________________________________

create table person

(

pid varchar2(18) primary key,

name varchar2(200),

age number(3),

birthday date,

sex varchar2(2)default '男'

);

________________________________________________________________

·可以用constraint来指定约束的名称

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200),

age number(3),

birthday date,

sex varchar2(2)default '男',

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

2·非空约束(not null)

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2)default '男',

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

3·唯一约束(unique)

表示一个字段中的内容是唯一的,其他列不允许重复。

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2) default '男',

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

4·检查约束(check)

使用检查约束来判断一个列中插入的内容是否合法、例如年龄的取值范围

_________________________范例__________________________________

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null check(age between 0 and 150),

birthday date,

sex varchar2(2) default '男' check(sex in ('男','女','中性')),

constraint person_pid_pk primary key (pid)

);

________________________________________________________________

上面语句 优化自定义 约束名称

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2) default '男' ,

constraint person_pid_pk primary key (pid),

constraint person_name_uk unique(name),

constraint person_age_ck check(age between 0 and 150),

constraint person_sex_ck check(sex in ('男','女','中性'))

);_________________________________________________

5·主-外键约束(foreign key)

之前的约束都是针对一张表的约束,这个主-外键约束是针对两张表的约束。

范例:书这个表中的一本书属于人这个表中的一个人。

(1)·首先插入两张表。

drop table person;

drop table book;

create table person

(

pid varchar2(18) ,

name varchar2(200) not null ,

age number(3) not null ,

birthday date,

sex varchar2(2) default '男' ,

constraint person_pid_pk primary key (pid),

constraint person_name_uk unique(name),

constraint person_age_ck check(age between 0 and 150),

constraint person_sex_ck check(sex in ('男','女','中性'))

);

create table book

(

bid number primary key not null ,

bname varchar(30),

bprice number(5,2),pid varchar2(18)

);

(2)·插入完成两张表之后,下一步插入一些数据。

insert into book(bid ,bname ,bprice,pid) values ( 1,'Java Se' ,'59','111111');

insert into person (PID,NAME,AGE,BIRTHDAY,SEX) values ('111111','张三',30,to_date('1987-12-27','yyyy-mm-

dd'),'女');

(3)·插入以下数据

insert into book(bid ,bname ,bprice,pid) values ( 1,'Java Se' ,'59','000000');

*!注意!*此编号的人根本不存在。数据也就不应该插入。

*!注意!*此时应该用到主-外键关联,关联之后 字表 的数据跟随着 父表 的数据内容

主-外键语法:foreign key(字段) reference 表名(字段)后者表作为父表 后者表明是指定字段作为父表的字

段 book 表的创建有所改变,变成如下

drop table book;

create table book

(

bid number primary key not null ,

bname varchar(30),

bprice number(5,2),

pid varchar2(18) ,

constraint person_book_pid_fk foreign key(pid) references person(pid)

);

再插入数据

此时就不会出现找不到对应数据的情况。这就是主外键。

·在字表中设置的外键在父表中必须是主键。

·删除时应该先删除子表,再删除父表。

drop table book; book表是父表。

drop table person; person表是字表。

可以使用强制删除手段,但这个做法一般不使用。

________范例______________________

drop table book cascade constraint;不管约束 直接删除。

__________________________________

·级联删除

建立主外键连接的时候可以加上 on delete cascade 删的时候连同字表的对应数据一起删除掉。

这是外键的完整语法。

############修改约束#######(了解)##

·添加约束

alter 表名称 add constraint 约束名称 约束类型(字段);

*!重点!* ROWNUM

rownum:表示行号、实际上这此是一个列,但这个列是一个伪列,此列可以在每张表中出现。

更多信息请查看IT技术专栏

推荐信息