当前位置:Gxlcms > 数据库问题 > Oracle学习系列5

Oracle学习系列5

时间:2021-07-01 10:21:17 帮助过:3人阅读

************************************************************************************ 1,掌握表的建立与删除 了解Oracle中的主要数据类型 2,约束的分类和使用 3,表的关联:交,并,补 4,掌握ROWNUM伪列的作用 5,掌握序列的使用 6,掌握视图的作用 7,了解同义词,用户管理,权限分配与撤销,数据库的备份 ------------------------------------------------------------------ 创建和管理表(重点): 常用的数据类型: number[int ,float], varchar ,date ,clob, blob, 表的建立: create table tab_name( col1 type [defalut 默认值], col2 type [default 默认值], ... coln type [default 默认值] ) ; create table tab_name as (子查询) ;//赋值表 create table tab_name as (select * from emp where 1=2) ;//仅复制表结构 ex:创建表person create table person( UID varchar(18), name varchar(200), age number(3), birthday date, sex varchar(2) default ) ; ex:向表中增加数据: insert into person(UID,name,age,birthday,sex) values(111111111111111111,keivn,30,to_date(1994-04-09,yyyy-mm-dd),); ex:表的删除: drop table tab_name ; eg:drop table person; ex:修改表结构:增加列,修改列 alter table tab_name add (col1 type default 默认值, col2 type default 默认值, ... coln type default 默认值 ) ; //增加列 alter table person add (address varchar(200) default 暂无地址) ; alter table tab_name modify (col1 type default 默认值, col2 type default 默认值, ... coln type default 默认值 ) ; //修改列 alter table person modify (name varchar2(20) default 无名氏); /** 若数据库中对应字段里有一个很长的数据,则无法将表长度缩小 */ ex:为表重命名 在oracle中提供了rename命令,对表进行重新命名。 rename tab_name_old to tab_name_new ; ex: rename person to tperson ; ex:截断表 若要清空一张表的数据,同时不需要回滚,可以立即释放资源就要使用 截断表的语法: truncate table tab_name ; ex: truncate table tperson ; //清空表数据 rollback ; //使用rollback无效 ************************************************************************************ 思考题: 现有一张国家表,里面有字段:中国,美国,巴西,荷兰, 现要求通过查询实现对战功能: 中国 ----> 美国 中国 ----> 巴西 中国 ----> 荷兰 美国 ----> 中国 美国 ----> 巴西 美国 ----> 荷兰 问:此程序该如何实现? 分析:使用笛卡尔积完成 create table national( name varchar(30) ) ; insert into national(name) values(中国) ; insert into national(name) values(美国) ; insert into national(name) values(巴西) ; insert into national(name) values(荷兰) ; select t1.name ,t2.name from national t1, national t2 where t1.name <>t2.name ; ************************************************************************************ 约束(重点): 分类: 1,主键约束 -->是唯一的表示,本身不能为空,如身份证 2,唯一约束 -->在一个表中只能建立一个主键约束,其他列不想出现重复值可使用唯一性约束 3,非空约束 -->列的内容不能为空 4,检查约束 -->检查一个列的内容是否合法 5,外键约束 -->在两张表中进行的约束操作 --------------------------------------------------------------------------- 1,主键约束: create table person( UID varchar(18) primay key, //主键约束 name varchar(200), age number(3), birthday date, sex varchar(2) default ) ; /** create table person( UID varchar(18) name varchar(200), age number(3), birthday date, sex varchar(2) default ‘男‘, constraint person_uid_pk primary key(uid) //指定uid主键约束名称 ) ; */ --------------------------------------------------------------------------- 2,唯一约束 :unique 表示一个字段中的内容是唯一的,其他列不允许重复 create table person( UID varchar(18) name varchar(200) unique not null, //非空约束,唯一约束 age number(3) not null, //非空约束 birthday date, sex varchar(2) default , constraint person_uid_pk primary key(uid) //指定uid主键约束名称 <constraint person_name_uk unique(name) > //指定name唯一约束名称 ) ; --------------------------------------------------------------------------- 3,非空约束: not null 表示一个字段的内容不允许为空,即插入数据时必须插入该字段的值 create table person( UID varchar(18) name varchar(200) not null, //非空约束 age number(3) not null, //非空约束 birthday date, sex varchar(2) default , constraint person_uid_pk primary key(uid) //指定uid主键约束名称 <constraint person_name_nk not null(name) > //指定name非空约束名称 ) ; --------------------------------------------------------------------------- 4,检查约束 create table person( UID varchar(18) name varchar(200) not null, //非空约束 age number(3) not null check( age between 0 and 150), //非空约束,检查约束 birthday date, sex varchar(2) default check(sex in(,,‘中’)), //检查约束 constraint person_uid_pk primary key(uid) //指定uid主键约束名称 <constraint person_name_ck check(name) > //指定name检查约束名称 <constraint person_sex_ck check(sex) > //指定sex检查约束名称 ) ; --------------------------------------------------------------------------- 5,外键约束(foreign key): create table person( UID varchar(18) name varchar(200) not null, //非空约束 age number(3) not null check( age between 0 and 150), //非空约束,检查约束 birthday date, sex varchar(2) default check(sex in(,,‘中’)), //检查约束 constraint person_uid_pk primary key(uid) //指定uid主键约束名称 <constraint person_name_ck check(name) > //指定name检查约束名称 <constraint person_sex_ck check(sex) > //指定sex检查约束名称 ) ;//创建person表 create table book( bid number primary key not null, bname varchar(30), bprice number(5,2) uid varchar(18) constraint person_book_uid_fk foreign key(uid) references person(uid) //外键约束 );//创建book表 /** 1,在子表book中设置的外键在父表person中必须是主键 2,删除时,先删除子表book,再删除父表person: drop table book; drop table person ; */ ex:插入测试数据: insert into person(UID,name,age,birthday,sex) values(111111111111111111,keivn,30,to_date(1994-04-09,yyyy-mm-dd),); insert into book (bid,bname,bprice) values(1,java,89.8,1111111111111111111);
    级联删除:
    
        create table book(
            
                
                    bid    number  primary key not null,
                    bname   varchar(30),
                    bprice    number(5,2)
                    uid     varchar(18)
                    
                    
            constraint person_book_uid_fk  foreign key(uid)  references person(uid) on delete cascade  //外键约束,级联删除
                
        );//创建book表
        
        delete from person where pid =1111111111111; //删除一条记录,同时删除子表book中的记录
        

 



 

Oracle学习系列5

标签:

人气教程排行