day19 Oracle ------ DDL(CREATE ,ALTER, constraints, PK, FK,UK,NOT NULL,CHECK) rename , truncate

原创 2011年01月07日 19:13:00


union 联合查询

case    when   .... then ....  end

decode(dept_id, 41, salary ,1.2, 42, salary *1.4) 函数
DECODE(input_value,value,result[,value,result…][,default_result]);

DDL:
   CREATE  TABLE
   ALTER  TABLE
   约束  constraints
   PK  主键约束  primary key   (唯一且非空)
   FK  外键约束  foreign key  (引用的数据有效)
   UK  唯一约束  unique key   (唯一)
   NOT NULL  非空约束 
   CHECK     检查约束
  
   DATA ENTITY ------  DB  table
   Class Name  ----  Table Name
   属性 -----  字段
   creaet    table      table_name(
                        字段名    字段类型    列级约束,
字段名    字段类型 .....,
表级约束
);

   --pk 用法
   class  Student{
     private  int  id;
private  String name;
private  String passwd;
privae   java.util.Date  birthday;
private  double  score;
   }
   JAVA数据类型 --------------ORACLE数据类型
   int  --------------------- number(6)  999999
   double ------------------- number(6,2)  9999.99
   Date    ------------------  date
   String  ------------------ char(32)  varchar2(32)  "dht"
  
   --列级约束
   create   table    student(
                     id      number  primary key ,
name    varchar2(32),
passwd  varchar2(32),
birthday  date,
score   number(4,2)
   );
  --表级约束
  create   table    student(
                     id      number   ,
name    varchar2(32),
passwd  varchar2(32),
birthday  date,
score   number(4,2),
primary key(id)
   );
 
  --往表中添加数据
  insert  into    student (id,name, birthday, score,passwd )  values (1,'dht',sysdate, 59,'1234');
  insert  into    student  values (1,'dht','1234',sysdate, 59);
  insert  into    student  values (null,'dht','1234',sysdate, 59);
 
  insert  into    student (id,name, birthday, score,passwd ) 
     values (11,'dht',to_date('1982-01-01','yyyy-mm-dd'), 59,'1234');
 
  --uk  unique key
  create   table    student(
                     id      number   unique   ,
name    varchar2(32),
passwd  varchar2(32),
birthday  date,
score   number(4,2)
   );
   --not null 
  create   table    student(
                     id      number   unique   ,
name    varchar2(32)  not null,
passwd  varchar2(32)  not  null,
birthday  date,
score   number(4,2)
   );
   insert into   student (id,name,passwd,birthday,score) values (1,'null','null',sysdate, 60);

  --check 检查约束
  create   table    student(
                    id    number  primary key ,
                    name   varchar2(32)  not null,
                    age   number  check( age >0 )
                    );
    insert  into    student   values (1,'dht' , 19);
  
   --fk  foreign key  外键约束
   create   table  parent(
                   id     number   primary key ,
   name   varchar2(32)  not null
   );
  
create   table   child(
                   id     number   primary key ,
                   name   varchar2(32)  not null,
                   p_id   number   references   parent(id)
                   );   
  
    insert into  parent  values (1,'dht');
insert into  parent  values (2,'lll');

insert into  child  values (1,'dht',2);
insert into  child  values (2,'lll',1);
--error
insert into  child  values (3,'dht',3);
insert into  child  values (4,'lll',4);

   --删除数据
   delete  from   child  where   id = 5;
  
   --  on delete cascade 
   create   table   child(
                   id     number   primary key ,
                   name   varchar2(32)  not null,
                   p_id   number   references   parent(id)  on delete cascade
                   );
   --  on  delete set null
    create   table   child(
                   id     number   primary key ,
                   name   varchar2(32)  not null,
                   p_id   number   references   parent(id)  on delete set null
                   );
  
  
  
  o-o 一对一
  class  Wife{
      private   int id;
  private   String name;
  private   Husband  h;
  }
  class  Husband{
      private  int id;
  private  String name;
  private   Wife  w;
  }
  第一种方式: fk+pk  共享主外键形式
  create    table    wife(
            id       number     primary key,
name     varchar2(32)  not null
            );
  create    table  husband(
            id       number   references   wife(id),
name     varchar2(32)  not null,
primary key(id)
            ); 
  第二种方式: fk+uk
  create   table  husband (
            id     number   primary key ,
name   varchar2(32)  not null,
w_id   number    unique  ,
foreign key  (w_id)  references  wife(id)
            );
 
 
 
  o-m 一对多
  class Person{
    private int id;
private String name;
private  HashSet  cars = new HashSet();
  }
 
  class  Car{
     private int id;
private  String name;
private double  price;
private Person p ;
  }
 
  create  table  person(
                 id    number  primary key,
name  varchar2(32) not null
    );
  create  table  car(
                 id    number   primary key,
name  varchar2(32)  not null,
price  number(6,2),
p_id   number  references   person(id)
);
  --表级约束
  create  table  car(
                 id    number   primary key,
name  varchar2(32)  not null,
price  number(6,2),
p_id   number  ,
foreign key  (p_id)  references   person(id)
);
  insert into   person  values (1,'dht');
  insert  into  car   values (1,'xl',1000, 1);
  insert into  car  values (2,'ca', 2000,1);
 
  select   p.name , c.name, c.price  from  person  p ,  car  c
     where  p.id = c.p_id;
 
  m-m 多对多
  class   student{
    private  int id;
private  String name;
private  HashSet  courses = new  HashSet();
  }
  class   Course{
    private  int id;
private  String  name;
private  HashSet   students  = new  HashSet();
  }
 
  create  table    student(
               id    number  primary key ,
   name   varchar2(32)  not null
  );
  create   table    course(
              id    number  primary key ,
  name  varchar2(32)  not null
  );
  --联合主键
  create  table  student_select_course(
              s_id  number  references   student(id),
  c_id  number  references   course(id),
  primary key(s_id , c_id)
  ); 
 
  补充:  子查询应用
    create  table   s_emp_43    as  select    *    from  s_emp  where dept_id = 43 ;
复制表:
    只复制表结构
create  table   s_emp_43    as  select    *    from  s_emp  where  1 = 2;

  

  
  
   userName:____________
   passwd:______________
   birthday:____________
   num:_________________
  
   [ 查 询 ]
   String  sql = "
   select  *  from  student
      where  1=1  ";
 
   if(userNmme != null){
     sql +" userName like 'dht'  and"
   }
   if(passwd != null){
     sql +" passwd like 'dht'  and  "
   }
  

   sql + "1=1"

  
    alter  table  修改表结构: DDL
-- 利用 alter  table 命令演示修改 test_alter 表结构

   create  table     test_alter(
                     id     number  
);
  

--利用 alter table 命令给表增加列  salary 以及 name 列并赋予默认值
      alter  table   test_alter  add ( salary   number(9,1));
      alter  table   test_alter  add (name  varchar2(32) default 'hehe'); 
   
--利用 alter  tabel  命令来给表中的指定列进行删除操作
       alter  table    test_alter  drop  column  salary ;
      
--利用 alter  table 命令来修改表结构 
      alter  table   test_alter  modify(salary   varchar2(64));  
     
--修改表名  9i 之后
    rename  test_alter to  Mytest;
   
--利用alter table 添加约束
 
create table  parent(
     id  number,
name  varchar2(32)
);

    alter  table   parent   add constraints parent_pk  primary key(id);

    create  table  child(
         id   number ,
         p_id  number
        );

alter  table   child   add constraints child_pk  primary key(id);
alter  table   child   add constraints child_fk   foreign key (p_id)  references  parent(id);

--drop  table
-- truncate  table table_name  ;  删除一张大表

delete from  table_name;



SQL:
    rownum
rowid
分页
update  delete
transaction
sequences
index
view
mysql5.0

oracle数据库表,索引创建实例

-- Create table create table COR_DB_CSDB.CDM_MULTIMEDIAOBJ (   mmid         NUMBER(14),   system...
  • u011024160
  • u011024160
  • 2016年05月19日 16:24
  • 669

Oracle之Check约束实例详解

实例讲解在Oracle中如何使用CHECK约束(创建、启用、禁用和删除)
  • jssg_tzw
  • jssg_tzw
  • 2014年11月10日 21:07
  • 4195

Oracle中添加和删除约束

1、Oracle的约束      如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束。  但如果某个约束作用于多个字段,必须在表级定义约束      在定义约束时可以通...
  • u011606984
  • u011606984
  • 2013年08月27日 15:19
  • 688

Oracle分区表drop和truncate partition索引失效问题

DBA的维护管理中,索引失效是一常见的问题,比如move、ctas、交换分区等都会造成索引的失效,以下实验是验证drop partition、truncate partition分区对本地索引和全局索...
  • e_wsq
  • e_wsq
  • 2014年09月05日 00:26
  • 2508

Oracle主键约束的创建,添加和删除

Oracle主键约束的创建,添加和删除  2010-06-27 10:40:16|  分类:learning |  标签:|字号大中小 订阅 oracle的主键约束添加删除 1、创建表的同时...
  • x252513
  • x252513
  • 2014年07月04日 18:10
  • 1008

ORACLE:加字段、加字段描述、验证字段JSON格式

ORACLE:加字段、加字段说明、验证字段JSON格式SQL> SELECT * FROM T_POINT_GRADE_KG_TEST;GRADE IS_SEND SMS_CONTEN...
  • GoodLuckToThePole
  • GoodLuckToThePole
  • 2017年07月11日 17:53
  • 332

分区truncate操作的介绍及对全局索引和空间释放影响的案例解析

环境:[oracle@localhost ~]$ uname -r 2.6.18-308.el5xen [oracle@localhost ~]$ sqlplus -v SQL*Plus: ...
  • linwaterbin
  • linwaterbin
  • 2013年01月01日 15:42
  • 5948

DDL语句--修改表

修改表是指修改数据库中已经存在的表的定义。修改表比重新定义表简单,不需要重新加载数据,也不会影响正在进行的服务。 MySQL中通过ALTER TABLE语句来修改表,修改表包括修改表名,修改字段数据...
  • u011794238
  • u011794238
  • 2016年03月31日 16:42
  • 3444

ORACLE中通过SQL语句(alter table)来增加、删除、修改字段

添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:al...
  • piaoxuan1987
  • piaoxuan1987
  • 2013年10月04日 13:43
  • 94649

Oracle的DDL语句为什么不能回滚

DDL语句为什么不能回滚        在ITPUB上看到有人提出了这个问题。在Sqlserver或一些其他的数据库中,DDL语句也是可以回滚的,那么Oracle为什么不能回滚DDL...
  • lioncode
  • lioncode
  • 2013年03月11日 21:14
  • 2119
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:day19 Oracle ------ DDL(CREATE ,ALTER, constraints, PK, FK,UK,NOT NULL,CHECK) rename , truncate
举报原因:
原因补充:

(最多只允许输入30个字)