《oracle从入门到精通(PDF格式)》第16章


2。 删除
DELERT FROM TABLE WHERE 条件;
删除所有符合 WHERE 条件的行。
基于子查询的删除。
注意及联删除。
3。 更新
UPDATE TABLE SET 列名1=值 1,列名2=值2。。。。。WHERE 条件;
第 31 页,共 106 页 
…………………………………………………………Page 32……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
如果更新错误,要用 ROLLBACK 回滚。
利用子查询更新另外表中的数据,在 SET 后和 WHERE 后都可以利用子查询语句。
更新的时候要注意参照完整性约束。
子表的外键字段值必须是父表主键字段值的真子集。
DEFAULT+‘’ 默认值
在创建表的时候用,在第三个参数的位置上。
例:
CREATE TABLE A
( C1 CHAR(10) DEFAULT




在修改的时候,如果先给 DEFAULT赋值的话,可以直接用 列名=DEFAULT,使列名回复为默认值。
4。 MERGE语句
提供了对表根据条件进行插入或者更新的能力。
如果行存在则执行 UPDATE,如果不存在则执行 INSERT。
避免了单独的修改。
提高了性能,更便于使用。
对于数据库应用很有益。
语法:别名 AL
MERGE INTO table_name(目的表) table_alias USING (table/view/sub_query)//数据来源 
(可以用子查询) alias(别名)
on(连接条件)
WHEN MATCHED THEN UPDATE SET(关键字) (修改目的表)
目的表 AL。col1=原表 AL。col_var1
目的表 AL。col2=原表 AL。col2_var2
WHEN NOT MATCHEN THEN(关键字)
INSERT (目的表 AL。COL_LIST)
VALUES(原表AL。COL_VARS);(插入原表)
create table newtable_name(新表) as select * from oldtable_name(原表) where 1=0;
将原表中的结构复制到新表中,但具体的数据项不进行复制。
5。 事务(transaction):
由被逻辑组织在一起的多个 DML 语句的构成。
MIT:提交。
ROLLBACK:回滚。
SAVEPOINT:存储点,只在事务执行过程中有效,事务结束即被释放。
事务的组成:
第 32 页,共 106 页 
…………………………………………………………Page 33……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
一组相同改变特性的 DML 语句;
一个 DDL:数据定义语句;
一个 DCL:权限控制语句;
建立存储点:
例:SAVEPOINT A;



ROLLBACK TO A;
事务的开始:
开始于第一个 DML SQL语句执行时开始
结束的时候是在:
*、一个 MIT或 ROLLBACK 被执行的时候。
*、一个 DDL或 DCL 语句被执行(自动提交)注意*&*!(隐式)
*、用户退出SQLPLUS(隐式)
*、系统崩溃(隐式)
语句级回滚:
ORACLE 服务器执行隐式的存储点。
2。4 创建和管理表
1、表 (TABLE)基本的存储单位,由行和列组成。
1。 规则:
1。表名和列名(使用规则):
2。必须是字母开头;
3。必须是1…30 的字符长度;
4。只能包括A…Z,a…z;0…9;_;;#;
5。在同一个用户下不能头重名的对象;
6。不能是ORACLE 的保留字;
创建需求
必须有: 1。 CREATE TABLE 权限;
2。足够的存储空间;
语法:
CREATE TABLE 'SCHEMA(方案)。'TABLE
(COL DATATYPE 'DEFAULT 默认值''');
当前用户所有的表
select table_name from user_tables;
当前用户所有的对象:
第 33 页,共 106 页 
…………………………………………………………Page 34……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
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 表中行的唯一地址(行地址)
2、方案:一个用户所有对象的命名集合。
如果想访问其他用户或方案的表要加上用户或方案作为前缀。
必须指明:
表名称;
列名,列类型和长度;
用户表:
被用户创建和维护的一些表;
包括了用户自己的信息;
数据字典表:
被 ORACLE 数据库创建和维护的一些表;
包括了数据库的信息;
3、CTAS(子查询建表):
CREATE TABLE table_name
第 34 页,共 106 页 
…………………………………………………………Page 35……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
'(col;coltype;。。)'
as subquery(子查询);
创建的表的列的数目匹配子查询的列的数目。
使用子查询的列的名字和默认值定义表。
注:
*、被创建表的字段名要遵循如果没有字段别名和子查询中没设置别名的话,使用子查询中的列 
名;
如果有别名,使用别名;如果有字段列表('(col;coltype;。。)'),在被创建的表中使用字 
段列表;
*、有字段列表与子查询的列要匹配。
*、当没有字段列表的时候,而在子查询中有表达式的时候一定要在表达式后要加上别名。
*、只会把属性当中的非空属性复制过来,其他的比如约束条件、关联。。。都不会复制过来。
使用 ALTER TABLE 语句可以:
*、在表中增加一个新列
语法:ALTER TABLE table add (col datatype 'default';。。。;。。。。);
新增加的字段一定是放在表的最后。
*、修改表字段的类型和长度
ALTER TABLE table modify (col datatype '
小说推荐
返回首页返回目录