Oracle基础(三)对表的操作

65 篇文章 0 订阅
64 篇文章 0 订阅

表示基本的数据存储结构,一个表通常由行和列(字段)组成
创建表的时候可以指定创建到那个表空间上,如果不指定将默认创建到用户的默认表空间里.

创建表的类型
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值