• 二、Oracle数据类型


    二、Oracle表的数据类型,数据库创建

    1. Oracle的数据类型

    字符型

    char,定长,字长2000个字符

    例子:char(10) "小明"前4个字符放小明,后6个字符空格补全。

    优点:查询效率极高,适用于定长字段。已知该字段是定长的,并且经常被作为where条件查询,如身份证号、学号等。

    缺点:使用不当会导致占用额外的空间。

    varchar2(20),变长,最大4000字符

    例子:varchar2(20)"小明",Oracle只分配4个字符,这样可以节省空间。

    优点:节省空间。

    缺点:由于是定长,查询时效率没有char高,因为需要一个一个字符的比较。

    clob(char large object),字符大对象,最大4G

    数字型:

    number,范围-10的38次方——10的38次方,可以表示整数,也可以表示小数。

    例子:number(5,2) 表示一个有5位有效数,2为位数。范围-999.99——999.99

    number(5) 表示一个5位整数,范围-99999——99999

    日期类型:

    date,包含年月日和时分秒

    timestamp,这是oracle9i对数据类型的扩展

    图片:

    blob,二进制数据,可以存放图片,声音,视频。 最大4G

    1. 建表

    表空间:存放数据表的空间,为了便于管理。

    建立一张学生表

    create table student( --表明,student

    xh number(4), --学号

    name varchar2(20), --姓名

    sex char(2), --性别

    birthday date, --生日

    sal number(7,2) –奖学金

    );

    建立一张班级表

    create table class(

    classId number(2),

    className varchar2(20)

    );

    1. 修改表

    添加一个字段:

    alter table student add (classId number(2));

    修改字段的长度

    alter table student modify (name varchar2(30));

    修改字段的类型,或是名字(不能有数据)

    alter table student modify (name char(30));

    删除一个字段

    alter table student drop column sal;

    修改表的名字

    rename student to student2;

    删除表

    drop table student;

    1. 添加数据

    插入全部字段

    insert into student values('A001', '张三', '男', '01-5月-05', 500.5, 11);

    说明:在Oracle中默认日期格式是'DD-MON-YY', dd日子(天),mon月份,yy2位的年份(4位的也行),例如:'09-6月-99',表示1999年6月9日

    修改日期的默认格式:

    alter session set nls_date_format = 'yyyy-mm-dd';

    修改后,就可以用熟悉的格式添加日期了:

    insert into student values('A002', '李四', '男', '1995-05-06',500.05, 10);

    插入部分字段

    insert into students(xh, name, sex) values('A003', 'Lucy', '女');

    插入空值

    insert into student(xh, name, sex, birthday) values('A004', 'Martin', '男', null);

    插入空值后查询:

    select * from student where birthday is null; (与其他数据库不同的地方)

    空值:is null

    非空值:is not null

    1. 修改数据

    修改一个字段

    update student set sex='女' where xh='A001';

    修改多个字段

    update student set sex='男',birthday='1984-03-12' were xh='A001';

    修改含有null值的数据

    条件:is null , is not null

    1. 删除数据

    删除了所有的记录,但是表结构还在,写日志,可以恢复的,速度慢

    delete from student;

    删除表的结构和数据

    drop table student;

    删除一条记录

    delete from student where xh='A001';

    删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快

    truncate table student;

    说明:

    保存一个回滚点

    savepoint aa;

    如果用delete删除数据后可以回滚到回滚点

    rollback to aa; 数据就又恢复到aa点的状态

  • 相关阅读:
    mysql更新语句中的safe_mode
    MySQL数据类型详解
    刚更新完版本就炸了:java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
    微信支付分创建支付分订单+签名+验签
    根据序列号加密生产4*4的密码,如:X9PL-TERY-NOZN-GMF1
    对称加密:AES
    MySQL按中文排序
    腾讯云COS分片上传
    Linux中jar包指定端口、配置文件启动并记录日志
    Java8新特性两个关联集合合并成父子级
  • 原文地址:https://www.cnblogs.com/fanyong/p/2888223.html
Copyright © 2020-2023  润新知