一.表空间和数据结构
1.1.表空间和数据文件的关系
表空间是一个逻辑结构,通常用来存放表、索引、视图等数据
对象。数据文件是一个物理存储结构,用来保存数 据的文
件。表空间与数据文件相对应,一个表空间有一个或者多个数
据文件组成,一个数据文件只属于一个表空间。 下图展示了
逻辑结构和物理结构之间的关系。
我们在sys用户下面,使用 dba_data_files 这个数据字典查看
表空间和它对应数据文件。
1.2oracle默认表空间
以上4个表空间是Oracle数据库服务器安装成功后系统自动创
建的。
1.3 创建和删除表空间
创建表空间操作在实际的工作中通常是数据库管理员(DBA)的
工作。不同类型的数据对象存储到不同的表空间 中。例如,
建立专门用于存储数据的表空间、建立专门用户存储索引的表
空间等。创建表空间语法如下:
示例:创建表空间,并且指定对应的数据文件
删除表空间语法:
二.操作用户
表空间创建好了之后,接下来我们可以在表空间下面对用户进
行各种操作,具体包括创建用户、 用户授权、 删除用户。
创建用户语法如下:
上面的示例创建了一个用户,它默认在USERS表空间下面。
在实际工作中,在创建用户的同时建议为该用户指定表空间,
否则全部默认在 USERS 表空间下面(表空间过大不 易维护,查
询效率低下)。
创建用户指定表空间语法如下:
2.2 用户授权
创建用户之后,为了后面能够方便对它进行操作,需要为用户
授权。授权语法如下:
grant 权限列表 to 用户;
例如:为用户lisi进行授权(授予连接权限、访问资源权限、
DBA权限),然后使用该用户进行登录
2.3 删除用户
删除用户语法如下:
drop user 用户名;
例如:在sys用户下删除之前创建的zhangsan,lisi用户
三.数据表
表是Oracle数据库中一种非常重要的数据对象,它是用来存储
数据。
3.1 表的基本概念
表是一个用来存储数据的平面结构,由行(记录)和列(字段)组
成。下图就是一张存储图书的表:
对表的基本操作包括:创建表、增加字段、修改字段、删除字
段、重命名表、删除表等。这些都属于DDL(数据定 义语言)。
3.2 创建表
Oracle使用用户来管理表,创建表语法如下:
示例:在zhangsan用户下创建一张city(城市)表。
使用PL/SQL Developer图形化窗口登录切换到zhangsan用户
3.3 增加字段
成功创建表后,可能会根据需求变化向表中增加字段。其语法
如下:
示例:向城市表添加一个province(所在省份)字段
3.4 修改字段
除了增加字段外,还可以根据实际情况修改字段信息。包括修
改字段的数据类型长度、数值列的精度等。其语法 如下:
例如:将 province (所在省份)字段的数据类型改为 char(30)
3.5 删除字段
在工作中可以根据实际情况删除某些无用的字段。语法如下:
例如:将 city 的 province (所在省份)字段删除掉
3.6 重命名表
创建表后,可以修改指定表的名称。语法如下:
例如:将 city 表重命名为tb_city
四.操作表的数据
操作表中的数据包括:插入数据(Insert)、修改数据
(Update)、从表中删除数据(Delete、Truncate)。这些操作都
属于DML(数据操纵语言)。DML前置条件是:表成功创建。
DML后置条件是:表中的数据发生变化。
4.1 插入数据
插入数据就是将新数据添加到已经存在的表中。Oracle数据库
通过Insert语句来实现向表插入数据的
向指定列插入数据,语法如下:
例如:向city表插入一行数据。
为数值列添加数据时,可以直接提供数字值;为字符串列或者
日期列添加数据时,必须用单引号引住;insert语句执行完之
后必须执行commit,将数据永久的提交到city表里面
向表的所有列插入数据,语法如下:
例如:
4.2 修改表中的数据
如果表中的数据不正确或不符合需求,就需要对其进行修改。
Oracle通过update语句修改表中的数据。修改数 据语法如
下:
set后面定义要修改的值,语法是:字段名称 = 值 如果要修改
多个字段的值使用英文逗号分隔 where后面用来定义条件,
只修改满足条件的数据。如果update语句不指定where条件
就会修改所有的数据
示例:修改城市区号为2的描述信息就改为交通枢纽
4.3 删除表中的数据
从表中删除数据可以使用delete和truncate语句。
delete语句
delete语句可以从表中删除所有数据和指定条件的数据,语法
如下:
如果删除表中所有的数据就不用加上where 条件 如果只删除
表中部分数据,请在where后面定义条件。
例如:删除城市区号为2的城市信息。
truncate语句可以删除表中所有的数据,Oracle也建议使用这
种方式删除数据,效率比delete高的多。
例如:
例如:删除城市表所有的数据
truncate 和 delete区别?
前者会删除表中所有的数据,后缀可以删除表中所有的数据也
可以根据where条件只删除表中部分数据。 前者删除表中的
数据不需要commit提交,后者删除数据之后必须使用
commit提交数据,否则无法删除数据。