实验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)
删除表 :