- oracle 数据类型
Char(10) 固定长度字符串
varchar2(10) 可变长度字符串
number(m,n) m:数字的位数 n:小数位
date 时间(日-月-年)
blob 二进制
- 创建表
create table [表名](
列1 数据类型 约束,
列2 数据类型 约束,
...
列n 数据类型 约束);
例:create table student(
id number primary key,
name char(5) not null,
sex char(5),
age number,
birthday date);
- 删除表
drop table [表名];
注意:在oracle中当表被删除后会进入回收站
查看回收站
show recyelebin;
清空回收站
purge recyclebin;
彻底删除某张表
purge table [表名];
从回收站中还原
flashback table [表名] to before drop;
删除表并从回收站删除
drop table [表名] purge;
- 插入数据
1.严格按照表中列的顺序插入
insert into [表名](列1,列2,...,列n) values(值1,值2,...,值n);
例:insert into student (id,name,sex,age,birthday)
values(1,'张三','男',18,to_date('1997-1-1','yyyy-mm-dd'));
2.如果所有列都需要插入,则可以省略表名后的列名,但是必须严格按照表中列的顺序进行赋值
insert into [表名] values(值1,值2,...,值n);
例:insert into student
values(1,'张三','男',18,to_date('1997-1-1','yyyy-mm-dd'));
注意:如果插入时间类型,注意插入语法
- 表的复制
表结构与表中数据都复制
create table [表名] as select * from [被复制表名];
只复制表结构
create table [表名] as select * from [被复制表名] where 1=2;
选择性复制1(复制部分行)
create table [表名] as select [列1],[列2],...,[列2] from [被复制表名];
选择性复制2(复制部分列)
create table [表名] as select * from [被复制表名] where [满足条件];
- 表结构的修改
向表中增加一列
alter table [表名] add(列名 数据类型);
修改某一列的数据类型
alter table [表名] modify(列名 数据类型);
删除表中的列
alter table [表名] drop column [列名];
修改列名
alter table [表名] rename column [列名] to [新的列名];
- 约束
非空约束 not null (nk)
数据表中某个列中不希望出现null值,则可以给该列加上not null约束
创建表的时候添加约束
create table [表名] (列名 数据类型 not null);
例:create table student(id number not null,name char(20) not null);
建表后,使用alter追加约束
alter table [表名] modify [列名] [数据类型] not null;
例:alter table student modify id number not null;
唯一约束 unique (uk)
每一列上的数据不允许重复的时候使用唯一约束
创建表的时候添加约束
create table [表名] (列名 数据类型 unique);
建表后,使用alter追加约束
alter table [表名] add constraint [约束名] unique(约束的列名);
例:alter table student add constraint uk_id unique(id);
主键约束 primary key (pk)
主键约束 = 非空约束 + 唯一约束
主键约束作为数据的唯一标记
添加主键的3种写法
1.create table [表名](列名 数据类型 primary key);
例:create table student (id number primary key);
2.create table [表名](列名 数据类型,constraint 约束名 primary key(列名));
例:create table student (id number constraint pk_id primary key(id));
3.alter table [表名] add constraint 约束名 primary key(列名);
例:alter table student add constraint pk_id primary key(id);
- 复合主键
一张表多个列设置主键
复合主键在使用过程中,只有主键的所有字段的值都与已存在的一行数据重复时
才会被认为是重复数据,违反唯一约束
create table [表名] (列名1 数据类型,列名2 数据类型,
constraint 约束名 primary key(列名1,列名2));
- 检查约束
为表中某些列添加数据时限制条件
例如设置性别必须填写 男 或 女
create table student (id number,name char(10),age char(2),
constraint ck_age check(age between 18 and 30));
例如年龄范围 18-30
create table student (id number,name char(10),sex char(2),
constraint ck_sex check(sex in('男','女'));
- 外键约束 foreign key (fk)
外键约束是建立在多个表上的约束(本例中采用2张表)
两张表之间是存在父子关系的,即子表中的某个列的取值范围由父表决定
Student学生表(子) class班级表(父)
建表(先建立父表,然后子表)
在子表中写外键约束
创建表时添加约束
create table [表名] (列名1 数据类型,列名2 数据类型,
constratin [约束名] foreign key(列名1) refereneces [父表名](父表主键) )
已创建表后追加约束
alter table [表名] add constraint [约束名] foreign key(列名)
references [父表名](父表主键);
在添加数据的时候要严格按照先父后子的顺序
必须使父表主键先存在 才可插入子表中外键的相关数据
- 约束的其他操作
查询约束
select owner,constraint_name,table_name from user_constraints;
删除约束
alter table [表名] drop constraint [约束名];