明留

将何所持,将何所往?此刻惜之!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

表的创建及管理
   对于数据库而言实际上每一张表都表示的是一个数据库对象,而在数据库对象值的就是DDL定义的所有操作,例如:表、视图、序列、约束等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法:
        .创建对象:Create 对象名称...;
  .删除对象:Drop 对象名称...;
  .修改对象:Alter 对象名称...;
1、常用的数据字段
No      数据类型              描述
1      varchar(n)   其中n表示字符串所能保存的最大长度,基本上200个左右的内容
2      number(n)     表示最多为n位整数,有时候可以使用INT代替
3      number(n,m)   其中m为小数位,n-m为整数位,有时候也可以使用Float代替
4      date                 存放日期-时间
5      clob(大文本)   可以存储海量文字(容量为4G),例如:<<三国>>、<<红楼梦>>
6      blob(大对象)       存放二进制数据(电影、音乐、图片、文字)
综上:一般在开发之中使用最多的:varchar\number\date\clob,对于blob字段一般使用较少,首先blob可以存放4G的二进制数据,但是存放了,一是数据库过于庞大,二是读取不方便;其实可以用另一个替代。
表的创建:Create table 表名称(
       字段1    数据类型    [default 默认值],
    字段2    数据类型    [default 默认值],
    ... ...
    字段n    数据类型    [default 默认值]
    );
范例:Create table student ( name   varchar(50)   default '无名', age    number(3), birthday  Date Default SYSDATE,
content  clob );表创建成功后,向表中增加数据:
insert into student(name,age,birthday,content) values('张三',20,TO_DATE('1990-08-12'),'一个好人');
insert into student(age,content) values(20,'一个好人');表的创建属于数据库对象的创建,所以使用的是Create语法。
---------------------
表的复制语法: create table 复制表 as 子查询;
范例:create table emp2 as select * from emp;
范例:现在要求只复制表的结构,不要数据,只需写一个满足不了的条件即可。
  Create table empNull select * from emp where 1=2;
以上这些语法只是Oracle数据库特有的操作,其他的数据库有些区别。
---------------------
为表重命名
在Oracle之中,所有的数据实际上都是通过数据字典保存,而在Oracle中,提供了三种类型的数据字典,最常用的是:dba_、user_,所以下面查询一个user_tables数据字典:select * from user_tables;
也就是说Oracle中的所有的数据都是按照文件保存的,那么所有的内容都会在数据字典中注册,既然这样,所谓的修改表名称
Rename 原表名 to 新表名;
---------------------
截断表
  曾经用过删除表数据的操作,使用的是Delete操作,但是这种删除操作本身有一个特点,即:可以进行事务的回滚,也就是说删除之后并不会立刻释放数据的资源,如果现在希望彻底释放掉一张表所占用的全部资源(表空间、索引等)就可以使用截断表的语法,此语法如下:Truncate table 表名;(oralce特有的语法操作)。
---------------------
表的删除
 表的删除操作指的是数据库对象的删除,既然是删除则使用Drop语句,删除表的语法如下:
   drop  table 表名;
---------------------
Oracle 的新特性闪回技术
  在10g之后,为了预防用户的误删表操作,专门提供了回收站的功能,用户所删除的表默认情况下会在一个回收站之中保存,而用户也可以通过回收站,进行表的恢复,因此称为闪回(flashback);
范例:查看回收站
    show RECYCLEBIN;这个时候可以发现所有已经删除的表都在回收站之中保存,那么下面就可以使用如下的语法恢复表: FlashBack table 表 to BEFORE DROP;
范例:恢复myemp表
    flashback table myemp to before drop;当然,现在也可以直接删除掉回收站中的一些数据,语法如下:purge table 表名;
范例:删除回收站中的student表
    purge table student;
范例:清空回收站
    purge RECYCLEBIN;
 如果现在希望删除一张表,而又不希望其进入到回收站之中,则可以在删除的时候增加purge。
范例:drop table 表名 purge;(10g后有的闪回技术
--------------------
修改表的结构实际上就是数据库对象的修改操作,使用Alter指令完成:例如有一张表:
Create table member(
mid  number, name varchar(10) );
 现在要想对该表进行增加字段,有以下语法完成:
 Alter table 表名 Add(列名 数据类型 [default 默认值][, 列名 数据类型 [default 默认值],...]);
范例:为member表增加字段
    Alter table  member add( age  number(3), birthday date default SYSDATE);
如果增加的数据列没有默认值,则所有已有的数据的列的内容都是null,而如果增加的列指定了default默认值的话,则所有已有的数据列都是没有设置的默认值。
同时也可以修改已有的表结构,此时语法如下:
    Alter table 表名 modify(列名 数据类型 [default 默认值] [,列名 数据类型 [default 默认值],...]);
范例:将name字段的默认值定义为无名
    Alter table member modify( name varchar(10) default '无名');
对于平台受限的数据库来说,性能最好的是Db2,而对于跨平台的数据库来说,性能最好的是Oracle,同时在db2中是不允许修改表结构的,即:表建立完成后就不能修改了,所以在开发之中尽可能不要去修改表结构。
    提醒:关于软件项目开发的基本流程:
     1、获取需求--->从客户中获取需求(软件销售)
  2、需求分析--->根据客户需求
  3、业务分析,数据库及接口设计;-->数据表设计
  4、编码实现-->业务梳理
  5、软件测试
  6、软件培训及项目维护
----------------------------------------------
编写数据库脚本的格式要求如下:
    1、脚本文件名称的后缀必须是“.sql“;
 2、先删除相应的数据表;
    例如:drop table nation purge;
 3、编写创建表的语句;
    例如:Create table nation( name     varchar(10));
 4、增加测试数据;
    例如:insert into nation(name) values('中国');
  insert into nation(name) values('美国');
  insert into nation(name) values('巴西');
  insert into nation(name) values('荷兰');
 5、事务提交
    例如:commit;
----------------------------------------------

posted on 2012-06-25 22:03  明留  阅读(4670)  评论(0编辑  收藏  举报