在oracle中可以用rename修改表名,但是些命令只限于oracle使用
rename person to tperson;
truncat table tperson;//截断表,直接删除所有的数据,且不能回滚
create table person(
pid varchar2(18),
name varchar(200) UNIQUE not null,//非空约束
age number(3) not null,
birthday date,
sex varchar2(2) DEFAULT '男',
address varchar2(200),
CONSTRAINT person_pid_pk PRIMARY KEY(pid),//主键约束
CONSTRAINT person_name_uk UNIQUE(name),//唯一约束
CONSTRAINT person_age_ck CHECK(age between 0 and 100),//检查约束
CONSTRAINT person_sex_ck CHECK(sex in('男','女'))//检查约束
);
create table book(
bid number primary key,
pid varchar2(18),
bname varchar(30),
bprice number(5,2),
CONSTRAINT person_book_pid_fk FOREIGN KEY(pid) PEFERENCES person(pid)[ON DELETE CASCADE]
[可选,一般选择:在删除主表数据时,子表中的数据同时删除,级联操作]
);
Drop table person CASCADE CONSTRAINT;//强制删除,不管约束
alter table 表名 add constraint 约束名称 约束类型(约束字段)
alter table 表名 delete constraint 约束名称
视图的功能:一个视图实际上就是封闭了一条复杂的查询语句。
create or replace view 视图名称 as 子查询;//如果有则先删除
WITH CHECK OPTION则不能更新视图创建的条件 where deptno = 20则dept不能修改
WITH READ ONLY视图只读,不能修改数据
create view empv20 as select empno,ename,job,hiredate from emp where deptno = 20;
drop view empv20;
在Oralce中要完成自动增长操作,则只能依靠序列来完成,需要用户手工完成
Create SEQUENCE myseq;
序列的两种操作
nextVal:取得下一个内容
currVal:取得当前内容
同义词可以让其他用户通过一个名称方便的访问“用户名.名称”
create synonym 同义词名称 for 用户名.表名称
drop synonym 同义词名称
用户管理 对用户进行建立和授权的操作
要创建用户服务则要使用管理员进行登陆
create user 用户名 identified by 密码;
为用户授权
grant 权限1,权限2。。。 to 用户
grant create session to test;把创建session给用户test,此时还不能创建表
一个新的用户所有的权限都要分别赋予,如果现在假设杨把多个权限一次性赋予一个用户,则可以将这些权限定义成一组角色。在oracle中提供了两个主要的角色。
grant connect, resource to test;
在test用户下建立tab表
create table tab(
id number primary key not null,
name varchar2(20)
);
超级管理员修改普通用户密码
alter user 用户名 identified by 密码;
alter user test identified by hello;
在用户第一次登陆的时候修改密码,手工让一个密码失效
alter user 用户名 password expire;
alter user test password expire;
锁住用户:alter user 用户名 account lock;
alter user test account lock;
解锁:alert user 用户名 account unlock;
alter user test account unlock;
如果要用test访问scott.emp,则需要授予此张表的访问权限CURD
将scott下的emp查询及删除给test
grant select,delete on scott.emp to test;
回收权限:revoke 权限。。 on 用户.表名称 from 用户;
revoke select,delete on scott.emp from test;
数据库备份:exp 运行cmd 进入E:data 然后exp
数据库恢复:imp 运行cmd 进入E:data 然后imp
嵌套表:在一个表中还包含另外一个子表
一个部门可能承接多个项目,按原始方式应该定义两张表,department,project表
将project表的类型作为一个department表的字段类型,达到嵌套功能
可变数组:跟嵌套表一样要先定义一个类型
高级开发部分:游标、触发器、过程、包、函数