一、表名和列表规范
1.必须以字母开头
2.长度不能超过30字符
3.不能使用oracle的保留字
4.只能使用如下字符 A-Z,a-z,0-9,$,#等
二、数据类型
1.char 定长 最大2000个字符
例子:char(10) '小明' 前四个字符存放'小明',后面添加6个空格补全,虽然浪费空间,但是查询速度极快.
2.varchar2(20) 变长 最大4000个字符.
例子:varchar2(20) '小明' oracle分配四个字符.这样可以节省空间.
3.clob(character large object) 字符型大对象 最大4G
4.number(数字类型) 范围-10的38次方到10的38次方 可以表示整数,也可以表示小数.
例子:number(5,2) 表示一个小时有5位有效数,2为小数 范围 -999.99~999.99
number(5) 表示一个五位整数 范围-99999~99999
5.date(日期类型) 包含年月日和时分秒.
6.timestamp(日期类型) 这是oracle9i对date类型的扩展,精度较高,毫秒级.
7.blob(二进制类型) 可以存放图片/声音 最大4G(出于安全考虑可以存放至数据库,一般存放图片服务器下,存放路径以访问)
三、建表
create table student(
s_no number(4), --学号
s_name varchar(32), --姓名
s_sex char(2), --性别
s_birthday date, --出生日期
s_sal number(7,2) --奖学金
)
insert into student values(1,'小明','男','1992-09-10',23456.34)
四、删除
1.delete from student;--删除所有记录,表结构还在,写日志,可以恢复的,速度慢.
delete from student where s_no = 'A001';--删除一条记录
例子:在删除一条记录之前建立保存点(savepoint),delete之后,则回滚(rollback)可找回 SQL> savepoint a;
SQL> delete from student where s_no = 'A001';
SQL> rollback to a;
保存点只有一个,新建一个新的,则旧的被覆盖,事物提交则无法恢复到保存点
2.drop table student;--删除表的结构和数据.
3.truncate table student;--删除表中的所有记录,表机构还在,不写日志,无法找回删除的记录,速度快.
五、函数
sys_context函数
1) terminal:当前会话客户端所对应的终端的标识符
2) language:语言(编码集)
3) db_name:当前数据库名称
4) nls_date_format:当前会话客户端所对应的数据集用户名
5) session_user:当前会话客户端所对应的数据库用户名
6) current_schema:当前会话客户端所对应的默认方案名(一个用户对应一个方案,方案名和用户名一样)
7) host:返回数据库所在主机的名称
通过该函数,可以查询一些重要信息,比如你可以知道使用的是那个数据库等
select sys_context('userenv','db_name') from dual;
六、备份导出
exp 导出具体分为:导出表,导出方案,导出数据库三种方式.
导出使用exp命令来完成,该命令的选项有:
userid:用于指定执行导出操作的用户名,口令,连接字符串
tables:用于指定执行导出操作的表
owner: 用于指定导出操作的方案
full=y:用于指定执行导出操作的整个数据库文件
inctype:用于指定执行导出操作的增量类型
direct:直接路径(默认为n),导出数据快,百度得知(不写缓存,直接在把表中的数据读完就返给客户端)
rows: 用于指定执行导出操作是否要导出表中的数据,默认为y,rows=n,则只导出表结构
file: 用于指定导出文件名称
log: 用于指定导出日志写入文件
一、导出表
1)导出自己的表
exp userid=scott/sysorcl@orcl tables=(emp) file=D:\emp.dmp;--导出本地数据库(数据和结构)
exp userid=scott/sysorcl@10.10.90.100:1521/orcl tables=(emp) file=D:\emp.dmp;--导出远程数据库(数据和结构)
2)导出其他方案的表
如果用户要导出其他方案的表,则需要dba权限或是exp_full_database的权限,比如system就可以导出scott用户的表
exp userid=system/sysorcl@orcl tables=(scott.emp) file=D:\emp.dmp;--导出本地数据库(数据和结构)
exp userid=system/sysorcl@10.10.90.100:1521/orcl tables=(scott.emp) file=D:\emp.dmp;--导出远程数据库(数据和结构)
3)导出表结构
exp userid=scott/sysorcl@orcl tables=(emp) file=D:\emp.dmp rows=n;--导出本地数据库(只有结构,没有数据)
exp userid=scott/sysorcl@10.10.90.100:1521/orcl tables=(emp) file=D:\emp.dmp rows=n;--导出远程数据库(只有结构,没有数据)
4)使用直接导出方式
exp userid=scott/sysorcl@orcl tables=(emp) file=D:\emp.dmp direct=y;--导出本地数据库(数据和结构)
这种方式比默认的常规方式速度要快,当数据量大时,可以考虑用这种方式
这是需要数据库的字符集要与客户端的字符集完全一致,否则会报错
二、导出方案
导出方案是指使用export工具导出一个方案或是多个方案中所有对象(表,索引,约束..)和数据,并存放到文件中.
1)导出自己的方案
exp scott/sysorcl@orcl owner=scott file=D:\scott.dmp;
2)导出其他方案
如果用户要导出其他方案,则需要dba权限或是exp_full_database的权限,比如system就可以导出任何方案.
exp userid=system/sysorcl@orcl owner=(system,scott) file=D:\emp.dmp;--导出system和scott的方案
三、导出数据库
导出数据库是指利用export导出所有数据库的对象及数据,要求该用户具有dba权限或是exp_full_database的权限
exp userid=system/sysorcl@orcl full=y inctype=complete file=D:\orcl.dmp;--导出整个oracle实例对象及数据(对于单实例即整个数据库)
注意一下:在导出和导入的时候要到oracle的bin目录下面
七、备份导入
imp 导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是exprot所导出的文件.与导出相似,导入也分为:导入表,导出方案,导出数据库三种方式.
导出使用exp命令来完成,该命令的选项有:
userid:用于指定执行导入操作的用户名,口令,连接字符串
tables:用于指定执行导入操作的表
fromuser:用于指定源用户
touser:用于指定目标用户
full=y:用于指定执行导入整个文件
inctype:用于指定执行导入操作的增量类型
rows: 用于指定执行导入操作是否要导入表行(即表中的数据),默认为y,rows=n,则只导出表结构
file: 用于指定导入文件名称
ignore: 如果表存在,则只导入数据
log: 用于指定导入日志写入文件
一、导入表
1)导入自己的表
imp userid=scott/sysorcl@orcl tables=(emp) file=D:\emp.dmp;
2)导入表到其他用户
要求该用户具有dba权限,或是exp_full_database的权限
imp userid=system/sysorcl@orcl table(emp) file=D:\emp.dmp touser=scott;
3)导入表的结构
只导入表的结构而不导入数据
imp userid=scott/sysorcl@orcl tables=(emp) file=D:\emp.dmp rows=n;
4)导入数据
如果对象(比如表)已经存在可以只导入表的数据
imp userid=scott/sysorcl@orcl tables=(emp) file=D:\emp.dmp ignore=y;
二、导入数据方案
导入方案是指使用import工具将文件中的对象和数据导入到一个或者多个方案中.如果要导入其他方案,则要求该用户具有dba权限,或是imp_full_database权限
1)导入自身方案
imp userid=scott/sysorcl file=D:\emp.dmp;
2)导入其他方案(要求该用户具有dba权限)
imp userid=system/sysorcl file=D:\emp.dmp fromuser=system touser=scott;
三、导入数据库
在默认情况下,当导入数据库时,会导入所有对象结构和数据,案例如下(相当于数据库迁移)
imp userid=system/sysorcl full=y file=D:\orcl.dmp;