学习要求
有一定关系型数据的操作功底,会SQL语句
教学目标
熟练掌握Oracle数据库表设计
表分类
Oracle中数据表分2种,
1:用户自定表
-
用户自己创建并维护的一组表
-
包含了用户所需的信息 如:SELECT * FROM user_tables; 查看用户创建的表
2:内置表,也称数据字典
-
由 Oracle 服务自动创建的一组表
-
包含数据库信息
select * from user_tables; -- 查看用户定义的表.
select * from user_objects; -- 查看用户定义的各种数据库对象
select * from user_catalog; -- 查看用户定义的表, 视图, 同义词和序列
表创建
语法
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
创建用户表
create table EMPLOYEE(
ID NUMBER,
NAME VARCHAR2(10),
PASSWORD VARCHAR2(10)
);
注意
表名和列名:
-
必须以字母开头
-
必须在 1–30 个字符之间
-
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
-
必须不能和用户定义的其他对象重名
-
必须不能是Oracle 的保留字
PL/SQLdeveloper中创建表
快速建表
#创建B表,和A表一样的字段,不保存A表的数据
create table BBB as select * from AAA where 1= 0
#创建B表,和A表一样的字段,同时保存A表已有的数据,一般可以用于备份
create table BBB as select * from AAA where 1= 1
列类型
类型 | 含义 | 存储描述 | 备注 |
---|---|---|---|
CHAR | 固定长度字符串 | 最大长度2000bytes | |
VARCHAR2 | 可变长度的字符串, | 最大长度4000bytes | 可做索引的最大长度749 |
NCHAR | 根据字符集而定的固定长度字符串 | 最大长度2000bytes | |
NVARCHAR2 | 根据字符集而定的可变长度字符串 | 最大长度4000bytes | |
DATE | 日期(日-月-年) | DD-MM-YY(HH-MI-SS),经过严格测试,无千虫问题 | |
TIMESTAMP | 日期(日-月-年) | DD-MM-YY(HH-MI-SS:FF3),经过严格测试,无千虫问题 | 与DATE相比较,TIMESTAMP有小数位秒信息 |
LONG | 超长字符串 | 最大长度2G,足够存储大部头著作 | |
RAW | 固定长度的二进制数据 | 最大长度2000bytes | 可存放多媒体图象声音等 |
LONG RAW | 可变长度的二进制数据 | 最大长度2G | 可存放多媒体图象声音等 |
BLOB | 二进制数据 | 最大长度4G | |
CLOB | 字符数据 | 最大长度4G | |
NCLOB | 根据字符集而定的字符数据 | 最大长度4G | |
BFILE | 存放在数据库外的二进制数据 | 最大长度4G | |
ROWID | 数据表中记录的唯一行号 | 10bytes | **.*.*格式,*为0或1 |
NROWID | 二进制数据表中记录的唯一行号 | 最大长度4000bytes | |
NUMBER(P,S) | 数字类型 | P为整数位,S为小数位 | |
DECIMAL(P,S) | 数字类型 | P为整数位,S为小数位 | |
INTEGER | 整数类型 | 小的整数 | |
FLOAT | 浮点数类型 | NUMBER(38),双精度 | |
REAL | 实数类型 | NUMBER(63),精度更高 |
表修改
表在创建之后,还是允许对齐进行更改,比如添加或删除表中列、修改表中列,以及对表进行重新命名和重新组织等。
数据准备
create table T_TEST6(
ID NUMBER
);
添加列
alter table 表名 add (列1 类型,列2 类型....)
需求:给T_TEST6表添加name列
alter table t_test6 add (NAME VARCHAR2(10));
-- 查看表结构
DESC T_TEST6;
更改列
alter table 表名 modify (列1 新类型, 列2 新类型);
需求:修改T_TEST6表中name类型为number类型
alter table t_test6 modify(name number);
DESC T_TEST6;
删除列
alter table 表名 drop (列1, 列2....)
需求:删除T_TEST6表name 列
alter table t_test6 drop (name);
DESC T_TEST6;
表重命名
alter table 旧表名 rename to 新表名;
需求:修改T_TEST6表名为T_DEMO
alter table T_TEST6 rename to T_DEMO;
表删除
需求:删除T_DEMO表
drop table t_demo;