做脚本文件的过程:
变量定义 accept
环境变量设置 SET
格式控制命令
SPOOL
使用变量的 SQL
SPOOL OFF
清除格式控制
重置环境变量
释放变量
数据操作语句
插入
INSERT INTO TABLE(字段 1,字段 2....)VALUES(值 1,值 2....)
一次插入只插入一行。字符和日期值需要单引号扩起。
可以创建一个脚本用 &变量名 的形式来用一个插入语句实现多行的插入(在值列表里用 &变量名)。
插入中的子查询:将另一个表中的内容都插入被插入的表中。
insert into sales_reps(id,name,salary)
select employee_id,last_name,salary from employees where employee_id>100;
可以在子查询中做运算后插入到被插入表中。
不要使用 VALUES 子句。
在子查询中的列数必须匹配 INSERT 语句中的列数
删除
DELERT FROM TABLE WHERE 条件;
删除所有符合 WHERE 条件的行。
基于子查询的删除。
注意及联删除。
更新
UPDATE TABLE SET 列名 1=值 1,列名 2=值 2.....WHERE 条件;
子表的外键字段值必须是父表主键字段值的真子集。
MERGE 语句
提供了对表根据条件进行插入或者更新的能力。
如果行存在则执行 UPDATE,如果不存在则执行 INSERT
MERGE INTO test T1
USING (SELECT OWNER , OBJECT_NAME , MAX(ID) ID FROM T GROUP BY OWNER, OBJECT_NAME) T
ON (T.OWNER = T1.OWNER AND T.OBJECT_NAME = T1.TABLE_NAME)
WHEN MATCHED THEN UPDATE SET T1.ID = T.IDWHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.OWNER, T.OBJECT_NAME);
事务(transaction):
由被逻辑组织在一起的多个 DML 语句的构成。
COMMIT:提交。
ROLLBACK:回滚。
SAVEPOINT:存储点,只在事务执行过程中有效,事务结束即被释放。
事务的组成:
一组相同改变特性的 DML 语句;
一个 DDL:数据定义语句;
一个 DCL:权限控制语句;
事务的开始:
开始于第一个 DML SQL 语句执行时开始
结束的时候是在:
一个 COMMIT 或 ROLLBACK 被执行的时候。
一个 DDL 或 DCL 语句被执行(自动提交)注意*&*!(隐式)
用户退出 SQLPLUS(隐式)
系统崩溃(隐式)
创建和管理表
规则:
1.表名和列名(使用规则):
2.必须是字母开头;
3.必须是 1-30 的字符长度;
4.只能包括 A-Z,a-z,0-9,_,$,#;
5.在同一个用户下不能头重名的对象;
6.不能是 ORACLE 的保留字;
当前用户所有的表
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 WITHTIME 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中一般只有一个数据库,那么在一个数据库中实现不同的项目就非常不方便。Oracle在组织不同项目中的数据库对象时,使用方案进行区分。也就是说,创建一个软件项目,在Oracle中不是针对这个项目,创建独立的数据库,而是为此项目创建一个方案。
数据库对象是索引、表、视图、函数、包、过程、同义词、序列、触发器
变量定义 accept
环境变量设置 SET
格式控制命令
SPOOL
使用变量的 SQL
SPOOL OFF
清除格式控制
重置环境变量
释放变量
数据操作语句
插入
INSERT INTO TABLE(字段 1,字段 2....)VALUES(值 1,值 2....)
一次插入只插入一行。字符和日期值需要单引号扩起。
可以创建一个脚本用 &变量名 的形式来用一个插入语句实现多行的插入(在值列表里用 &变量名)。
插入中的子查询:将另一个表中的内容都插入被插入的表中。
insert into sales_reps(id,name,salary)
select employee_id,last_name,salary from employees where employee_id>100;
可以在子查询中做运算后插入到被插入表中。
不要使用 VALUES 子句。
在子查询中的列数必须匹配 INSERT 语句中的列数
删除
DELERT FROM TABLE WHERE 条件;
删除所有符合 WHERE 条件的行。
基于子查询的删除。
注意及联删除。
更新
UPDATE TABLE SET 列名 1=值 1,列名 2=值 2.....WHERE 条件;
子表的外键字段值必须是父表主键字段值的真子集。
MERGE 语句
提供了对表根据条件进行插入或者更新的能力。
如果行存在则执行 UPDATE,如果不存在则执行 INSERT
MERGE INTO test T1
USING (SELECT OWNER , OBJECT_NAME , MAX(ID) ID FROM T GROUP BY OWNER, OBJECT_NAME) T
ON (T.OWNER = T1.OWNER AND T.OBJECT_NAME = T1.TABLE_NAME)
WHEN MATCHED THEN UPDATE SET T1.ID = T.IDWHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.OWNER, T.OBJECT_NAME);
事务(transaction):
由被逻辑组织在一起的多个 DML 语句的构成。
COMMIT:提交。
ROLLBACK:回滚。
SAVEPOINT:存储点,只在事务执行过程中有效,事务结束即被释放。
事务的组成:
一组相同改变特性的 DML 语句;
一个 DDL:数据定义语句;
一个 DCL:权限控制语句;
事务的开始:
开始于第一个 DML SQL 语句执行时开始
结束的时候是在:
一个 COMMIT 或 ROLLBACK 被执行的时候。
一个 DDL 或 DCL 语句被执行(自动提交)注意*&*!(隐式)
用户退出 SQLPLUS(隐式)
系统崩溃(隐式)
创建和管理表
规则:
1.表名和列名(使用规则):
2.必须是字母开头;
3.必须是 1-30 的字符长度;
4.只能包括 A-Z,a-z,0-9,_,$,#;
5.在同一个用户下不能头重名的对象;
6.不能是 ORACLE 的保留字;
当前用户所有的表
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 WITHTIME 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中一般只有一个数据库,那么在一个数据库中实现不同的项目就非常不方便。Oracle在组织不同项目中的数据库对象时,使用方案进行区分。也就是说,创建一个软件项目,在Oracle中不是针对这个项目,创建独立的数据库,而是为此项目创建一个方案。
数据库对象是索引、表、视图、函数、包、过程、同义词、序列、触发器