oracle表管理

来源:互联网 发布:mac开机后怎么切换系统 编辑:程序博客网 时间:2024/05/31 18:36

表管理

第一讲

1.表名和列名的命名规则
   
   必须以字母开头
   长度不能超过30字符
   不能使用oracle的保留字
   只能使用如下字符 a-z, A-Z,0-9,$,#等


2.oracle支持的数据类型

  ①char 定长 最大2000字符
    例:char(10) ‘小米’前四个字符放两个汉字,后添6个空格补全
    优点:查询效率高 
    缺点:浪费空间
  ②varchar2(10) 变长  最大字符为4000
    例: varchar2(10) ‘小明’ 前四个字符放两个汉字,这样可以节省空间

  ③clob(character large object) 字符型大对象 最大4G
    数据库中保存文件使用的类型
    clob使用char来保存数据 如:保存XML文档
    blob使用二进制保存数据 如:保存位图

   JAVA里面对CLOB的操作
  在绝大多数情况下,使用2种方法使用CLOB

  Ⅰ 相对比较小的,可以用String进行直接操作,把CLOB看成字符串类型即可

  Ⅱ 如果比较大,可以用 getAsciiStream 或者 getUnicodeStream 以及对应的 setAsciiStream 和 setUnicodeStream 即可

  读取数据

  ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1"); 

  rs.next(); 

  Reader reader = rs.getCharacterStream(2);

  插入数据

  PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)"); 

  pstmt.setInt(1, 1); 

  pstmt.setString(2, htmlStr); 

  pstmt.executeUpdate();

  更新数据

  Statement stmt = con.createStatement(); 

  ResultSet rs = stmt.executeQuery("SELECT * FROM test1"); 

  rs.next(); 

  Clob clob = rs.getClob(2); 

  long pos = clob.position("dog", 1); 

  clob.setString(1, "cat", len, 3); 

  rs.updateClob(2, clob); 

  rs.updateRow();

 

3.数字型

   number 范围为-10的38次方 到10的38次方

   number(5,2)
   表示一个小数有5位有效数,2位小数
   范围-999.99到999.99

   number(5)
   表示一个5为整数
   范围-99999到99999


4.日期类型

   date  包括年月日和时分秒

   timestamp 这是oracle9i 对date数据类型的扩展(精度更大)

5.图片类型

    blob 二进制数据 可以存放图片/声音 4G
    
    说明:一般情况下图片、声音和视频不往数据库里存放,通常是把其放在一个文件夹中,
     往数据库里存放一个路径,除非图片声音保密性高就存入数据库中。

6.建表

  --学生表
    create table student(    --表名student
    xh  number(4),    --学号
    xm  varchar2(20), --姓名
    sex char(2),      --性别
    birthday date,    --出生日期
    sal  number(7,2)  --奖学金
 );


7.修改表

  ①添加一个字段
   alter table student add(classid number(2));

  ②修改字段长段
   alter table student modify (xm varchar2(30));

  ③修改字段的类型/名字(不能有数据)
   alter table student modify (xm char(30));

  ④删除一个字段
   alter table student drop column sal;

  ⑤修改表的名字
   rename student to stu;

  ⑥删除表
   drop  table student;
  
  ⑦所有字段都插入(添加数据)
    
    insert into student alues(‘A001’,‘张三’,‘01-5月-05’,10);

    oracle 中默认的日期格式‘DD-MON-YY’

    改日期的默认格式
    alter session set nls_date_format = 'yyyy-mm-dd';
    修改后可以按熟悉的格式添加日期类型:
    insert into student values(‘A002’,‘李四’,‘1905-05-06’,10);

   ⑧插入部分字段
     insert into student(xh,xm,sex) values (‘A003’,‘JOHN’,‘女’);
     
     插入部分字段并不定每次都能成功,比如说某些字段不能为空,必须给值

   ⑨插入空值

     insert into student(xh,xm,sex,birthday)
     values(‘A004’,‘MARTIN’,‘男’,null);

     --查询生日为空的记录
     select * from student where birthday is null;
     --查询生日不为空的记录
     select * from student where birthday is not null;

   ⑩修改一个字段
     update student set  sex = '女' where xh = 'A001';

   ⑩+①修改多个字段
     update student set sex = '男',birthday = ‘1980-04-01’
     where xh = ‘A001’;

   ⑩+②修改含有null值的数据
     update student set birthday is null where xh = ‘A001';

   ⑩+③删除数据
      delete from student;--删除所有记录,表结构还在,写日志(sava point),
                           --可以恢复,速度慢
    
      --回滚
      savepoint aa;
      delete from student;
      rollback to aa;
      

      drop table student;--删除表的结构和数据

      delete from student where xh =‘A001’;--删除一条记录

      truncate table student; --删除表中所有数据,表结构还在,不写日志
                               --无法找回删除的记录,速度快

0 0