Oracle_Day6
Oracle learning_Day6
本人学习视频用的是尚硅谷的,也在这里献上
视频链接:https://www.bilibili.com/video/BV17b411V75B?p=2
Oracle 数据库-sql plsql - Java 学习 - 尚硅谷
目录
创建和管理表
1.常见的数据库对象
对象 | 描述 |
---|---|
表 | 基本的数据存储集合,由行和列组成。 |
视图 | 从表中抽出的逻辑上相关的数据集合。 |
序列 | 提供有规律的数值。 |
索引 | 提高查询的效率。 |
同义词 | 给对象起别名。 |
2.Oracle 数据库中的表
-
用户定义的表:
-
用户自己创建并维护的一组表
-
包含了用户所需的信息
如:SELECT * FROM user_tables 查看用户创建的表
-
-
数据字典:
- 由 Oracle Server 自动创建的一组表
- 包含数据库信息
3.查询数据字典
- 查看用户定义的表:
SELECT table_name
FROM user_tables;
- 查看用户定义的各种数据库对象
SELECT DISTINCT object_type
FROM user_objects;
- 查看用户定义的表,视图,同义词和序列
SELECT *
FROM user_catalog;
命名规则
表名和列名:
- 必须以字母开头
- 必须在 1–30 个字符之间
- 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
- 必须不能和用户定义的其他对象重名
- 必须不能是Oracle 的保留字
4.创建表
1)CREATE TABLE 语句
-
必须具备:
- CREATE TABLE权限
-
存储空间
-
必须指定:
-
表名
-
列名, 数据类型, 尺寸
-
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
举个例子:
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
--创建成功后显示Table created.
--查看创建的表
DESCRIBE dept
2)数据类型
数据类型 | 描述 |
---|---|
VARCHAR2(size) | 可变长字符数据 |
CHAR(size) | 定长字符数据 |
NUMBER(p, s) | 可变长数值数据 |
DATE | 日期型数据 |
LONG | 可变长字符数据,最大可达到2G |
CLOB | 字符数据,最大可到到4G |
RAW (LONG RAW) | 原始的二进制数据 |
BLOB | 二进制数据,最大可达到4G |
BFILE | 存储外部文件的二进制数据,最大可达到4G |
ROWID | 行地址 |
想要更加深入了解Oracle数据类型,可以参考一下链接:
3)使用子查询创建表
- 使用 AS subquery 选项,将创建表和插入数据结合起来
- 指定的列和子查询中的列要一一对应
- 通过列名和默认值定义列
CREATE TABLE table
[(column, column...)]
AS subquery;
举个例子:
--将表employees的内容创建为表emp1
create table emp1 as select * from employees;
--创建的emp2是空表
create table emp2 as select * from employees where 1=2;
--实例
CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
5.修改表结构
ALTER TABLE语句
使用 ALTER TABLE 语句可以:
- 追加新的列
- 修改现有的列
- 为新追加的列定义默认值
- 删除一个列
- 重命名表的一个列名
--追加
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
--修改
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
--删除列
ALTER TABLE table
DROP COLUMN column_name;
--重命名列名
ALTER TABLE table_name RENAME COLUMM old_column_name
TO new_column_name
1)追加一个新列
- 使用ADD子句追加一个新列
- 新列是表中的最后一列
ALTER TABLE dept80
ADD (job_id VARCHAR2(9));
2)修改一个列
- 可以修改列的数据类型、尺寸和默认值
- 对默认值的修改只影响今后对表的修改
ALTER TABLE dept80
MODIFY (last_name VARCHAR2(30));
ALTER TABLE dept80
MODIFY (salary NUMBER(9,2) DEFAULT 1000);
3)删除一个列
使用 DROP COLUMN 子句删除不再需要的列。
ALTER TABLE dept80
DROP COLUMN job_id;
4)重命名一个列
使用 RENAME COLUMN [table_name] TO子句重命名列
ALTER TABLE dept80
RENAME COLUMN job_id TO id;
*5)设置列不可用
使用 SET UNUSED COLUMN [column_name] 设置列不可用
- 清除字典信息(撤消存储空间),不可恢复
- 使用 SET UNUSED 选项标记一列或者多列不可用。
- 使用DROP SET UNUSED 选项删除被标记为不可用的列。
--设置列不可用
ALTER TABLE emp5
SET UNUSED COLUMN test_column;
--删除不可用的列
ALTER TABLE emp5
DROP UNUSED COLUMNS;
想要更加深入了解Oracle数据类型,可以参考一下链接:
6.删除表
- 数据和结构都被删除
- 所有正在运行的相关事务被提交
- 所有相关索引被删除
- DROP TABLE 语句不能回滚
DROP TABLE dept80;
7.清空表
-
TRUNCATE TABLE 语句:
-
删除表中所有的数据
-
释放表的存储空间
-
不能回滚
-
TRUNCATE TABLE detail_dept;
- DELETE 语句
- 删除表中所有的数据
- 不释放表的存储空间
- 可以回滚
DELETE FROM emp2;
/* 表为空表 */
SELECT * FROM emp2;
/* 回滚 */
rollback;
/* 表恢复原状 */
SELECT * FROM emp2;
8.改变对象的名称
- 执行 RENAME 语句改变表,视图,序列,或同义词的名称
- 必须是对象的拥有者
RENAME dept TO detail_dept;