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

简介: 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     -- 创建表空间waterboss
datafile 'E:\JetBrains\DG\Data\waterboss.dbf'   -- 数据文件位置
size 100m   -- 指定数据文件大小
autoextend on next 10m;      -- 指定数据文件存满后自动扩展内存大小
  • tablespace 指定表空间名
  • datafile 指定数据文件位置
  • size 设置表空间大小
  • autoextend on 用于设置自动增长,如果储存量超过初始大小,则开始自动扩容
  • next 用于设置扩容表空间大小

创建用户与赋权


创建用户与赋权


  • 创建用户后需要使用grant命令给用户授权才能登陆用户
-- 创建用户
create user wateruser
identified by itcast
default 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)


1.向表中插入某些 insert into 表(列1,列2,列3…) value(值1,值1,值1…);
2.向表中插入所有列 insert into 表 value(值1,值1,值1…);
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 表名 [where 条件];
truncate table 表名 或者 truncate 表名
delete from stu where sid = 11;
delete from stu;
truncate table stu;
truncate stu;
  • 数据的修改(update)
update 表名 set 字段名=值,字段名=值…;
update 表名 set 字段名=值,字段名=值… where 条件;
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);
目录
相关文章
|
2天前
|
SQL Oracle 关系型数据库
sql语句创建数据库
在创建数据库之前,请确保你有足够的权限,并且已经考虑了数据库的安全性和性能需求。此外,不同的DBMS可能有特定的最佳实践和配置要求,因此建议查阅相关DBMS的官方文档以获取更详细和准确的信息。
|
2天前
|
SQL 缓存 数据库
sql 数据库优化
SQL数据库优化是一个复杂且关键的过程,涉及多个层面的技术和策略。以下是一些主要的优化建议: 查询语句优化: 避免全表扫描:在查询时,尽量使用索引来减少全表扫描,提高查询速度。 使用合适的子查询方式:子查询可能降低查询效率,但可以通过优化子查询的结构或使用连接(JOIN)替代子查询来提高性能。 简化查询语句:避免不必要的复杂查询,尽量使SQL语句简单明了。 使用EXISTS替代IN:在查询数据是否存在时,使用EXISTS通常比IN更快。 索引优化: 建立合适的索引:对于经常查询的列,如主键和外键,应创建相应的索引。同时,考虑使用覆盖索引来进一步提高性能。 避免过多的索引:虽然索引可以提高查询
|
2天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
5天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
6天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
6天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL条件控制:数据的“红绿灯”与“分岔路”
【4月更文挑战第19天】在Oracle PL/SQL中,IF语句与CASE语句扮演着数据流程控制的关键角色。IF语句如红绿灯,依据条件决定程序执行路径;ELSE和ELSIF提供多分支逻辑。CASE语句则是分岔路,按表达式值选择执行路径。这些条件控制语句在数据验证、错误处理和业务逻辑中不可或缺,通过巧妙运用能实现高效程序逻辑,保障数据正确流转,支持企业业务发展。理解并熟练掌握这些语句的使用是成为合格数据管理员的重要一环。
|
6天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL表达式:数据的魔法公式
【4月更文挑战第19天】探索Oracle PL/SQL表达式,体验数据的魔法公式。表达式结合常量、变量、运算符和函数,用于数据运算与转换。算术运算符处理数值计算,比较运算符执行数据比较,内置函数如TO_CHAR、ROUND和SUBSTR提供多样化操作。条件表达式如CASE和NULLIF实现灵活逻辑判断。广泛应用于SQL查询和PL/SQL程序,助你驾驭数据,揭示其背后的规律与秘密,成为数据魔法师。
|
5天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
35 2
|
21天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
105 0
|
21天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)

热门文章

最新文章

推荐镜像

更多