写点什么

Oracle 数据库 | 基于 SQL 基础分析

作者:追风少年
  • 2022-11-15
    湖北
  • 本文字数:2820 字

    阅读完需:约 9 分钟

Oracle数据库 | 基于SQL基础分析

创建表空间

SQL Server 数据库与 Oracle 数据库之间最大的区别要属表空间设计。Oracle 数据库开创性地提出了表空间的设计理念,这为 Oracle 数据库的高性能做出了不可磨灭的贡献。可以这么说,Oracle 中很多优化都是基于表空间的设计理念而实现


表空间作用

  • 决定数据库实体的空间分配

  • 设置数据库用户的空间份额

  • 控制数据库部分数据的可用性

  • 分布数据于不同的设备之间以改善性能

  • 备份和恢复数据

表空间管理

  • 查看系统当前用户


select * from user_users;   
复制代码


  • 查询表空间


select * from sys.dba_tablespaces;select tablespace_name from dba_tablespaces;
复制代码


  • 删除表空间


drop tablespace 表空间名 including contents and datafiles ;
复制代码


  • 修改表空间自动扩展大小


alter database datafile 'E:\JetBrains\DG\Data\waterboss.dbf' autoextend on next 100m;
复制代码


  • 修改表空间大小


alter database datafile 'E:\JetBrains\DG\Data\waterboss.dbf' resize 1024m;
复制代码


  • 创建临时表空间


create temporary tablespace tmp_tbs2 tempfile 'E:\JetBrains\DG\Data\tmp_tbs2' size 100m;
复制代码


  • 创建用户,指定默认表空间,指定临时表空间,指定配额


create user test1 identified by "123456"    default tablespace tbs2     -- 指定默认表空间    temporary tablespace tmp_tbs2   -- 指定临时表空间    quota 500 on tbs2;      -- 指定配额
复制代码

创建表空间

-- 创建表空间create tablespace waterboss     -- 创建表空间waterbossdatafile 'E:\JetBrains\DG\Data\waterboss.dbf'   -- 数据文件位置size 100m   -- 指定数据文件大小autoextend on next 10m;      -- 指定数据文件存满后自动扩展内存大小
复制代码


  • tablespace 指定表空间名

  • datafile 指定数据文件位置

  • size 设置表空间大小

  • autoextend on 用于设置自动增长,如果储存量超过初始大小,则开始自动扩容

  • next 用于设置扩容表空间大小

创建用户与赋权

创建用户与赋权


  • 创建用户后需要使用grant命令给用户授权才能登陆用户


-- 创建用户create user wateruseridentified by itcastdefault tablespace waterboss;
-- 删除用户drop user TEST1 cascade ;
-- 创建用户权限grant dba to wateruser;
复制代码


  • wateruser 创建的用户名

  • identified by 用于设置用户的密码

  • default tablespace 用于指定默认表空间名称

  • grant dba to wateruser; 给用户 wateruser 赋予 DBA 权限即可登录

表的创建 | 修改 | 删除

  • 表的创建


create table 表名(  ...);
create table user01( id int, name varchar(20), address varchar(20));
复制代码


  • 表的修改


-- 语法:alter table 表名 add 列名 类型(长度)[约束];
alter table mydb1 add id varchar(20);
复制代码


  • 表的删除


-- 语法:drop table 表名;
drop table student;
复制代码

数据的增 | 删 | 改 | 查

  • 数据的增添(insert)



insert into stu(sid,name,gender,age,birth,address,score)        values(001,"一一","男",18,"2002-11-25","武汉",100),        (002,"二二","女",10,"2002-10-21","武汉",80),        (003,"三三","女",10,"2002-10-21","武汉",70);
insert into stu values(004,"六六","男",40,"2002-10-21","武汉",80);
复制代码


  • 数据的删除(delete)

  • delete 只删除内容

  • truncate 类似于 drop table 删除表(删除表内容结构)



delete from stu where sid = 11;delete from stu;
truncate table stu;truncate stu;
复制代码


  • 数据的修改(update)



update stu set address = '武汉';            update stu set address = '北京' where sid = 001;            update stu set address = '上海' where sid >= 5;        update stu set address = 'wuhan' , score = 0 where sid = 10;
复制代码


  • 数据的查询(select)


-- 语法:select * from 表名;
select * from student; -- 查询学生表的所有内容
复制代码

伪列查询

Oracle 表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是表中并不存储。伪列只能查询,不能进行增删改操作

ROWID

  • 表中每一行在数据文件中都有一个物理地址,ROWID 伪列返回的就是该行的物理地址

  • 使用 ROWID 可以快速定位表中某一行,ROWID 值可以唯一的标识表中一行

  • ROWID 返回的是该行的物理地址,因此使用 ROWID 可以显示是如何存储的


查询语句


select rowid,t.* from T_AREA t;
复制代码

ROWNUM

查询结果集中,ROWNUM 为结果集中每一行标识一个行号,通过 ROWNUM 伪列可以限制查询结果集中返回的行数


查询语句

select rownum,t.* from T_OWNERTYPE t;

约束

主键约束——primary key

主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符,要求主键列数据唯一,并且不允许为空


  • 创建主键约束


-- 单列主键create table 表名(  ...  <字段名><数据类型>primary key    ...);
-- 多列主键create table 表名( ... primary key(字段1,字段2,...));
复制代码


  • 修改主键约束


-- 修改表结构添加主键create table 表名(  ...);alter table <表名> add primary key(字段列表);
复制代码


  • 删除主键约束


alter table <数据表名> drop primary key;
复制代码

外键约束——foreign key

外键约束主要是在父子表关系中体现的一种约束操作,用于在两个表之间建立关系,需要指定引用主表的哪一列


  • 创建外键约束


constraint 外键名 foreign key (从表的外键字段名) references 主表名 (主表的主键字段名)
复制代码


  • 方式一:创建表时设置外键约束


create table if not exists emp(  eid varchar(20) primary key,  ename varchar(20),  age int,  dept_id varchar(20),  constraint emp_fk foreign key (dept_id) references dept (detpno));
复制代码


  • 方式二:创建表后设置外键约束


alter table 从表名 add constraint 外建名 foreign key (从表的外键字段名) references 主表名 (主表的主键字段名);
复制代码


  • 删除外键约束


alter table <数据表名> drop foreign key 外键名;
复制代码

非空约束——not null

  • 方式一:创建表时指定


语法:<字段名><数据类型> not null;
复制代码


create table user04(  id int,  name varchar(20) not null,  address varchar(20) not null);
insert into user04(id,name,address) values(1001,'一一','武汉');insert into user04(id,name,address) values(1001,null,null);insert into user04(id,name,address) values(1001,'','');
复制代码


  • 方式二:创建表之后指定


语法:alter table 表名 modify 字段 not null;
复制代码


use mydb3;
create table user05( id int, name varchar(20) not null, address varchar(20) not null);

alter table user05 modify name varchar(20) not null;alter table user05 modify address varchar(20) not null;
desc user05; -- 查看表结构
insert into user05(id,name,address) values(1001,'魏硕','武汉');insert into user05(id,name,address) values(1001,null,null);insert into user05(id,name,address) values(1001,'','');
复制代码


  • 删除非空约束


语法:alter table 表名 modify 字段 类型
复制代码


alter table user05 modify name varchar(20);
alter table user05 modify address varchar(20);
复制代码


发布于: 2022-11-15阅读数: 21
用户头像

追风少年

关注

不要因为没有掌声而丢掉梦想! 2022-10-07 加入

RedHat红帽认证工程师(RHCE)、阿里云专家博主;CSDN、掘金、阿里云平台优质作者;Spring、SpringMVC、Mybatis等后端领域技术略有研究,怀抱着空杯心态,接纳、学习新技术、新领域

评论

发布
暂无评论
Oracle数据库 | 基于SQL基础分析_11月月更_追风少年_InfoQ写作社区