12_创建和管理表
目标
- 描述主要的数据库对象
- 创建表
- 描述各种数据类型
- 修改表的定义
- 删除,重命名和清空表
一、常见的数据库对象
二、Oracle 数据库中的表
①用户定义的表:
用户自己创建并维护的一组表
包含了用户所需的信息
如:SELECT * FROM user_tables;查看用户创建的表
②数据字典:
由 Oracle Server 自动创建的一组表
包含数据库信息
1.查询数据字典
查看当前用户的所定义的表:
SELECT * FROM user_tables
查看用户定义的各种数据库对象:
--查询用户所定义的数据库对象类型
SELECT DISTINCT object_type FROM user_objects ;
查看用户定义的表, 视图, 同义词和序列:
--查看用户定义的表, 视图, 同义词和序列
SELECT * FROM user_catalog
三、表的命名规则
表名和列名:
- 必须以字母开头
- 必须在 1–30 个字符之间
- 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
- 必须不能和用户定义的其他对象重名
- 必须不能是Oracle 的保留字
四、表空间
ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的,oracle中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。
数据表空间 (Tablespace)
存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
表空间:一个或多个数据文件的逻辑集合。
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中
Oralce是通过用户去管理数据的,要在Oracle中存储数据,必须先建表空间,再创建用户,最后创建对象(表,索引,视图…)
表空间的分类:
- 永久表空间 存放永久性数据,如表,索引等。
- 临时表空间 不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据。
- UNDO表空间 保存数据修改前的镜象
1、查看所有的表空间:SELECT * FROM DBA_TABLESPACES;
2、查看某个用户的默认表空间:SELECT DEFAULT_TABLESPACE,USERNAME FROM DBA_USERS WHERE USERNAME=‘username’;
3、查看表空间剩余容量:SELECT TABLESPACE_NAME,SUM(BYTES) FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;
4、查看表空间数据文件的信息:SELECT * FROM DBA_DATA_FILES;
5、创建表空间:CREATE TABLESPACE ODI DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ODI.DBF ’ SIZE 50M AUTOEXTEND ON NEXT 10M PERMANENT EXTENT MANAGEMENT LOCAL;
6、重命名表空间:ALTER TABLESPACE oldname RENAME TO newname;
7、设置表空间的读写状态:ALTER TABLESPACE tablespace_name READ ONLY | WRITE;
8、删除表空间:DROP TABLESPACE tablespace_name [INCLUDING CONTENTS][CASCADE CONSTRAINTS];
INCLUDING CONTENTS表示把表空间里的数据文件也删除,CASCADE CONSTRAINTS会把表空间中的完整性也删除。
9、临时表空间一般是指在数据库中存储数据,当内存不够时写入的空间,这个空间并不像一般的表空间,当执行完对数据库的操作后,该空间的内容自动清空。
10、创建临时表空间:CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE ‘filename’ SIZE size;
11、设置临时表空间为默认表空间:ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;
12、查询临时表空间:SELECT * FROM DBA_TMP_FILES;
13、删除临时表空间:DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
14、删除表空间中的数据文件:ALTER TABLESPACE tablespace_name DROP DATAFILE ‘filename’;
15、向表空间里增加数据文件:ALTER TABLESPACE tablespace_name ADD DATAFILE ‘filename’ SIZE size;
16、向表空间里新增数据文件,并且允许数据文件自动增长:ALTER TABLESPACE tablespace_name ADD DATAFILE ‘filename’ SIZE 50M AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
17、允许已存在的数据文件自动增长:ALTER DATABASE DATAFILE ‘filename’ AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
--查看所有的表空间 只有sys用户可以查看
SELECT * FROM DBA_TABLESPACES;
1、创建表空间:
--创建表空间 data_test 表空间名称 datafile 指定数据文件的存储路径 data_1.dbf文件名称 size表空间的默认大小
create tablespace data_test datafile 'C:\app\Adminstrator\oradata\orcl\data_1.dbf' size 20M;
2、建好tablespace,创建用户并指定表空间
--创建用户zb 并指定密码为zb 默认表空间为data_test
create user zb identified by zb default tablespace data_test;
3.授权给新用户
--为用户赋予权限
GRANT connect, resource TO zb;
--赋予用户创建会话的权限
grant create session to zb;
--表示把 dba权限授予给 study
grant dba to zb;
4.创建数据表
建好了用户 zb 我们现在进入该用户
sqlplus zb/zb@orcl 然后就可以在用户study中创建数据表了
格式: create table 数据表名
5.创建临时表空间
--为用户创建临时表空间
create temporary tablespace user_temp
tempfile 'C:\app\Adminstrator\oradata\orcl\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
五、CREATE TABLE 语句
必须具备:
- CREATE TABLE权限
- 存储空间
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
必须指定:
- 表名
- 列名, 数据类型, 尺寸
1.创建表
--创建一张user表
create table users(
id number(18),
user_name varchar2(50),
password varchar2(18)
)
--在命令窗口中查看表结构
desc users;
2.数据类型
3.使用子查询创建表
使用 AS subquery 选项,将创建表和插入数据结合起来
--4.3.使用子查询创建表 新表将拥有子查询表的结构和数据
create table emp as select * from employees;
select * from emp;
--4.3.使用子查询创建表 新表将拥有和子查询表的数据结构及部分数据
drop table emp;
create table emp as select * from employees where department_id = 90;
select * from emp;
--创建一张和employees表结构完全相同的表 但是不需要数据
drop table emp;
create table emp as select * from employees where 1=2;
六、ALTER TABLE 语句
使用 ALTER TABLE 语句可以:
- 追加新的列
- 修改现有的列
- 为新追加的列定义默认值
- 删除一个列
- 重命名表的一个列名
1.使用 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
2.实例
--使用 ALTER TABLE 语句追加, 修改, 或删除列的语法
--给现有的表增加一个新列
alter table emp
add (test varchar2(100))
--给现有的表修改一个列
alter table emp
modify (test number(10));
-- 删除表中的某一个存在的列
alter table emp
drop column test;
--重命名一个列
alter table emp
rename column SALARY to sal;
七、删除表
- 数据和结构都被删除
- 所有正在运行的相关事务被提交
- 所有相关索引被删除
- DROP TABLE 语句不能回滚
--删除表
drop table emp;
八、清空表
-
TRUNCATE TABLE 语句:
删除表中所有的数据
释放表的存储空间 -
TRUNCATE语句不能回滚
-
可以使用 DELETE 语句删除数据,可以回滚
九、改变对象的名称
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
--重命名表
rename employees to emp;
必须是对象的拥有者
总 结
通过本章学习,您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.
以上这些DDL的命令,操作外,皆不可回滚!
来源:CSDN
作者:kanoすき
链接:https://blog.csdn.net/weixin_45801537/article/details/104371805