欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle开发学习之Oracle 表的管理

程序员文章站 2022-05-03 20:39:49
oracle 表的管理 常用数据类型: 文本、二进制类型: char(size)...

oracle 表的管理

    常用数据类型:
           文本、二进制类型:
                char(size)                                        定长    最大2000字符    
                                  建议数据长度固定时使用,因为固定长度比较,存取速度比varchar快
                varchar2(size)                               变长    最大4000字符
                                  建议数据长度不固定时使用,因为长度不固定,变长比varchar定长更节约内存空间
                nchar(size)                                     unicode编码类型  定长    最大2000字符
                nvarchar2(size)                            unicode编码类型  变长    最大4000字符
                                  unicode编码类型,一个汉字占用一个字符空间;而char类型占两个字符空间
                ctob(character large object)           字符型大对象  最大8tb
                blob(binary large object)                二进制数据  可以存放图片/音频  最大8tb
                                  一般除非是对文件的安全性要求特别高。否则是不会直接将文件存放到数据库中,一般存放文件对应链接

           数值类型:
                number(p, s)                                    p    整数位(1~38);    s    小数位(-84~127)
                                                                           数据范围:-1.0e-130 ~ 1.0e+126

           日期类型:
                date                                                  默认格式:dd-mon_yyyy
                timestamp(n)                                   n表示指定秒的小数位。(0~9)。取0时与date等价

timestamp(n) n表示指定秒的小数位。(0~9)。取0时与date等价

1、创建表

基本语法:

create table table_name(
    列1  数据类型1,
    列2  数据类型2,
    列3  数据类型3
);

2、修改表

基本语法:

-- 增加字段
    alter table table_nameadd (column_name datatype);
-- 修改字段    alter table table_namemodify (column_name datatype);
-- 删除字段    alter table table_namedrop column (column);
-- 修改表名
    rename table_name to newt_able_name;
-- 删除表
    drop table table_name;

3、表数据的操作

1. 增加
insert into table [(column [,column…])]
values (value [,value…]);

数据类型相同;数据大小在范围内;values中的数据位置与列的位置对应;空值不指定或用null;字符、日期在单引号内

2. 删除
delete from table [where definition]
truncate table table [where definition]

如果没有where条件,则会删除表中所有数据

删除操作针对数据行,如果想删除指定行的某一列。可以使用update语句选择行的将该字段置空删除操作只针对表中数据,不删除表本身。如果需要删除表,则使用drop table语句。

几种删除的特点:

delete:删除表中数据;不破坏表结构;保存删除记录;删除后可以回滚;执行速度较慢

truncate:删除表中数据;不破坏表结构;不保存删除记录;删除后无法恢复;执行速度较快

drop:删除表中数据;删除表结构

delete语句的回滚:

delete 语句在删除记录操作后可以使用 rollback 关键字进行回滚,即数据恢复。

但是,前提是需要使用 savepoint 关键字设置保存点。

sql> select * from students;

    id          name          age
------------------------------------
    01          zhangsan       10

sql> savepoint point01;

savepoint created

sql> delete from students where name='zhangsan';

1 rows deleted

sql> select * from students;

    id          name          age
------------------------------------

sql> rollback to point01;

rollback complete

sql> select * from students;

    id          name          age
------------------------------------
    01          zhangsan       10

3. 修改

update table
       set column_name1=expr1[, column_name expr2…]
       [where definition];

set 语句指定需要更新的列名和要更新的值(可以使用表达式,即数学函数等)

如果没有where条件,则会更新整个表

4. 查询
select [distinct] * | {column1, column2...}
       from table;

distinct:去除重复数据; *:

    *:查询所有列

   以上操作时经常用到的几点:
               1. 设置列的别名时。可以直接在列名后跟别名,也可以使用列名 as 别名。别名可以不带引号,也可以带双引号,但较新版本的oracle中不允许带单引号。
               2. 巧用 nvl 函数处理 null 值问题。基本用法:   nvl(column, default)。意为:当column为null时,返回default,否则返回column本身。
               3. 常用 || 拼接字符串。
               4. to_char(data, format)。日期的格式转换。
                        以:5-may-2018为例。
                                    to_char(data, 'yyyy-mm-dd')   -->  2018-05-01
                                    to_char(data, 'yyyy')                -->   2018
                                    to_char(data, 'yyyy-mm')        -->   2018-05
              5. like 模糊查询。
                        % 表示任意个字符
                        _   表示一个字符
              6. in(value1, value2, value3,...)
                        条件满足其中任意一种
              7. is null   是否为空。
              8. order by          对结果进行排序
                        desc     降序    高-->低
                        asc       升序    低-->高  (默认)