Oracle学习系列5
************************************************************************************

    ,掌握表的建立与删除
        了解Oracle中的主要数据类型

    ,约束的分类和使用
    ,表的关联:交,并,补
    ,掌握ROWNUM伪列的作用
    ,掌握序列的使用
    ,掌握视图的作用
    ,了解同义词,用户管理,权限分配与撤销,数据库的备份
------------------------------------------------------------------

创建和管理表(重点):

    常用的数据类型:

            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 =) ;//仅复制表结构

        ex:创建表person
            create table person(

                UID  varchar(),
                name  varchar(),
                age   number(),
                birthday  date,

                sex     varchar()  default '男'
                ) ;

            ex:向表中增加数据:
                insert into person(UID,name,age,birthday,sex)
                    values(,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()  default '暂无地址') ;

                   alter table tab_name  modify (col1 type default 默认值,
                                                col2 type default 默认值,
                                                ...
                                                coln type default 默认值

                            ) ;  //修改列

                    alter table person modify (name varchar2() 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()

                ) ;

                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 ;        

************************************************************************************

约束(重点):

        分类:
            ,主键约束 -->是唯一的表示,本身不能为空,如身份证
            ,唯一约束 -->在一个表中只能建立一个主键约束,其他列不想出现重复值可使用唯一性约束
            ,非空约束 -->列的内容不能为空
            ,检查约束 -->检查一个列的内容是否合法
            ,外键约束 -->在两张表中进行的约束操作
---------------------------------------------------------------------------
    ,主键约束:

        create table person(

                UID  varchar()  primay key,     //主键约束
                name  varchar(),
                age   number(),
                birthday  date,
                sex     varchar()  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主键约束名称

                ) ;

        */

---------------------------------------------------------------------------
,唯一约束 :unique

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

        create table person(

                UID      varchar()
                name       varchar()  unique  not null,  //非空约束,唯一约束
                age      number() not null,      //非空约束
                birthday  date,
                sex       varchar()  default '男',
                constraint person_uid_pk primary key(uid)  //指定uid主键约束名称

               <constraint person_name_uk unique(name)  >  //指定name唯一约束名称

                ) ;

---------------------------------------------------------------------------            

,非空约束: not null

            表示一个字段的内容不允许为空,即插入数据时必须插入该字段的值

        create table person(

                UID      varchar()
                name       varchar()  not null,  //非空约束
                age      number() not null,      //非空约束
                birthday  date,
                sex       varchar()  default '男',
                constraint person_uid_pk primary key(uid)  //指定uid主键约束名称
                 <constraint person_name_nk not null(name)  >  //指定name非空约束名称

                ) ;

---------------------------------------------------------------------------            

,检查约束                

            create table person(

                UID      varchar()
                name       varchar()  not null,  //非空约束
                age      number() not  and ),   //非空约束,检查约束
                birthday  date,
                sex       varchar()  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检查约束名称

                ) ;

---------------------------------------------------------------------------            

,外键约束(foreign key):

        create table person(

                UID      varchar()
                name       varchar()  not null,  //非空约束
                age      number() not  and ),   //非空约束,检查约束
                birthday  date,
                sex       varchar()  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(),
                    bprice    number(,)
                    uid     varchar()

            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(,to_date('1994-04-09','yyyy-mm-dd'),'女');        

        insert into book (bid,bname,bprice)
            values(,');
    级联删除:

        create table book(

                    bid    number  primary key not null,
                    bname   varchar(),
                    bprice    number(,)
                    uid     varchar()

            constraint person_book_uid_fk  foreign key(uid)  references person(uid) on delete cascade  //外键约束,级联删除

        );//创建book表

        delete from person '; //删除一条记录,同时删除子表book中的记录
        


Oracle学习系列5的更多相关文章

  1. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  2. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

  3. Oracle学习系列6

    Oracle学习系列6 ************************************************************************************ 删除约 ...

  4. Oracle学习系列4

    Oracle学习系列4 ************************************************************************************ 数据库 ...

  5. Oracle学习系列3

    Oracle学习系列3 ************************************************************************************ 多表查 ...

  6. Oracle学习系列1

    两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 300 ; set pag ...

  7. oracle学习系列之四 (视图)

    视图视图是数据库中特有的对象.视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.可以利用视图进行查询,插入,更新和删除数据.Oracle有如下四种视图(关系视图,内嵌视图, ...

  8. oracle学习系列之三 (约束)

    主键约束:外键约束:唯一性约束:检查约束:默认值约束 -——————五大约束 一. 主键约束: --创建表的主键约束  create table student (student_id number ...

  9. Oracle 学习系列之二(会话与事务级临时表和dual表 )

    一. 会话临时表 --创建会话临时表create global temporary table tmp_user_session(user_id int, user_name varchar2(20) ...

随机推荐

  1. linux复习

    linux的特点           - 免费的/开源           - 支持多线程/多用户           - 安全性好           - 对内存和文件管理优越       关机命令 ...

  2. jQuery改变兄弟元素样式,及:not([class="allclassname"])筛选小结

    以前一直对于jquery感到很畏惧,最近做点击图表变色,将其他元素图片复位的小需求,总结了一下一点小心得. 主要两点是:1.将所有兄弟元素的样式设置为一样,对于子元素的遍历: 2.对于特殊不需要变化的 ...

  3. python + selenium相关事件和元素定位

    女友由于工作上的失误,将公司RDM中的某一字段的2000条数据给删除了.....就算是重新添加字段,但是与其他数据的关联性已经不在了.由于每天的数据修改量大,有关部门不愿意恢复数据库,因此只能一条条的 ...

  4. ssh和putty

    SH(Secure Shell的缩写),由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程 ...

  5. 51nod1693 水群

    题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的 ...

  6. 20169212《Linux内核原理与分析》第三周作业

    最近,深入的阅读了<Linux内核设计与实现>这本书,以下是碰到的一些问题,在此和大家进行交流学习. 碰到的问题 1.为什么不要在linux内核中使用浮点数(这个问题由于书上讲的不够明白, ...

  7. jquery 获取下拉框值与select text

    下面先介绍了很多jquery获取select属性的方法,同时后面的实例我们讲的是jquery 获取下拉框值与select text代码. 下面先介绍了很多jquery获取select属性的方法,同时后 ...

  8. git中Member设置为Developer也可以的

    之前说Member至少要设置为master,或者owner才行,昨天发现依然可以设置为developer. 因为有个位置可以设置Developers can push,√上就可以了. 比如,我不希望大 ...

  9. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

  10. [转载]四大Java EE容器

    转载自: https://my.oschina.net/diedai/blog/271367 现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassfish等等.下面对这 ...