在本次笔记中,会介绍表的创建,包括索引的类型,设置字段为自增的序列,
1、创建表
create table 表名(
字段名1 字段类型,
字段名2 字段类型,
constraint pk primary key(字段名1), -- 创建唯一的主键
constraint ck_len check length(字段名1) >=2,
constraint ck_in 字段名1 in (条件),
constraint fk foreign key (外键) references 表名(主键)
)
comment on table 表名 is ‘表注释条件’;
comment on column 列名 is ‘列注释条件’;
--添加索引
create 索引类型 indent
--设置字段名为自增的序列
在oracle中没有自增的序列字段,mysql中可以在创建表字段时使用auto_increment
在oracle中设置字段为自增序列时,可以使用创建序列,然后创建触发器进行自增序列的生成
--创建索引
create 索引类型 index 索引名 on 表名(字段名)
索引的类型:
省略一般为普通的索引;
唯一索引有unique;
组合索引,在多列或者是两列以上的字段上设置组合索引;
位图索引(Bitmap indexes):具有少量重复值的列(如性别、国家等),可以节省空间并提高查询效率;
位图联结索引(Bitmap Join Indexes):用于优化多个表之间的连接操作,特别是当连接条件涉及低基数(唯一值较少)列时;
--创建字段的自增序列
create or replace sequence 序列名
start with 开始的序列数
minvalue 最小的序列数,不指定的话是默认没有最小值的
maxvalue 最大的序列数,不指定的话是默认没有最大值的
increment by 步长数
nocache/cache 不缓存/缓存数
nocycle/cycle 不循环/循环数
--创建自增序列的触发器
create or replace trigger 触发器名
before|after insert update delete on 表名
for each row
if :new.自增序列的字段名 is null then
select 自增序列名.nextval into :new.自增序列的字段名 from dual;
end if;
end;
下面对表的一些相关操作
--表的复制
--复制表的所有内容
create table 表名 as select * from 复制的表名;
--只复制表的字段,不复制数据
create table 表名 as select * from 复制的表名 where 1<>1;
--复制表的某些字段
create table 表名 as select 字段1,字段2,... from 复制的表名
--只复制表的某些字段
create table 表名 as select 字段1,字段2,... from 复制的表名 where 1<>1
--表的重命名
rename 旧表名 to 新表名
--表的删除
--删除整个表
drop table 表名
--删除表,purge不可回滚
drop table 表名 purge
--删除表中数据
truncate table 表名
delete from 表名
--根据条件删除表中的某些数据
delete from 表名 where 删除的条件
--添加表字段
--添加新的字段
alter table 表名 add (字段名1 字段类型,字段名2 字段类型)
--修改字段类型
--修改已有的字段类型
alter table 表名 modify (字段名 新的字段类型或新的字段长度)
--修改字段名
alter table 表名 rename column 旧字段名 to 新字段名
--删除表字段
alter table 表名 drop column列名
--添加表数据
insert into 表名(字段名1,字段名2,...) values(字段名1值,字段名2值)
--修改/更新表中数据
--更新
update 表名称 set 字段名1 = 值,字段名2 = 值,... where 更新的条件
--基于另一个表进行更新
update 表名称 set (字段名1,字段名2,...)=(select 字段名1,字段名2,...from 表名 where 查询条件)