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

相关文章推荐

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:day19 Oracle ------ DDL(CREATE ,ALTER, constraints, PK, FK,UK,NOT NULL,CHECK) rename , truncate
举报原因:
原因补充:

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