ok家人们今天继续学习oracle数据库 嘻嘻
一.表空间和数据文件
1.1 表空间和数据文件的关系
表空间是一个逻辑结构,通常用来存放表、索引、视图等数据
对象。数据文件是一个物理存储结构,用来保存数 据的文
件。表空间与数据文件相对应,一个表空间有一个或者多个数
据文件组成,一个数据文件只属于一个表空间。 下图展示了
逻辑结构和物理结构之间的关系。
我们在
sys
用户下面,使用
dba_data_files
这个数据字典查看
表空间和它对应数据文件。
-- 在sys模式下查询表空间和它对应的数据文件
-- tablespace_name表示表空间名称
-- file_name表示数据文件名称
-- bytes表示数据文件的大小,单位byte
select tablespace_name , file_name , bytes
from dba_data_files
order by bytes;
1.2 Oracle默认表空间
表空间
|
说明
|
SYSTEM
|
存储系统内部数据和数据字典
|
SYSAUX
|
充当
SYSTEM
的辅助表空间
|
USERS
|
存储
“
应用系统
”
所使用的数据库对象,例
如:
scott
用户下的
emp
表就存储在该表空
间下面
|
UNDOTBS1
|
存储撤销数据的表空间
|
以上
4
个表空间是
Oracle
数据库服务器安装成功后系统自动创建的。
1.3 创建和删除表空间
创建表空间
操作在实际的工作中通常是数据库管理员
(DBA)
的
工作。不同类型的数据对象存储到不同的表空间 中。例如,
建立专门用于存储数据的表空间、建立专门用户存储索引的表
空间等。创建表空间语法如下:
-- 创建表空间由3部分被组成:
-- 1.创建表空间(指定表空间名称)
-- 2.指定表空间对应的数据文件路径
-- 3.为数据文件指定大小, 单位:兆 M 2m 4m 8m
-- reuse:用来判断数据文件路径在磁盘中是否存在,如果存在
删除该数据文件,重新创建新的。如果不存在直接创建数据文件
create tablespace 表空间名称 datafile '数据文件的路
径' size 数据文件大小 reuse;
示例:创建表空间,并且指定对应的数据文件
-- 创建第一个表空间
create tablespace day0901_1 datafile
'D:\ORACLE19C\ORADATA\ORCL\a.dbf'
size 64m reuse;
-- 创建第二个表空间
create tablespace day0901_2 datafile
'D:\ORACLE19C\ORADATA\ORCL\b.dbf'
size 64m reuse;
-- 使用下面的数据字典查询刚刚创建的表空间
select tablespace_name , file_name , bytes from
dba_data_files;
删除表空间
语法:
drop tablespace 表空间名称;
示例:删除刚刚创建的表空间
drop tablespace day0901_2;
二.操作用户
表空间创建好了之后,接下来我们可以在表空间下面对用户进
行各种操作,具体包括创建用户、 用户授权、 删除用户。
2.1 创建用户
创建用户语法如下:
create user 用户名 identified by 密码;
例如:
create user zhangsan identified by 123456;
上面的示例创建了一个用户,它默认在
USERS
表空间下面。
在实际工作中,在创建用户的同时建议为该用户指定表空间,
否则全部默认在
USERS
表空间下面
(
表空间过大不 易维护,查
询效率低下
)
。
创建用户指定表空间语法如下:
create user 用户名 identified by 密码 default
tablespace 表空间名称;
例如:
create user lisi identified by 123456 default
tablespace day0901_1;
2.2 用户授权
创建用户之后,为了后面能够方便对它进行操作,需要为用户
授权。授权语法如下:
grant 权限列表 to 用户;
例如:为用户
lisi
进行授权
(
授予连接权限、访问资源权限、
DBA
权限
)
,然后使用该用户进行登录
grant connect,resource,dba to lisi;
2.3 删除用户
删除用户语法如下:
drop user 用户名;
例如:在
sys
用户下删除之前创建的
zhangsan
,
lisi
用户
drop user zhangsan;
drop user lisi;
三.数据表
表是
Oracle
数据库中一种非常重要的数据对象,它是用来存储
数据。
3.1 表的基本概念
表是一个用来存储数据的平面结构,由行
(
记录
)
和列
(
字段
)
组
成。下图就是一张存储图书的表:
对表的基本操作包括:创建表、增加字段、修改字段、删除字
段、重命名表、删除表等。这些都属于
DDL(
数据定 义语言
)
。
3.2 创建表
Oracle
使用用户来管理表,创建表语法如下:
create table 表名称(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
........
列名称n 数据类型
);
Oracle常用的数据类型如下:
-- 字符串
varchar2(长度) 表示可变的字符串,例如:stu_name
varchar(30) Tom 实际上只占用了3个字符
char(长度) 固定的字符串 stu_name char(30) Tom 实
际存储了30个字符
长度固定的字符串使用char存储,例如“手机号码”。可变长度的
字符串使用varchar存储,例如:“姓名”
-- 数字
number(长度)
年龄可以使用number(3) 3表示长度,总共3位 999
成绩也可以使用number(5,2) 总共5长度5位,其中小数占据2
位 999.99
注意:number可以存储整数还可以存储负数
-- 时间和日期
date 日期和时间类型,可以存储日期和时间的组合数据
示例:在
zhangsan
用户下创建一张
city(
城市
)
表。
使用
PL/SQL Developer
图形化窗口登录切换到
zhangsan
用户
SQL> create table city(
2 city_area varchar2(10), -- 城市区号
3 city_name varchar2(30), -- 城市名称
4 city_desc varchar2(200) -- 城市描述信息
5 );
Table created
SQL> desc city;
Name Type Nullable Default
Comments
--------- ------------- -------- ------- -------
-
CITY_AREA VARCHAR2(10) Y
CITY_NAME VARCHAR2(30) Y
CITY_DESC VARCHAR2(200) Y
3.3 增加字段
成功创建表后,可能会根据需求变化向表中增加字段。其语法
如下:
alter table 表名称 add 字段名称 数据类型;
示例:向城市表添加一个
province(
所在省份
)
字段
SQL> alter table city add province varchar2(20);
Table altered
SQL> desc city;
Name Type Nullable Default
Comments
--------- ------------- -------- ------- -------
-
CITY_AREA VARCHAR2(10) Y
CITY_NAME VARCHAR2(30) Y
CITY_DESC VARCHAR2(200) Y
PROVINCE VARCHAR2(20) Y
3.4 修改字段
除了增加字段外,还可以根据实际情况修改字段信息。包括修
改字段的数据类型长度、数值列的精度等。其语法 如下:
alter table 表名称 modify 字段名称 字段属性;
例如:将
province (
所在省份
)
字段的数据类型改为
char(30)
SQL> alter table city modify province char(30);
Table altered
SQL> desc city;
Name Type Nullable Default
Comments
--------- ------------- -------- ------- -------
-
CITY_AREA VARCHAR2(10) Y
CITY_NAME VARCHAR2(30) Y
CITY_DESC VARCHAR2(200) Y
PROVINCE CHAR(30) Y
3.5 删除字段
在工作中可以根据实际情况删除某些无用的字段。语法如下:
alter table 表名称 drop column 字段名称;
例如:将
city
的
province (
所在省份
)
字段删除掉
SQL> alter table city drop column province;
Table altered
SQL> desc city;
Name Type Nullable Default
Comments
--------- ------------- -------- ------- -------
-
CITY_AREA VARCHAR2(10) Y
CITY_NAME VARCHAR2(30) Y
CITY_DESC VARCHAR2(200) Y
3.6 重命名表
创建表后,可以修改指定表的名称。语法如下:
alter table 原表名称 rename to 新表名称;
例如:将
city
表重命名为
tb_city
SQL> alter table city rename to tb_city;
Table altered
3.7 删除表
如果某张表不需要使用了,就可以将其删掉。语法如下:
drop table 表明称;
例如:删除城市表
(tb_city)
SQL> drop table tb_city;
Table dropped
四.操作表的数据
操作表中的数据包括:插入数据
(Insert)
、修改数据
(Update)
、从表中删除数据
(Delete
、
Truncate)
。这些操作都
属于
DML(
数据操纵语言
)
。
DML
前置条件是:表成功创建。
DML
后置条件是:表中的数据发生变化。
4.1 插入数据
插入数据就是将新数据添加到已经存在的表中。
Oracle
数据库
通过
Insert
语句来实现向表插入数据的
向指定列插入数据,语法如下:
insert into 表名称(列1,列2,列3...列n) values (值1,
值2,值3....值n);
例如:向
city
表插入一行数据。
SQL> insert into city(city_area,city_name)
values('1','长沙');
1 row inserted
SQL> commit;
Commit complete
为数值列添加数据时,可以直接提供数字值;为字符串列或者
日期列添加数据时,必须用单引号引住;
insert
语句执行完之
后必须执行
commit
,将数据永久的提交到
city
表里面
向表的所有列插入数据,语法如下:
insert into 表名称 values (值1,值2,值3....值n);
例如:
SQL> insert into city values('2','郑州','省会城
市');
1 row inserted
SQL> commit;
Commit complete
4.2 修改表中的数据
如果表中的数据不正确或不符合需求,就需要对其进行修改。
Oracle
通过
update
语句修改表中的数据。修改数 据语法如
下:
update 表名称
set 字段名1 = 值1[,字段名2 = 值2,字段名3 = 值3...]
[where 条件];
set
后面定义要修改的值,语法是:字段名称
=
值 如果要修改
多个字段的值使用英文逗号分隔
where
后面用来定义条件,
只修改满足条件的数据。如果
update
语句不指定
where
条件
就会修改所有的数据
示例:修改城市区号为
2
的描述信息就改为交通枢纽
SQL> update city set city_desc = '交通枢纽' where
city_area = '2';
1 row updated
SQL> commit;
Commit complete
4.3 删除表中的数据
从表中删除数据可以使用
delete
和
truncate
语句。
delete
语句
delete
语句可以从表中删除所有数据和指定条件的数据,语法
如下:
delete from 表名称 [where 条件];
如果删除表中所有的数据就不用加上
where
条件 如果只删除
表中部分数据,请在
where
后面定义条件。
例如:删除城市区号为
2
的城市信息。
SQL> delete from city where city_area = '2';
1 row deleted
SQL> commit;
Commit complete
truncate语句
truncate
语句可以删除表中所有的数据,
Oracle
也建议使用这
种方式删除数据,效率比
delete
高的多。
语法:
truncate table 表名称;
例如:删除城市表所有的数据
truncate table city;
truncate
和
delete
区别?
前者会删除表中所有的数据,后缀可以删除表中所有的数据也
可以根据
where
条件只删除表中部分数据。 前者删除表中的
数据不需要
commit
提交,后者删除数据之后必须使用
commit
提交数据,否则无法删除数据。
byebye