大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Oracle学习(三) — 数据库操作「建议收藏」,希望您对编程的造诣更进一步.
- Oracle表与用户关联
- 每一个用户,需要确定表存放位置,这个位置称为表空间
- 在Oracle中表空间分2中:永久表空间、临时表空间
- 临时表空间:使用SQL语句操作时,结果先进入临时表空间
- 永久表空间:当执行commit时,数据将从
临时表空间
到永久表空间
。
用户权限和RBAC(了解)
- 赋予用户dba角色
grand dba to 用户名
代码100分
- RBAC(Role-Based Access Control) 基于角色的访问控制
- 增强权限的可维护性
1、创建用户
-
语法
代码100分
-- 创建用户 create user 用户名 identified by 密码 default tablespace 表空间 temproary tablespace 临时表空间 quota 大小 on 表空间; //当前用于指定的表空间的限额大小
-
实例
-- 创建用户 create user tqyl identified by tqyl default tablespace tqyl temporary tablespace tqyltemp quota 50m on tqyl; --赋予用户所有权限(管理员权限dba) -- grant dba to 用户名; grant dba to tqyl;
2、创建表空间(永久)
-
基本语法
代码100分
create tablespace 表空间名称 datafile "表空间保存位置" size 默认表空间大小 autoextend on; -- 空间大小自动增强,如果储存量超过初始大小,则开始自动扩容
-
实例
create tablespace tqyl datafile "E:workspaceJavaOraclespace qyl.dbf" size 10m autoextend on;
-
删除表空间
-- 删除表空间 drop tablespace tqyl including contents --删除表内容 and datafiles; --删除表空间物理文件
3、创建临时表空间
-
语法
- 与创建
表空间
有2处不一样temporary
和tempfile
-- 创建临时表空间 create temporary tablespace 临时表空间名称 tempfile "临时表空间位置" size 10m autoextend on;
- 与创建
-
实例
-- 创建临时表空间 create temporary tablespace tqyltemp tempfile "E:workspaceJavaOraclespace qyltemp.dbf" size 10m autoextend on;
4、表的操作
4.1、创建表
- 创建一个新表
create table 表名(
字段名 类型 [约束],
字段名2 类型 [约束],
);
- 拷贝一个表(结构+数据)
create table 表名 as 查询语句;
- 数据类型
分类 | 类型 | 描述 |
---|---|---|
数值类型 | NUMBER | 表示整数和浮点数 NUMBER(5) 最大可以存的数为99999 NUMBER(5,2) 最大可以存的数为 |
INT/INTEGER | 整数 | |
FLOAT | 双精度浮点数 | |
字符类型 | CHAR(n) | 定长字符 |
VARCHAR2(n) | 变长字符 | |
日期类型 | DATE | 日期,精确到秒 |
TIMESTAMP | 日期类型,精确到小数秒 | |
大对象类型 | LOB | 8-12TB数据 并可分段处理 |
CLOB | 存储字符,最大可以存4个G | |
BLOB | 存储二进制数据,最多可以存4个G |
-
实例
-- 创建学生表 create table student( stuid int, stuname varchar2(20), sex char(1), age number(3,0), birthday date, email varchar2(20), phone char(11) ); -- 拷贝一个表 select * from hr.employees; create table emp as select * from hr.employees;
4.2、修改表
alter table 表名 具体操作 数据;
-- 添加
alter table 表名 add (列描述,....);
-- 修改
alter table 表名 modify (列描述,....);
-- 删除列
alter table 表名 drop column 列名;
4.3、删除表
drop table 表名
5、约束
5.1、什么是约束?
保证数据库数据的完整性和一致性的一套机制。
- 我们使用约束限定表中数据(不能随意添加、不能随意修改、不能随意删除)
5.2、常见约束
关键字 | 描述 | 特点 |
---|---|---|
primary key | 关键字约束 | 被关键字约束修饰的列 不允许为空,不允许重复 |
not null | 非空约束 | 被非空约束修饰的列 不允许为空 |
unique | 唯一约束 | 被唯一约束修饰的列 不允许重复 |
default | 默认约束 | 被默认约束修饰的列 如果只为null,使用默认值 |
foreign key | 外键约束 | 通过主外键关系描述一对多关系 |
==check== | 检查约束 | 被检查约束修饰的列 修改数据时,使用检查的条件 进行校验 |
5.3、主键约束
- 添加约束
-- 主键约束
-- 方式1:创建表,声明字段时,添加约束 (只能指定一个字段为主键)
create table pk01(
pid int primary key,
name varchar2(20)
);
-- 方式2:创建表,声明字段后,添加约束 (可以设置联合主键)【推荐】
create table pk02(
pid int,
name varchar2(20),
constraint pk02_pid primary key (pid)
);
-- 方式3:创建后,修改表结构,添加约束 【推荐】
create table pk03(
pid int,
name varchar2(20)
);
alter table pk03 add constraint pk03_pid primary key (pid);
- 删除约束
-- 删除主键
alter table pk03 drop primary key;
-
主键验证
insert into pk01(pid,name) values(1,"jack"); -- 不允许重复执行 insert into pk01(name) values("jack"); -- 不允许为null commit;
5.4、唯一、非空、默认
- 唯一约束,添加约束方式与
主键约束
一直,也就是可以采用3种方式
-- 唯一约束 (第三种)
create table un01(
pid int,
name varchar2(20)
);
alter table un01 add constraint un01_name unique(name);
- 唯一验证
insert into un01(pid,name) values(1,"jack"); -- 不允许重复执行
insert into un01(name) values("rose"); -- 可以执行
commit;
- 非空约束
-- 非空约束
create table nn01(
pid int,
name varchar2(20) not null
);
- 非空验证
insert into nn01(pid,name) values(1,"jack"); -- 允许重复录入
insert into nn01(pid) values(2); --不允许为null
commit;
- 默认约束
-- 默认约束
create table de01(
pid int,
name varchar2(20) default("游客")
);
- 默认验证
insert into de01(pid) values(2); -- 只录入id,name默认游客
commit;
5.4.1、检查约束
-- 检查校验
create table ch01(
pid int,
sex char(10) check( sex in ("男","女") ),
age int check( age >=0 and age <=100 )
);
- 检查校验
insert into ch01(pid,sex,age) values(1,"男",18); -- 可以录入
insert into ch01(pid,sex,age) values(2,"妖",18); -- 不允许
commit;
5.5、联合主键
- 联合主键:2个以上字段,组合在一起为主键,称为联合主键
- 应用场景:多对多关系中间表
-- 联合主键(中间表)
drop table student_course;
create table student_course(
sid varchar2(20) ,
cid varchar2(20) ,
score number(4,1)
);
alter table student_course add constraint student_course_pk primary key (sid,cid);
insert into student_course(sid,cid,score) values("s001","c001",100); --不允许重复
commit;
6、DML(增删改)
- DML:数据操作语言,完成数据库
增删改
操作
6.1、添加
-- 完整用法
insert into 表名(字段1,字段2,...) values(值1,值2,...)
-- 省略用法:值顺序必须与表中的列顺序对应
insert into 表名 values(值1,值2,...)
6.2、修改
-- 语法1:更新表中的所有数据
update 表名 set 字段1=值1,字段2=值2,...
-- 语法2:更新指定数据(条件)
update 表名 set 字段1=值1,字段2=值2,... where 条件
6.3、删除
-- 语法1:删除所有
delete from 表名;
-- 语法2:删除指定数据(条件)
delete from 表名 where 条件;
-- 语法3:
truncate table 表名;
- delete和trunacte区别:
- delete 删除表中的数据,支持回滚。
- truncate删除表结构,重新创建。
7、外键约束
7.1、概述
-
名词解释:
- 主表:多表关系中的1表,又称为主表。
- 主表的主键:1表的primary key 修饰字段的。
- 从表:多表关系中的多表,又称为从表。
- 从表的外键:用于存放从表对应的主键主键的字段。
7.2、语法
- 外键约束:使主表主键和从表的外键,形成主外键关系(也称为一对多关系)
alter table 从表名称 add constraint 外键名称 foreign key (外键名称) references 主表名称 (主表主键)
- 实例
-- 外键约束练习
-- 1. 创建主表(分类表),必须声明主键
create table tb_category(
id varchar2(32) primary key,
name varchar2(50)
);
-- 2. 创建从表(商品表)
create table tb_product(
id varchar2(32),
price number(4,1),
cid varchar2(32)
);
-- 3. 添加主外键关系
alter table tb_product add constraint product_fk foreign key (cid) references tb_category (id);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8242.html