标题 | Oracle表管理以及约束笔记 |
内容 | [导读]最近一直在学习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:表示行号、实际上这此是一个列,但这个列是一个伪列,此列可以在每张表中出现。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。