oracle数据管理

--tablespace表空间 就是保存数据内容的文件而已
--创建表空间 -- create tablespace 表空间名字
--创建表空间文件的位置 -- datafile '盘符路径/文件名.dbf'
--初始大小10mb  -- size 大小m单位 
--打开自动增长(当数据超过10mb允许数据库增加表空间的大小) -- autoextend on
--当空间不足时增加多少 -- next 大小m单位
--最大大小100mb -- maxsize 大小m单位
create tablespace huarui 
datafile 'G:\Workspace\Oracle\huarui.dbf'
size 32m
autoextend on
next 10m
maxsize 500m;

--删除表空间 drop tablespace 表空间名 including contents and datafiles 
--包含删除所有表空间中的内容和数据文件 including contents and datafiles 
--drop tablespace huarui including contents and datafiles;


--创建用户默认此表空间 
--创建用户 -- create user 用户名 identified by 密码
--指定用户保存在哪一个表空间 -- default tablespace  表空间名称
create user hrit identified by ccat
default tablespace huarui;

--授权 连接和数据文件访问权限 grant connect/resource/dba
grant dba to hrit;

--commit提交 DDL,DCL自动提交

--可以查看其它用户的表信息
select * from scott.emp;

--创建stuinfo表   
--学号number、
--姓名varchar2(长度)、
--性别varchar2(长度)、
--生日date  -- create table
create table stuinfo(
       id number,
             name varchar2(20),
             sex varchar2(4),
             birthday date
             -- cid number 外键
)

--添加年龄,地址列
--修改 表 表名 增加列 (字段名 字段类型) 
--alter table 表名 add ( 字段名 字段类型 )
alter table stuinfo add(age number);

--修改 表 表名 修改列 (字段名 字段类型) 
--alter table 表名 modify ( 字段名 字段类型 )
alter table stuinfo modify(sex varchar2(6));

--删除一列 请不要太随意,一旦定义好数据的字段,不能轻易删除
--alter table 表名 drop column 字段名;
--alter table stuinfo drop column age;

--添加约束 constraint 约束 
--alter table 表名 add constraint 约束名  约束类型 (字段名)
--主键 primary key(字段名);
--唯一 unique(字段名);
--外键foreign key

--约束名 : 保存的一个名字  pk/uq/fk_表名_字段名
alter table stuinfo add constraint pk_stuinfo_id primary key(id);
alter table stuinfo add constraint uq_stuinfo_name unique(name);

--修改约束 constraint 约束 
--1非空约束 not null
--修改 表 表名  修改 列名
-- alter table 表名 modify 列名 约束类型;

-- Drop primary, unique and foreign key constraints 
-- 删除 约束 drop constraint
-- 主键primary 唯一unique 外键 foregin key
-- alter table 表名 drop constraint 约束名称 cascade关联;

--2默认值 default 
-- alter table 表名 modify 字段名 default '值';
-- 注册,如果不填默认为男,并且不能修改
alter table stuinfo modify sex default '男';

--stuinfo插入数据
--添加三条测试数据
--sysdate当前系统时间
--to_date('字符串日期','日期格式')  
--字符串日期 yyyy-mm-dd
--取默认值default

--提交commit
--没有提交的话,该界面可以查到,但是其他程序无法正确查询
--DML语句是需要提交commit
insert into stuinfo values(1,'jack','男',to_date('1999-1-5','yyyy-mm-dd'),18);
insert into stuinfo values(2,'rose','女',to_date('2002-10-1','yyyy-mm-dd'),16);
insert into stuinfo values(3,'tom',default,sysdate,20);
-- 手动提交数据 F10,点击提交按钮
commit;

select * from stuinfo;

--3.检查约束 性别只能是男或者是女 CK_列名 check 
--年龄在15-35之间 -- check(字段名>=15 and 字段名<=35);
alter table stuinfo modify age check(age>=15 and age<=35);

--4.在学生表中添加班级编号
--添加一个新字段 cid number类型 在stuinfo 
--作为stuinfo该表的一个外键cid
alter table stuinfo add (cid number);

-- 创建班级信息表 classinfo 字段 cid 主键  cname班级名称
create table classinfo (
       cid number primary key,
             cname varchar2(20)
)

--oracle12c以下的版本都没有自增,序列实现自增

--5外键 FK_列名  先给学生表添加班级编号列
--添加外键约束  被引用的列必须是主键
--alter table 主表的名称 add constraint 约束名称 -- 添加表的约束
--foreign key (字段名) --创建外键
--references 引用的表名 (主键字段名)  -- 引用哪一张的表主键
alter table stuinfo add constraint fk_stuinfo_cid
foreign key(cid)
references classinfo(cid);

--限制数据,保证数据的完整性,一致性
insert into classinfo values(1,'java01');
select * from classinfo;
select * from stuinfo;
insert into stuinfo values(4,'张学友','男',to_date('1960-3-5','yyyy-mm-dd'),35,1);

--复制表
--create table 表名 as 表查询语句
--1.创建表 create table 表名
--2.来源于 as
--3.查询表 select * from 表名
create table temp_stu 
as
select * from stuinfo;

--往复制表中插入两条数据
--正常的表插入

--将复制表修改成classinfo2
--重命名 rename 旧表名 to 新表名;
rename temp_stu to new_stu;

--提交事务
--设置保存点
--查询数据 --select * from 表名;
--savepoint 保存点名字1;
--删除数据 --delete from 表名 where 条件查询;
--savepoint 保存点名字2;
--插入数据 --insert into 表名 values(字段,...)
--savepoint 保存点名字3

--回滚到保存点
--rollback to 保存点名字
--commit提交;

select * from stuinfo;
savepoint s1; --游戏存档
delete from stuinfo where id=1;
savepoint s2; --游戏存档
insert into stuinfo values(5,'郭富城','男',to_date('1962-2-5','yyyy-mm-dd'),30,1);
savepoint s3; --游戏存档
       
rollback to s1;
commit;

上一篇:MySQL常见约束


下一篇:MySQL主键唯一键重复插入解决方法