服务器 频道

PL/SQL学习笔记之九

  【IT168 服务器学院】创建和管理表

  对象:

  表(TABLE)基本的存储单位,由行和列组成。

  表名和列名(使用规则):
  必须是字母开头;
  必须是1-30的字符长度;
  只能包括A-Z,a-z,0-9,_,$,#;
  在同一个用户下不能头重名的对象;
  不能是ORACLE的保留字;

  创建需求
  必须有:
  CREATE TABLE 权限;
  足够的存储空间;
  语法:
  CREATE TABLE [SCHEMA(方案).]TABLE
  (COL DATATYPE [DEFAULT默认值][]);

  当前用户所有的表
  select table_name from user_tables;

  当前用户所有的对象:
  desc user_objects

  当前用户对象的别名:
  select * from cat;

  字段类型:
  VARCHAR(size)   变长字符串类型
  CHAR(size) 定长字符串类型
  NUMBER(p,s)p位整数,s位小数  
  DATE 
  DATETIME 秒级最多可以到小数点后的9位
  TIMESTAMP 带有小数秒的日期
  TIMESTAMP WITH TIME ZONE 带时区的类型
  TIMESTAMP WITH LOCAL TIME ZONE 带时区的并会进行时区转换的类型(同一时间在不同地区看到的时间)

   INTERVAL YEAR TO MONTH 按年和月的间隔存储的类型
  INTERVAL ‘123-2’ TEAR(3) TO MONTH
  
  INTERVAL DAY TO SECOND 按天、小时、分和秒的间隔存储的类型
  INTERVAL 
  LONG 变长的长字符串类型
  CLOB 字符类型 4GIGABYTES 
  RAW  二进制类型与CHAR对应
  LONG RAW 二进制类型与LONG对应
  BLOB
  BFILE 以文件的形式存储在操作系统中
  ROWID 表中行的唯一地址(行地址)

  方案:一个用户所有对象的命名集合。

  如果想访问其他用户或方案的表要加上用户或方案作为前缀。

  必须指明:
  表名称;
  列名,列类型和长度;
  用户表:
  被用户创建和维护的一些表;
  包括了用户自己的信息;
  数据字典表:
  被ORACLE数据库创建和维护的一些表;
  包括了数据库的信息;

  CTAS(子查询建表):

  CREATE TABLE table_name
  [(col,coltype,..)]
  as subquery(子查询);

  创建的表的列的数目匹配子查询的列的数目。
  使用子查询的列的名字和默认值定义表。
  注:
  *、被创建表的字段名要遵循如果没有字段别名和子查询中没设置别名的话,使用子查询中的列名;
   如果有别名,使用别名;如果有字段列表([(col,coltype,..)]),在被创建的表中使用字段列表;
  *、有字段列表与子查询的列要匹配。
  *、当没有字段列表的时候,而在子查询中有表达式的时候一定要在表达式后要加上别名。 
  *、只会把属性当中的非空属性复制过来,其他的比如约束条件、关联...都不会复制过来。

  使用ALTER TABLE 语句可以:

  *、在表中增加一个新列

  语法:ALTER TABLE table add (col datatype [default],...,....);
  新增加的字段一定是放在表的最后。

  *、修改表字段的类型和长度

  ALTER TABLE table modify (col datatype [default],...,....);
  对默认值的修改只会影响到新插入的行。
  如果字段下有值的话,类型的修改成功率很小(要修改数据类型,要修改的列必须为空,即没有数据项)。
  CHAR类型不能修改长度。

  *、删除表字段

  ALTER TABLE table DROP COLUMN (COLUMN_NAME_LIST);

  9I2版可以修改列名 

  *、SET UNUSED 设置字段为不可用。

  原理:清楚掉字典信息(撤消存储空间),不可恢复。
  可以使用 SET UNUSED 选项标记一列或者多列不可用。
  使用DROP SET UNUSED 选项删除被被标记为不可用的列。

  语法:
  ALTER TABLE table SET UNUSED (COLlist多个) 或者  ALTER TABLE table SET UNUSED COLUMN col单个;

  ALTER TABLE table DROP UNUSED COLUMNS;

  删除表:

  删除关联:drop table table_name cascade;

  改对象名:
  RENAME 对象原名 TO 要改的对象名;
  注:
   必须是对象的所有者才能进行改名的操作。

0
相关文章