首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle创设表语句注意事项

2012-09-10 
oracle创建表语句注意事项创建与管理表数据库中对象:有表、视图、索引、序列、同义词等。表:基本的数据存储的集

oracle创建表语句注意事项

创建与管理表  数据库中对象:有表、视图、索引、序列、同义词等。表:基本的数据存储的集合,由行与列组成视图:从表中抽出的逻辑上相关的数据集合。序列: 提供有规律的数值索引:提高查询效率同义词:给对象起的别名。Oracle数据库中的表1、用户自定义表表名和列名的命名规范:?必须以字母开头?必须在 1–30 个字符之间?必须只能包含 A–Z, a–z, 0–9, _, $, 和 #?必须不能和用户定义的其他对象重名 ?必须不能是Oracle 的保留字创建表必须具备:? 必须具备:?CREATE TABLE权限?存储空间?必须指定:?表名?列名, 数据类型, 尺寸创建表的语法      CREATE TABLE [schema.]table    (column datatype [DEFAULT expr][, ...]);数据类型如下:数据类型描述VARCHAR2(size)可变长字符数据CHAR(size)  定长字符数据NUMBER(p,s)  可变长数值数据DATE 日期型数据LONG 可变长字符数据,最大可达到2GCLOB字符数据,最大可达到4GRAW (LONG RAW) 原始的二进制数据BLOB二进制数据,最大可达到4G BFILE存储外部文件的二进制数据,最大可达到4G ROWID行地址   创建表的分析:       在数据库中必须遵循一定的规范 这些规范称为范式.目前关系数据库有6种方式,数据库只需要满足3NF即可,需要使用范式对数据库中表进行处理.  下面我以学生信息为例分析:   学号,学生姓名,出生日期,学生性别,所属班级,所属院系,系主任姓名,课程编号,成绩.  分析:   学号:sid          数据类型 varchar2   学生姓名:sname   出生日期:sbirth    date   学生性别:ssex          所属班级:sclass   所属院系:sdep   系主任姓名:dname   课程编号:cid   成绩 grade         number(5,2)创建学生信息表根据如上信息可以创建存储的表 学生信息表  包含医以上的全部信息,但非规范。分析设计过程:       必须满足3NF范式 但前提必须满足1,2NF1、属性不可再分(1NF) ==?一对多关系学生信息表:Sid,sname,sbirth,ssex,sclass,sdep,dname成绩表: sid cid grade2、(前提必须满足1NF )表中的所有非主属性都完全依赖于任一候选键。注:这里说的不是部分依赖Sid->Snamesid->sbirthsid->ssexsid->sclass sdep->dname--?其他普通属性不应当存在部分依赖于主要属性->此普通属性应当被分离到新的表中去s(sid,sname,sbirth,ssex,sclass,sdep)d(sdep,dname)g(sid,cid,grade)3、(前提满足2NF)表中的每一个非主属性都不传递依赖于任何候选键。s(sid,sname,sbirth,ssex,sclass,sdep)d(sdep,dname)g(sid,cid,grade)在满足2NF后 分析:Sid->sclass Sclass->sdep Sid->sdeps(sid,sname,sbirth,ssex,sclass)cd(sclass,sdep)d(sdep,dname)g(sid,cid,grade)2、Oracle数据字典 2.1查询用户自定义表      //查询用户定义的表的名称SQL> select table_name from user_tables;//查询用户自定表的详细特征SQL> select * from user_tables//等效于SQL> select * from tabs;2.2查询用户定义的各种数据库对象SQL> select distinct object_type from user_objects; OBJECT_TYPE-------------------SEQUENCETABLEINDEX2.3 查看用户定义的表、视图、序列和同义词SQL> select * from user_catalog; TABLE_NAME              TABLE_TYPE------------------------------ -----------USESS                       TABLEABC                          TABLEDEPT                        TABLEEMP                         TABLESALGRADE                 TABLEPRODUCT_SEQ             SEQUENCEORDERS_SEQ               SEQUENCEORDERITEM_SEQ          SEQUENCEUSERS                       TABLEPRODUCT                   TABLEORDERS                     TABLEORDERITEM                TABLETMP                         TABLEPAGES                       TABLESTUDENT                   TABLECOURSE                     TABLESC                            TABLETEST                         TABLE 18 rows selected用户自定表使用 ALTER TABLE 语句可以:?追加新的列?修改现有的列?为新追加的列定义默认值?删除一个列使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.追加ALTER TABLE table ADD   (column datatype [DEFAULT expr]   [, column datatype]...);修改ALTER TABLE table MODIFY   (column datatype [DEFAULT expr]   [, column datatype]...);删除ALTER TABLE table DROPcolumn   (column_name);修改列的名称ALTER TABLE table_name rename column old_column_name to new_column_name 案例://采用子查询创建customer表 表的结构域users表完全一致SQL> create table customer as select * from users; Table created SQL> commit; //事务提交Commit complete//为customer表添加新的列 email 类型varchar2(20).SQL> alter table customer add email varchar2(20);Table alteredSQL> commit;SQL> desc customer;Name Type       Nullable Default Comments -------- ------------ -------- ------- -------- USERNAME VARCHAR2(20) Y                        PASSWORD VARCHAR2(20)                           NAME VARCHAR2(20)                           ADDRESS VARCHAR2(20) Y                        ZIP     NUMBER(6) Y                        EMAIL VARCHAR2(20) Y    //修改某个字段的类型SQL> alter table customer modify email number(4); Table altered SQL> commit; Commit complete SQL> desc customer;Name Type       Nullable Default Comments -------- ------------ -------- ------- -------- USERNAME VARCHAR2(20) Y                        PASSWORD VARCHAR2(20)                           NAME VARCHAR2(20)                           ADDRESS VARCHAR2(20) Y                        ZIP     NUMBER(6) Y                        EMAIL NUMBER(4) Y      //删除某个字段SQL> alter table customer drop column email;Table alteredSQL> commit;Commit completeSQL> select * from customer;//修改表的某个字段的名称SQL> alter table customer rename column address to addr;Table alteredSQL> commit;删除表?数据和结构都被删除?所有正在运行的相关事物被提交?所有相关索引被删除?DROP TABLE 语句不能回滚修改对象的名称?执行RENAME语句改变表, 视图, 序列, 或同义词的名称?必须是对象的拥有者//修改对象的名称操作SQL> rename customer to customers;清空表?TRUNCATE TABLE 语句:?删除表中所有的数据?释放表的存储空间?TRUNCATE语句不能回滚?可以使用 DELETE 语句删除数据//清空表的操作SQL> truncate table customers;总结:您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.语句          描述CREATE TABLE 创建表ALTER TABLE 修改表结构 DROP TABLE 删除表RENAME      重命名表TRUNCATE   删除表中的所有数据,并释放存储空间
?

热点排行