• Oracle学习系列5


    Oracle学习系列5
    ************************************************************************************
    
        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中的记录
            
    
    

     

    
    

     

  • 相关阅读:
    查找代码行数和查看域名版本
    iOS10里的通知与推送
    计算有多少个岛屿
    java.lang.NoClassDefFoundError: Could not initialize class com.haoyao.shop.common.XXX
    Windows 版本Mongodb 启动
    安装第三方库 报错Python version 2.7 required, which was not found in the registry
    Python 爬虫 报错 403 HTTP Error 403: Forbidden
    廖雪峰 练习 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
    利用Python 2.7打印杨辉三角
    MAVEN实战 读书笔记 第二章
  • 原文地址:https://www.cnblogs.com/askDing/p/5467403.html
Copyright © 2020-2023  润新知