(数据库)12_创建和管理表

喜夏-厌秋 提交于 2020-02-19 05:15:59

目标

  1. 描述主要的数据库对象
  2. 创建表
  3. 描述各种数据类型
  4. 修改表的定义
  5. 删除,重命名和清空表

一、常见的数据库对象

在这里插入图片描述

二、Oracle 数据库中的表

①用户定义的表:

用户自己创建并维护的一组表
包含了用户所需的信息
如:SELECT * FROM user_tables;查看用户创建的表

②数据字典:

由 Oracle Server 自动创建的一组表
包含数据库信息

1.查询数据字典

查看当前用户的所定义的表:

SELECT * FROM user_tables

查看用户定义的各种数据库对象:

--查询用户所定义的数据库对象类型
SELECT DISTINCT object_type  FROM     user_objects ;

查看用户定义的表, 视图, 同义词和序列:

--查看用户定义的表, 视图, 同义词和序列
SELECT  *  FROM    user_catalog

三、表的命名规则

表名和列名:

  1. 必须以字母开头
  2. 必须在 1–30 个字符之间
  3. 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
  4. 必须不能和用户定义的其他对象重名
  5. 必须不能是Oracle 的保留字

四、表空间

ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的,oracle中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。
数据表空间 (Tablespace)
存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
表空间:一个或多个数据文件的逻辑集合。
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中
在这里插入图片描述
Oralce是通过用户去管理数据的,要在Oracle中存储数据,必须先建表空间,再创建用户,最后创建对象(表,索引,视图…)
表空间的分类:

  1. 永久表空间 存放永久性数据,如表,索引等。
  2. 临时表空间 不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据。
  3. 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 语句

必须具备:

  1. CREATE TABLE权限
  2. 存储空间
CREATE TABLE [schema.]table
      (column datatype [DEFAULT expr][, ...]);

必须指定:

  1. 表名
  2. 列名, 数据类型, 尺寸

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. 追加新的列
  2. 修改现有的列
  3. 为新追加的列定义默认值
  4. 删除一个列
  5. 重命名表的一个列名

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;

七、删除表

  1. 数据和结构都被删除
  2. 所有正在运行的相关事务被提交
  3. 所有相关索引被删除
  4. DROP TABLE 语句不能回滚
--删除表
drop table  emp;

八、清空表

  1. TRUNCATE TABLE 语句:

    删除表中所有的数据
    释放表的存储空间

  2. TRUNCATE语句不能回滚

  3. 可以使用 DELETE 语句删除数据,可以回滚

九、改变对象的名称

执行RENAME语句改变表, 视图, 序列, 或同义词的名称

--重命名表
rename employees to emp;

必须是对象的拥有者

总 结

通过本章学习,您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.
在这里插入图片描述
以上这些DDL的命令,操作外,皆不可回滚!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!