数据库对象管理 (表)

实验10表的创建和修改&&答案 http://pan.baidu.com/share/link?shareid=447633&uk=3912660076

SQL Statements

数据类型

NUMBER 可以用来表示所有的数值数据:
fieldname NUMBER (precision, scale); precision(精确度)是最大长度,scale(范围)是小数点后的位数
VARCHAR2 用来表示变长的字符串数据类型:
fieldname VARCHAR2 (max_length);
CHAR 保存固定长度字符串,最大长度为2KB。
DATE  保存固定长度的日期数据。
BLOB 保存二进制大对象,通常用来保存图像和文档等二进制数据。
CLOB 保存字符型大对象。varchar2数据类型最多只能保存4000个字符,如果要保存的字符串数据超过此范围,应使用clob数据类型。

创建表—数据完整性

    数据完整性是关系数据库模型的基本原则,是用户在表上定义的一系列规则或约束条件,以及在表之间定义的一系列相互关系。

  数据完整性的作用:强制要求数据库中只能接受正确的、合理的数据,防止错误的或无效的数据被插入到表中。

数据完整性分为三类:
  实体完整性
  参照完整性
  用户定义的完整性
实体完整性:
  规则1:主键的各个属性都不能为空值。
参照完整性:
  规则2:外键或者取空值,或者等于被参照关系中的主键的某个值
用户定义的完整性:
  规则3:属性(或属性组)的取值应当满足用户定义的约束条件

Oracle通过为表中的列定义各种约束来实现数据完整性

约束(constraint)条件:
  Not Null:防止NULL值进入到指定的列。(只能定义在列级)

    forexample: ...UserName     Varchar2(40)    NOT NULL,...(系统命名)

            ...data       Data   CONSTRAINT  constraint_name    NOT NULL );(自定义命名)


  Unique:保证在指定的各列中没有重复的值。

    forexample:...age     number   UNIQUE,...(系统命名)

            CONSTRAINT  constraint_name    UNIQUE(age) );(自定义命名)            --->表级


  Check:检查在约束中指定的条件是否得到了满足。

   forexample:...Sex   varchar2(2)   not   null   CHECK(Sex='F' or Sex='M'),...

            CONSTRAINT  CHK_name  CHECK(Sex in('F','M'));    --->表级


  Primary key:用来惟一地标识出表的每一行,并且防止出现NULL值。一个表只能有一个主键约束。

    forexample:...BugsBug   varchar2(8)   primary key,...

            CONSTRAINT  PK_constraint_name    primary key(BugsBug,[agr]...) );(自定义命名)       --->表级


  Foreign key:通过使用公共列在表之间建立一种父子关系。在表上定义的外键可以指向其他表的主键或者惟一键。(可以定义在表级列级)

    forexample:...CONSTRAINT  FK_constraint_name  FOREIGN  KEY(BugsBug)   REFERENCES  othertable_name(BugsBug));

      Default : 在表上定义行的默认值.

    forexample:...Sdept varchar2(15)  default  'Computer');

   参数:

FOREIGN KEY: 在表级指定子表中的列
REFERENCES: 标示在父表中的列
ON DELETE CASCADE: 当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL: 子表中相应的列置空
ON DELETE NO ACTION:不进行任何操作

约束级别
  列级约束
  表级约束

添加约束:

     创建表之后如果需要添加约束(除NOT NULL以外),可以用以下语句实现:
        ALTER TABLE table_name  Add  [CONSTRAINT constraint_name]  Constraint_type(col1,col2,…)  [condition]

只能用modify格式

删除约束:

创建表语法:

create table  table_name

({column_name    datatype   [default_expression]    [column_constraint] | [table_constraint]},....)

[tablespace tablespace_name];

注意事项:
  如果不指定约束名 Oracle server 自动按照 SYS_Cn 的格式指定约束名
  在什么时候创建约束:
    建表的同时
    建表之后
    可以在表级或列级定义约束
 可以通过数据字典视图查看约束

 

 查看约束信息:

    表的约束信息:desc user_constraints;

  列的约束信息:desc  user_cons_columns;

 修改表:

表在创建之后还允许对其进行更改,如添加或删除表中的列,修改表中的列,以及对表进行重新命名和重新组织等。
普通用户只能对自己方案中的表进行更改,而具有ALTER ANY TABLE系统权限的用户可以修改任何方案中的表。

 Alter table  table_name
       Add(newcolumn_name   datatype[,…])                                                     //添加列
      | Modify  column datatype|(column datatype [,...])                                    //修改列
      | Drop  [unused  columns]|column  column_name|(column_name1, ...)      //删除列
      | rename  column   oldcolumn_name  to  newcolumn_name                      //重命名列
      | set unused  (column_name1, column_name1…                                  // 设置不可用==》删除列

 

 查看表的列名

删除列:

修改列不可用:

删除不可用的列:  ALTER TABLE Users  DROP UNUSED COLUMNS

插入数据:INSERT   INTO   <表名>  [列名1, 列名2, …, 列名n]   VALUES  (值1, 值2, …, 值n);

修改数据:UPDATE   <表名>   SET    列名1 = 值1, ...  WHERE  <更新条件表达式>

删除数据:DELETE  FROM  <表名>  WHERE   <删除条件表达式>

 

 COMMIT; 在用DML(INSERT,UPDATE,DELETE)语句对数据库修改之后,需要提交事务。

 COMMIT WORK;(DELETE) 

 删除表 :


原文地址:https://www.cnblogs.com/wjshan0808/p/3063798.html