oracle数据类型
-
char(n) :保存定长的字符串,长度不变,不用重新计算空间,效率更高,可能会浪费空间。空间换效率
-
varchar2(n):保存不定长的字符串,使用时根据实际长度计算空间,效率更低一点,但省空间。效率换空间。
-
NUMBER(p,s):既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。
-
DATE:存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。
-
TIMESTAMP:不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。
-
CLOB:存储大的文本,比如存储非结构化的XML文档
-
BLOB:存储二进制对象,如图形、视频、声音等
数据字典:专门记录数据库对象信息、对象结构、管理信息、存储信息的数据表。
闪回技术
类似windows的回收站,数据被删除后,默认放到回收站中,可以从这里恢复被删除的数据。
- 查看回收表中的数据:
select r.OBJECT_NAME,r.original_name,r.operation,r.TYPE from recyclebin r
object_name:对象名
original_name:原始表名
-
从回收表中闪回(还原)被删除的表:
flashback table aa to before drop
-
直接删除表,不放到回收表中:
drop table aa purge
-
从回收站中删除表
purge table aa
-
清空回收站
purge recyclebin
修改表结构
alter table 表名 modify 字段 新数据类型
表空间
是数据库的逻辑存储设备,它把数据库信息组织成物理存储空间
如果不给用户指定默认表空间,则用户的默认表空间为users
完整性约束
完整性约束是保证用户对数据库所做的修改不会破坏数据的一致性,是保护数据的正确性和相容性的一种手段。
维护完整性
- 提供定义完整性约束条件机制
- 提供完整性检查的方法
- 违约处理
非空约束:不能为空 not null
唯一约束:不能重复,可以允许有一个空值 unique
constraint 约束名称(uk_列名)unique(列名)
主键约束:不能为空,也不能重复 primary key
constraint 约束名称(pk_列名)primary key(列名)
检查约束:对数据列的值进行检查,如果不合格就报错 check
constraint 约束名称(ck_列名)check(列名)
外键约束:确保从表中的数据是有意义的 references
constraint 约束名称(rf_列名)references(列名)
create table student(
sid number(5),
name varchar2(20),
sex char(4),
age number(5) not null,
address varchar2(50),
constraint pk_sid primary key(sid),
constraint ck_sex check(sex = '男' or sex = '女'),
constraint uk_name unique(name)
)
复合主键:constraint 约束名称(uk_列名)primary key(列1,列2)
sqlplus 的使用
用户登录:sqlplus username/password
退出:quit
scott 用户默认没有创建视图的权限
登录system用户,给scott用户授权创建视图
grant create view to scott
创建序列
- 创建序列
create sequence snumber
- 查看已经创建的序列
select * from user_sequences
序列名.nextval:获取序列的下一个值,每调用一次,序列值都会按步长自动增加
序列名.currval:获取序列的当前值
create sequence my_seq start with 100 increment by 2
create table seq(
mid number(5),
mname varchar(20)
)
insert into seq values(my_seq.nextval,'张三');
insert into seq values(my_seq.nextval,'李四')
同义词
-
为一个表创建同义词
比如在sys用户中使用scott用户中的emp表
create synonym emp for scott.emp
-
删除同义词:
drop synonym
rownum:自动的进行行号的显示
select deptno,rownum rid from dept where rownum < 3
rownum用在where中不能使用运算符>
,只能使用<
rownum结合子查询可用于分页查询,
select * from (select 列1...,rownum rid from 表名
where rownum <= 当前页*每页大小) e
where e.rid > (当前页-1) * 每页大小