oracle马士兵上课笔记27
cd \
sqlplus sys/tiger as sysdba --以管理员登陆sys
alter user scott account unlock; --用户解锁
oracle中可创建的知识内容:
创建表
create tablename 字段和数据类型
insert into tablename values();
oracle 常用数据类型
char(8)定长字符串,效率高 (存入abc还是占8位)
varchar2(8)变长字符串 最多4096B
number(p,s)
p表示精度,即数字的总长度为p位
s表示小数点扣的位数,取值范围从-84到127
data
long 变长字符串,最大可达2G
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) unique,
constraint stu_name_email_uni unique(email, name)--两字段组合不能为空
)
约束(非空 not null, 唯一 unique, 主键primary key<非空并且唯一>, 外键foreign key,check<很少用,一般在程序中控制>)
constraint
表级约束
字段级约束
主键约束(primary key)主键字段值可以标识整条记录(字段值不能为空并且唯一)
主键建立后会自动建立索引(取数字类型的字段速度快)
create table stu
(
id number(6) primary key,--设置为主键(字段级)
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) ,
constraint stu_name_email_uni unique(email, name)--两字段组合不能为空
)
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) ,
constraint stu_id_pk primary key(id),--表级主键
constraint stu_name_email_uni unique(email, name)--两字段组合不能为空
)
外键约束(外键加在一张表两字段上,或者加在两张表的两字段上)
oracle在建表时会自动加上
******被参考的字段必须是主键
*****删除被参考字段所在表时会提示:违反完整约束条件。
create table class
(
id number(4) primary key,
name varchar2(20) not null
)
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4) references class(id),--字段级外键约束
email varchar2(50) ,
constraint stu_id_pk primary key(id),--表级主键
constraint stu_name_email_uni unique(email, name)--两字段组合不能为空
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) ,
constraint stu_class_fk foreign key (class) references class(id),--表级外键约束
constraint stu_id_pk primary key(id),--表级主键
constraint stu_name_email_uni unique(email, name)--两字段组合不能为空
修改表结构
alter table stu add (addr varchar2(100));
alter table stu drop (addr);
alter table stu modify (addr varchar2(150));
删除约束条件
delete from class;--有外键,直接删除时报错(违反完整约束条件) 约束条件一般不更改,是先删除再重新创建约束
alter table stu drop constraint stu_class_fk;
alter table stu add constraint stu_class_fk foreign key (class) references class (id);--与class表连接
修改非空约束?自己看
删除表
drop table tableName;
数据字典表
desc user_tables;
select table_name from user_tables;--查询当前用户下的表名
select view_name from user_views;--查询当前用户下的视图名
desc user_constrains;
select constraint_name, table_name from user_constraints;--查询当前用户下的约束
desc dictionary;--oracle数据字典表的表,保存的全是数据字典表
select table_name from dictionary;--600多条记录
索引 index--建立索引后,读数据时效率高,修改数据时效率低。
create index idx_stu_email on stu (email, class);--创建组合索引
drop index idx_stu_email;
select index_name from user_indexes;--查找所有索引
备注:给表某字段加主键、唯一约束,oracle数据库会自动为该字段建立索引。
什么时候建立索引:访问字段量大的时候考虑建立索引(不要轻易建立索引)
视图 view--视图就是一个子查询、虚表。
select view_name from user_views;--查询所有视图
create view v$_dept_avg_sal_info;
视图作用:简化查询,保护数据隐私。
视图缺点:增加维护支出,视图越多,维护越麻烦,比如表结构更改,视图应该做对应修改;
视图是可以更新数据的,但实际很少使用。
缺少:29,30主键、外键,34,35
了解EJB java走弯路后的回归之作
SOA 未来发展趋势
浙公网安备 33010602011771号