一.创建表
create table 表名称(
字段 数据类型 [default value],
字段 数据类型 [default value]
);
要求 :
1.必须以字母开头(由字母, 数字, _, #,组成)
2.长度1-30个字符
3.名称要有意义
4.不是Oracle中的保留字
二.复制表
create table 表名称 as 子查询
复制表结构和数据
create table emp20 as select * from emp where deptno=20;
只复制表结构(子查询的where条件是一个不成立的条件)
create table empnull as select * from emp where 1=2;
三.重命名表(事务会自动提交,rollback无效)
rename 旧表名称 to 新表名称
rename
四.截断表,把表的数据删除,表结构存在(事务会自动提交,rollback无效)
truncate table 表名称
五.删除表
drop table 表名称; (BIN..残留)
完全删除: drop table 表名称 purge;
六.闪回技术
查询回收站: select * from recyclebin;
闪回表: flashback table 表名称 to before drop;
删除回收站里的一张数据表: purge table 表名称;
删除回收站里的所有数据表: purge recyclebin;
编写数据库的脚本
--删除数据表
drop table stu purge;
--创建数据表
create table stu(
sid number,
sname VARCHAR2(50) default '无名氏'
);
--添加数据
insert into stu(sid,sname) values(001,'SMITH');
insert into stu(sid,sname) values(002,'SCOTT');
insert into stu(sid,sname) values(003,'LUCY');
--提交事务
commit;
七.修改表结构(alter)
1.添加字段
alter table 表名称 add (字段名 数据类型 [default value]),[(字段名 数据类型 [default value])];
2.修改表中字段
alter table 表名称 modify (字段名 数据类型 [default value]);
例:alter table stu modify (sname varchar2(30));
alter table stu modify (sex varchar2(10) default '男');
注:mysql中的语法 要加column关键字
ALTER TABLE attachment modify column attachment.attach_origin int default '0';
3.删除表中字段
alter table 表名称 drop column 列名;
例:
alter table stu drop column age;
无用状态的设置(将列设置为无用状态,列的数据存在)
(1)alter table 表名称 set unused (列名);
(2)alter table 表名称 set unused column 列名;
例: alter table stu set unused (sex);
无用状态下
删除: alter table 表名 drop unused column;
八.列的约束 字段 数据类型 [约束条件]{unique,not null,primary key}
非空约束 (not null)
唯一约束 (unique UK(缩写))表中数据不能重复,null值(可以重复)不受唯一约束影响
添加唯一约束的另一种方法: email varchar2(30),constraint uk_email unique(email)
主键约束 (primary key pk) 标识唯一约束(not null + unique)
sid number constraint pk_sid primary key(sid)
复合主键 只有当这两个主键的id值一样时才报错
sid number constraint pk_sid primary key(sid)
pid number constraint pk_sid primary key(sid)
检查约束 (ck check)用户自行编写内容的检查条件(不建议使用) 注:MySQL不支持
age number(3) check(age between 0 and 150) 设置年龄在[0-150]之间
constraint ck_age check(age between 0 and 150)
外键约束(FK foreign key) 表的关联
被引用的列必须具有主键约束或唯一约束
constraint 外键名 foreign key(从表外键字段) references 主表名 (主表主键)
A表的主键被B表的外键引用,B表的主键被A表的外键引用
drop table stu cascade constraint;
修改约束
增加约束:
alter table 表名称 add constraint 约束名称 约束类型(约束字段)
alter table stu add constraint pk_sid primary key(sid)
通过数据字典查看约束
select * from user_constraints where table_name = 'STU';
alter table 表名称 modify (字段 数据类型 not null);
删除约束:
alter table 表名称 drop constraint 约束名称;(数据字典 )