--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;