数据表:数据表是数据库中最常用的数据库中最常用的数据库对象
表空间:
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。
所有的数据对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间。
关于表空间:
一个数据库可以包含多个表空间,一个表空间只能属于一个数据库。
一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。
表空间可以划分成更细的逻辑存储单元。
创建表空间语法:
create tablespace 表空间名
datafile '存放数据文件路径及文件名称.dbf(如:C:\app\Administrator\oradata\orcl\test1.dbf)'
size 32M --初始文件的大小
autoextend on next 64M --设置自动增长,下一个增长的大小
maxsize 1024M; --文件最大值
autoextend on next 64M --设置自动增长,下一个增长的大小
maxsize 1024M; --文件最大值
新建用户指定默认表空间:
create user 用户名 identified by 密码 default tablespace 表空间名
表名和列名命名规则:
必须以字母开头
必须在1~30个字符之间
必须只能包含A-Z,a-z,0-9,_,$和#
必须不能和用户定义的其他对象重名
必须不能是Orcle的保留字
常见数据类型:
字符型:
• varchar2(n):变长字符串,n代表允许的最大字节长度,最大4000字节,例如 varchar2(8)
•char(n):同上,定长字符串,最大2000字节,例如char(8) ,长度不够会填充半角空格,查询效率高
•clob:大字符串数据,最大4G ,默认数据在4000字节内,存储在表段空间中,超过4000字节就会用LOB段存储,查询效率低
数字型:
•number:存储整型或者浮点型,最大38位精度
•number(n):仅存储整数,n代表最大位数 例如number(4) -9999~9999
•number(p,s):存储浮点数,p代表最大精度,s代表小数位数 例如 number(6,2)
日期型:
•date: 【dd-mm月-yy 】存储年月日时分秒,精确到秒
•timestamp(n):时间戳,精确到纳秒,n代表秒后面的位数例如 timestamp(3),还包括了时区的信息
二进制类型
•blob:大二进制数据,最大4G
Oracle数据类型没有布尔类型true和false
创建表:
create table test(
testno number(2),
tname varchar(20),
loc varchar(15));
伪列:
rowid: 表数据行的物理地址,在插入数据时生成,在数据库中是唯一的
rownum:查询结果的自增编号(以下条件一定为假:rownum>n,rownum>=n,ronum=1以外的值)
alter tabler 语句:
添加:alter table 表名 add(列名 数据类型
如:alter table test add(job_id varchar2(9));
修改:alter table 表名 modify
(列名 数据类型)
如:alter table test modify (last_name varchar2(30));
删除:alter table 表名 drop (列名)
如:alter table test drop(job_id);
删除表:
数据和结构都被删除:drop table test;
改变对象的名称:
执行rename语句改变表,视图,序列或同义词的名称
rename test to detail_test;
清空表:
truncate table语句:
删除表中所有的数据,释放表的存储空间
truncate table detail_test;
注:truncate语句不能回滚,可以使用delete语句删除数据
表的注释:
使用comment语句给表或列添加注释
comment on table test is '这是test表';
可以通过下列数据字典视图查看所添加的注释:
•ALL_COL_COMMENTS
•USER_COL_COMMENTS
•ALL_TAB_COMMENTS
•USER_TAB_COMMENTS
表的闪回操作:
通过数据字典查看“回收站”信息:
select * from user_recyclebin
还原误删除的表:
flashback table 表名 to before drop;
清空“回收站”:
purge recyclebin;
直接一次性删除表:
drop table 表名 purge;
--表空间-->创建用户-->授权--->用户登录--->创表--->数据操作
附:一些Oracle语句
创建学生表:
create table student(
stu_id number(6),
stu_name varchar2(50),
stu_sex char(6),
stu_age number(3),
stu_hiredate date
);
删除表对象:
drop table student;
rowid伪列:当条记录的物理地址,唯一的,产生了以后不会发生变化
rownum:记录结果的排序,从1开始增1:rownum>=n(=除1外)为假
select rownum,s.* from student s where rownum<2;
select rownum,s.* from student s where rownum>2;
修改表结构:
alter table student add(stu_tel number(11),stu_address varchar2(100));
alter table student modify(stu_tel number(20));
alter table student drop(stu_address);
修改表名:
rename student to stu;
给表添加注释:
comment on table stu is '这是一个学生表';
comment on column stu.stu_id is ‘这是学生编号’;
查看表注释:
select * from user_tab_comments;
创建一个新的员工表,数据来源于已有的员工表
1,授权
grant select on emp to 用户名
2,复制表
create table newemp as select * from soctt.emp;
3,查看复制效果
select * from newemp;
使用数据字典,查看用户下对象的信息
select * from user_objects;