表
表示基本的数据存储结构,一个表通常由行和列(字段)组成
创建表的时候可以指定创建到那个表空间上,如果不指定将默认创建到用户的默认表空间里.
-
创建表的类型
-
1.堆表:数据按照堆组织,一无序方式放在单独的表字段中,也称为标准表
2.索引表 : 数据以 “B数” 解耦股,存放在主键约束所对应的索引字段中
3.簇表 : 簇由供需数据库的组表组成,在某些情况下,使用簇表可以节省空间,提高SQL的性能
4.分区表: 数据被划分为很小的区间范围,并且存储到相应的分区段中,每个分区段可以独立和操作
数据类型
-
number(p,s) :可变长度数字,p:数字可用的最大位数(如果有小数点,是小数点前后之和) , s: 小数点最大位数. 最大精度不能超过38位
double , float 都是number的子类型,38位精度浮点数
real:number 的子类型,18位精度的浮点
int,integer,samllint : 38位精度的整数
long : 可变长的字符数据类型 :2GB
xml
varchar2(size) 可变长字符串 最大长度4000个字节
nvarchar(size) 最大长度4000字节,最小位1字节
char() 定长字符串
nchar()
date : 年月日
timestamp :年月日时分秒毫秒 时间戳
clob : 大字符对象可以存储4GB的字符文本
NCLOB
BLOB : 二进制文件
-
创建表:
-
create table [schema.] table_name(
column_name data_type [default expression] [constraint],
column_name data_type [default expression] [constraint],
column_name data_type [default expression] [constraint],
…
)
schema : 指定表所属的用户名
table_name : 创建表的表名
column_name : 列名 ,一个表每列必须具有唯一性
data_type : 列的数据类型
default expression : 列的默认值
constraint : 添加约束,表示该列的值必须满足的规定
创建表
create table [schema.]table_name(
column_name data_type [defaulte expression] [constraint],
column_name data_type [defaulte expression] [constraint],
column_name data_type [defaulte expression] [constraint],
......
)
schema : 指定表所属的用户名
table_name : 创建表的表名
column_name : 列名,一个表每列必须具有唯一性
data_type : 列的数据类型
defaulte expression : 列的默认值
constraint : 添加约束,表示该列的值必须满足的规则
create table book(
bookid number(10) not null,
bookname varchar2(40),
author varchar2(40) ,
press varchar2(40) ,
bookprice number(4,2) ,
presstime date,
constraint pk_book_id primary key(bookid)
);
指定表空间:
create table book(
bookid number(10) not null,
bookname varchar2(40),
author varchar2(40) ,
press varchar2(40) ,
bookprice number(4,2) ,
presstime date,
constraint pk_book_id primary key(bookid)
)tablespace 表空间名称;
修改表:
增加和删除列
SQL> alter table book2 add c1 number;
表已更改。
SQL> desc book2;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
BOOKID NOT NULL NUMBER(10)
BOOKNAME VARCHAR2(40)
AUTHOR VARCHAR2(40)
PRESS VARCHAR2(40)
BOOKPRICE NUMBER(4,2)
PRESSTIME DATE
C1 NUMBER
SQL> alter table book2 drop column c1;
表已更改。
SQL> desc book2;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
BOOKID NOT NULL NUMBER(10)
BOOKNAME VARCHAR2(40)
AUTHOR VARCHAR2(40)
PRESS VARCHAR2(40)
BOOKPRICE NUMBER(4,2)
PRESSTIME DATE
禁用指定的类(我们将不能使用该列,但是当前列还占用存储空间)
SQL> alter table book2 set unused(presstime);
表已更改。
删除标记为unused的列,可以将这些列从物理上删除,收回占用的磁盘空间
SQL> alter table book2 drop unused column;
表已更改。
修改列
SQL> alter table book2 rename column bookprice to price;
表已更改
SQL> desc book2;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
BOOKID NOT NULL NUMBER(10)
BOOKNAME VARCHAR2(40)
AUTHOR VARCHAR2(40)
PRESS VARCHAR2(40)
PRICE NUMBER(4,2)
SQL> alter table book2 modify price number(6,3);
表已更改。
SQL> desc book2;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
BOOKID NOT NULL NUMBER(10)
BOOKNAME VARCHAR2(40)
AUTHOR VARCHAR2(40)
PRESS VARCHAR2(40)
PRICE NUMBER(6,3)
对表重命名
SQL> alter table book2 rename to book3;
表已更改。
SQL> select table_name from tabs;
TABLE_NAME
------------------------------
BOOK3
BOOK
SALGRADE
BONUS
EMP
DEPT
已选择6行。
将表移动到另一个表空间
SQL> select table_name,tablespace_name from user_tables where table_name = 'BOOK4';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
BOOK4 SYSTEM
SQL> alter table book4 move tablespace users;
表已更改。
SQL> select table_name,tablespace_name from user_tables where table_name = 'BOOK4';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
BOOK4 USERS
删除表
drop table 表名;
删除表并立即释放该表所占用的资源空间
drop table 表名 purge;
不仅删除表,还会将引用该表的视图,约束,索引,触发器等.全部一并删除
drop table 表名 cascade constraints