level 11
生词:
schema:模式,图表;
alter:改变,更改;
在创建表时同时声明主键,但没有给主键名;
create table deptt
(
deptno number(2),
dname varchar2(20),
loc varchar2(20),
constraint plk_dept primary key (deptno)
);
2014年07月14日 12点07分
2
level 11
在创建表时声明主键,同时给主键命名;
create table insured_autos
(
policy_id number,
vin varchar2(40),
coverage_begin date,
coverage_term number,
constraint pk_insured_autos primary key (policy_id,vin)
using INDEX TABLESPACE index
storage(initial 10m next 5m pctincrease 0)
)
TABLESPACE users storage(initial 10m next 5m pctincrease 0);
第 8 行出现错误:
ORA-02216: 需要表空间名
2014年07月14日 12点07分
3
此处index需是已存在的表空间名
2014年07月14日 12点07分
level 11
1、从oracle10g开始删除数据库表的时候并不是真正删除,而是放到了recyclebin中,这个过程类似 windows里面删除的文件会被临时放到回收站中。
2、删除的表系统会自动给他重命名就是你看到的 【BIN$】开头的名字
3、通过 show recyclebin 命令可以查看被删掉的表的详细信息,或者查询
select * from recyclebin;
4、收回表的命令:
flashback table 原表名 to before drop;
5、情况回收站的命令:
purge recyclebin;
6、如果不想删除的表经过回收站
drop table 表名 purge;
或者停用数据库的回收战功能
10.1版本中,修改隐藏参数 _recyclebin
alter system set "_recyclebin" = false;
10.2版本中,
alter system set recyclebin = off;
//以上奔驰M888提供
2014年07月14日 12点07分
4
level 11
外键是保证表之间完整性约束的一种方法;
外键的建立与主键的建立类似,都可以在create table命令或alter table命令中说明;为外键命名,要用constraint constraint_name来指定;
创建dept1主表,为外界引用做准备,主键名称为pk_dept1;
create table dept1
(
deptno number(2),
dname varchar2(9),
loc varchar2(10),
constraint pk_dept1 primary key (deptno)
);
2014年07月15日 12点07分
5
level 11
在创建emp1表时声明deptno列为外键,其名称为fk_deptno;
create table emp1
(
empno number(4),
ename varchar2(10),
job varchar2(10),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno constraint fk_deptno references dept1 (deptno)
);
或
create table emp2
(
empno number(4),
ename varchar2(10),
job varchar2(10),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno,
constraint fk_deptno2
foreign key(deptno) references dept1(deptno)
);
2014年07月15日 12点07分
6
level 11
使用delete cascade管理引用完整性
create table emp3
(
empno number(4),
ename varchar2(10),
job varchar2(10),
mgr number (4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2) constraint fk_deptnp3
references dept1(deptno)
on delete cascade
);
2014年07月15日 13点07分
7
level 11
生词
cascade:级联,串联,级;
创建带有主键的父表unit_inf和明细表pay_lst_det,再用alter table语句增加外键;
create table unit_inf
(
bank_code varchar2(6), --经办行代码
acc_no varchar2(15) primary key, --单位账号
oper_no varchar2(10), --操作员
unit_pay_rate number(7,4), --单位缴交率
per_pay_rate number(7,4) --个人缴交率率
)
tablespace users;
2014年07月15日 13点07分
8
level 11
alter table pay_lst_det
add constraint fk_acc_no
foreign key (acc_no)
references unit_inf(acc_no);
2014年07月15日 13点07分
10
level 11
由于Oracle不允许改变已被定义的外键的列,也不允许改变外键的名字,所以只能用alter table 定义一个新的外键或使一个已存在的外键无效;
2014年07月16日 06点07分
11
level 11
将已定义的约束为无效;
alter table customers disable unique(areaco,phoneno) cascade;
定义一个约束,并使该约束无效;
alter table employees add constraint check_comp
check (salary + (commission_pct*salary)<=5000)
disable constraint check_comp;
2014年07月16日 06点07分
12
level 11
SQL> alter table employees add constraint check_comp
2 check(salary+(commission_pct*salary)<=5000)
3 disable constraint check_comp;
disable constraint check_comp
*
第 3 行出现错误:
ORA-01735: 无效的 ALTER TABLE 选项
2014年07月16日 06点07分
13
level 11
要删除已定义的外键,要用alter table命令中的drop关键字来实现
删除EMP2表中的deptno约束。
alter table emp2 drop constraint deptno;
2014年07月16日 11点07分
14
level 11
oracle提供了5种完整性约束:
即:检查(check)、非空(not null)、唯一(unique index)、主键(primary key)、外键(foreign key)。
2014年07月17日 10点07分
15
level 11
生词:
condition(制约、限制、影响);
reference(引用,参考);
创建emp4表时,对sex进行限制;
create table emp4
(
empno number(4) constraint abc primary key,
ename varchar2(10),
job varchar2(10),
sex char(2) check(sex='男' or sex='女'),
mgr number(4),
hiredate date,
sal number(7,2), /*工资*/
comm number(7,2), /*奖金*/
deptno number(2),
check(sal+comm>0 and sal+comm<=5000)
);
2014年07月17日 10点07分
16
level 11
生词:
gender:性别、种类;
marital:夫妻、婚姻;
在创建polices表时使用constraint和check进行描述;
create table policies (
policy_id number,
holder_name varchar2(40),
gender varchar2(1) constraint chk_gender check (gender in
('M','F')),
marital_status varchar2(1),
date_of_birth date,
constraint chk_marital check (marital_status in('S','M','D','W'))
);
2014年07月17日 11点07分
17
level 11
生词:
status:状况,情形,身份
删除表中的约束;
例:alter table table_name drop constraint constraint_name;
2014年07月17日 11点07分
18
level 11
例子中引用tst1表,却并无此表,所以创建此表;
create table tst1
(
per_id number(3),
name varchar2(20),
telno varchar2(20),
mobno varchar2(20)
);
2014年07月17日 11点07分
19
level 11
SQL> alter table tst1 add constraint telno_len check(length(telno)<=15);
表已更改。
2014年07月17日 12点07分
20
level 11
SQL> col table_name for a20
SQL> col search_condition for a30
SQL> set line 123
SQL> select constraint_name,table_name,search_condition from user_constraints
2 where constraint_name='telno_len';
未选定行
2014年07月17日 12点07分
21