oracle 表空间自动增长 如何设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 表空间自动增长 如何设置相关的知识,希望对你有一定的参考价值。

表空间已经建好了 自增长为10M 最大为10G

参考技术A 非临时表空间:
select file_id from dba_data_files where tablespace_name=<your_tablespace_name>;

alter database datafile <file_id> autoextend on next 10M maxsize 10G;
临时表空间:
select file_id from dba_temp_files where tablespace_name=<your_tablespace_name>;

alter database tempfile <file_id> autoextend on next 10M maxsize 10G;

oracle数据库

一. 表空间,用户及授权

1. 创建表空间

Create tablespace waterboss

Datafile ‘c:\waterboss.dbf’

Size 100m

Autoextend on

Next 10m

 

解释:

Waterboss:表示表空间的名称

Datafile:表示存储到硬盘的物理路径文件

Size:用于设置表空间的初始的大小

Autoextends on:表示设置空间自动增长开启,超过容量自动扩容

Next:每次扩容的大小,表示10.

2. 创建用户

Create user wateruser

Identified by zhaozhao

Default tablespace waterboss

解释:

Wateruser:创建的用户名

Zhaozhao:设置的密码

Waterboss:表示默认使用的表空间

3. 用户赋权

Grant dba to wateruser

给用户wateruser赋予dba权限,dba是可以操作数据库的管理员的权限

二. 表的创建,修改与删除

1. 创建表

Oracle数据库不能自动生成主键

Create table 表名称(

字段名 类型(长度) primary key,

字段名 类型(长度),

.....................

);

字符型:

Char:固定长度字符类型

Varchar2:可变长度字符类型

Long:大文本类型.最大可以储存

2G

数值型:

Number:number(5) 表示最大的存的数为5位整数,最大为99999

Number(5,2) 总共数5位数,其中2位小数

日期型:

Date:日期时间型,精确到秒

timeStamp:精确到秒后的小数点后9

二进制型(大数据类型)

Clob:储存字符,最大可以储存4G

Blob:储存图像,声音,视频等二进制数据,最大可以储存4G

创建业主表

create table owners(

Id number primary key,

Name varchar2(30),

Addressid number,

Housenumber varchar2(30),

Waternumber varchar2(30),

Adddate date,

Ownertypeid number

 

);

 

 

4. 修改表

4.1 增加字段的语法

Alter table 表名 add(

列名 类型

)

举例:

Alert table owners add(

Remark varchar2,

Outdate date

)

4.2 修改字段

一般是修改类型

Alert table 表明 modify(

列名 类型,

.............

)

4.3 修改列名

Alter table 表名 rename column 原列名 to 新列名

:

Alert table owners rename column outdate to exitdate

4.4 删除字段

Alter table 表明 drop column 列名

Alter table 表明 drop column (列名1,列名2....)

5. 删除表

Drop table 表名

三. 数据的增删改查

1. 插入数据

当值是字符串类型时候用’ ’,单引号

Insert into 表名 (列名1,列名2...) values(1,2.....)

执行insert 之后需要执行commit提交事物

6. 修改数据

Update 表名 set 列名=1...where 修改条件

需求:将 ID 1 的业主的登记日期更改为三天前的日期

时间类型的数据可以直接加减,+3表示时间的天数+3

Update owners set adddate=adddate+3 where id=1

Commit;

7. 删除数据

语法1:

Delete from 表名 where 删除条件

Commit 提交事物

语法2:

Truncate table 表名

Truncatedelete的区别?

1 .delete删除的数据可以回滚

2 .delete删除可能产生碎片化,不能够释放空间,:会占用id

3 .truncate是先摧毁表的结构,在重够表结构

四. 数据的导入与导出

1. 整库导入与导出

7.1 导出

方式一:整库导出到默认

Exp 用户名/密码 full=y

Full=y表示整库导出

方式二:整库导出到指定文件

Exp 用户名/密码 file=文件名.dmp full=y

7.2 导入

方式一:默认文件

Imp 用户名/密码  full=y

方式二:根据文件名导入

Imp 用户名/密码 full=y file=water.dmp

 

8. 按用户导入与导出

8.1 按用户导出

Exp 用户名/密码 owner=用户 file=water.dmp

8.2 按用户导入

Imp 用户名/密码 file=water.dmp fromuser=用户名

9. 按表导出与导入

9.1 按表导出

Exp 用户名/密码 file=a.dmp tables=t_account,a_area

多个表的话用逗号隔开

9.2 按表导入

Imp 用户名/mima file=a.dmp tables=t_account,a_area

 

 

五. 单表查询

1. 简单条件查询

9.3 精确查询

Select * from t_owners where watermeter=’30408’

9.4 模糊查询

Select * from t_owners where name like ‘%l%

9.5 And运算符

Select * from t_owners where name like ‘%%’ and housenumber like ‘%5%’

9.6 or运算符

9.7 Andor混用

Select * from t_owners where (name like ‘%%’ and housenumber like ‘%5%’)  and addressid=3

9.8 范围查询

Select * from t_account where usernum>=10000 and usenum<=20000

也可以用between...and....

Select * from t_Account where usernum between 10000 and 20000

9.9 空值查询

需求:查询 T_PRICETABLE 表中 MAXNUM 为空的记录

Select * from t_account where usernum is null

需求:查询 T_PRICETABLE 表中 MAXNUM 为空的记录

Select * from t_account where usernum is not null

10. 去掉重复的记录

需求:查询业主表中的地址 ID,不重复显示

Select distinct addressid from t_owners

Distinct去重

11. 排序查询

11.1 升序

Select * from t_account order by usenum asc

11.2 降序

Select * from t_account order by usernum desc

12. 基于伪列的查询

Oracle 的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就

像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。

12.1 Rowid

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

物理地址。使用 ROWID 可以快速的定位表中的某一行

Select rowId ,t* from t_area t

12.2 rownum

在查询的结果集中,ROWNUM 为结果集中每一行标识一个行号,第一行返回 1

第二行返回 2,以此类推。通过 ROWNUM 伪列可以限制查询结果集中返回的行

Select rownum,t.* from t_owner t

 

13. 聚合统计

 

13.1 聚合函数

sum

Select sum(usenum) from t_account where year=’2012’

 

求平均值

需求:统计 2012 年所有用水量(字数)的平均值

select avg(usenum) from T_ACCOUNT where year=‘2012‘

 

求最大值 max

需求:统计 2012 年最高用水量(字数)

select max(usenum) from T_ACCOUNT where year=‘2012‘

 

求最小值 min

需求:统计 2012 年最低用水量(字数)

select min(usenum) from T_ACCOUNT where year=‘2012‘

 

统计记录个数 count

需求:统计业主类型 ID 1 的业主数量

Select count(*) from t_owners where ownertypeid=1

 

13.2 分组聚合

需求:按区域分组统计水费合计数

Select areaid,sum(money) from t_account group by areaid

结论:

在进行分组查找的时候,分组条件的列必须要在查找的结果中]

13.3 分组后的条件查询

需求:查询水费合计大于 16900 的区域及水费合计

Select areaid,sum(money) from t_account group by areaid having sum(money)>169000

六. 连接查询

1. 多表内连接查询

需求:查询显示业主编号,业主名称,业主类型名称,如下图(两个表关联查询)

Select o.id 业主编号,o.name 业主名称,ot.name 业主类型

From t_owners o,t_ownerType ot where o.ownertypeid=ot.id

 

 

需求:查询显示业主编号,业主名称、地址和业主类型(三个表关联查询)

 

 

 

 

 

需求:查询显示业主编号、业主名称、地址、所属区域、业主分类(四表关联查询)

 

 

 

 

 

 

 

七. 子查询

八. 分页查询

1. 简单分页

需求:分页查询台账表 T_ACCOUNT,每页 10 条记录

Select rownum,t.* from t_account t where rownum<=10

 

 

需求:查询第 11 条到第 20 条的记录

Select * from (select rownum r,t.* from t_account where  rownum<=20) where r>10

14. 基于排序的分页

Rownum伪列的产生是在表记录扫描产生的,而排序是后进行的,排序是r已经产生了,所以排序后r是乱的

 

九. 单行函数

1. 字符函数

Initcat:将字符串的第一个字符变成大写

Instr:找出某个字符串的位置

Length:字符串的长度

Lower:将字符串转为小写

Substr:取字符串的子串

Translate:执行字符串的搜索和替换

Upper:将字符串变为大写

14.1 求字符串的长度

Select length(‘ABC’) from dual

14.2 求字符串的子串

SELECT SUBSTR(‘AB‘,2,2) from DUAL

说明:第一个2表示从第二个位置开始截取

22表示截取的长度.

结果:

 

14.3 字符串拼接concat

SELECT CONCAT(‘ABC‘,‘DEF‘) FROM DUAL

结果:

 

也可以使用||进行字符串的拼接

select ‘ABC‘||‘DEF‘ from dual;

结果是一致的

注意:mysql数据库不能使用||这种方式字符串的拼接

 

 

 

 

15. 数值函数

ABS(value) 绝对值

COS(value) 余弦

EXP(value) evalue次幂

ROUND(value,precision) valueprecision的精度四舍五入等

TRANC(value) 截取函数

15.1 四舍五入函数

SELECT ROUND(23.53,1) FROM DUAL

 

 

条件里面不写保留几位小数的话,默认是四舍五入取整的

SELECT ROUND(253.62) FROM DUAL

结果:

 

 

 

15.2 截取函数

SELECT TRUNCATE (1003.567,2) FROM DUAL

结果:

 

 

16. 日期函数

Add_months 在日期date上增加count个月

Last_day(date) 返回在日期date所在月的最后一天

Next_day(date,’day’) 给出日期date之后下一天的日期

获取当前时间:

SELECT SYSDATE() FROM DUAL

结果:

 

 

 

 

(1) 加月函数add_months

Select add_months(sysdate,2) from dual

查询结果:

 

 

注意:mysql数据库中没有此次函数,只有adddate函数

 

 

(2) 求所在月的最后的一天last_day

语句:

Select last_day(sysdate) from dual

结果:

 

(3) 日期截取tunc

Select trunc(sysdate) from dual

 

 

表示截取时间的年月日及星期

截取年:

Select trunc(sysdate,’yyyy’) from dual

 

表示截取当前年的第一天

截取月:

Select trunc(sysdate,’mm’) from dual

 

表示截取截取当前月的第一天

17. 转换函数

Charttorowid 将字符转换为rowid类型

Rowidtochar 转换rowid到字符

To_char 转换日期格式到字符串

To_date 按照指定的格式将字符串转换到日期的类型

To_number 将数字字串转换为数字

 

17.1 将数字转字符串

SELECT "TO_CHAR"(120) FROM dual

结果

注意:

Mysql里面没有此函数

17.2 日期转字符串to_char

SELECT TO_CHAR(SYSDATE,‘yyyy-mm-dd‘) FROM dual

结果:

 

SELECT TO_CHAR(SYSDATE,‘yyyy-mm-dd hh:mi:ss‘) FROM dual

结果:

 

17.3 字符串转日期

Select to_date(‘2017-12-01’,’yyyy-mm-dd’) from dual

结果:

 

17.4 字符串转数字

Select to_number(‘100’) from dual

 

18. 其它函数

18.1 空值处理函数nvl

用法:

NVL(检测的值,如果为 null 的值);

SELECT NVL(NULL, ‘我是空值函数‘) FROM dual

结果:

解释:表示如果是空的话,就显示为后面的内容

 

需求:显示价格表中业主类型ID1的价格记录,如果上限值为NULL,则显示9999999

Select price,minnum,nvl(maxnum,9999999) from T_pricetable where id=1

查询结果:

 

 

18.2 控制处理函数NVL2

用法:

NVL2(检测的值,如果不为 null 的值,如果为 null 的值);

需求:显示价格表中业主类型 ID 1 的价格记录,如果上限值为 NULL,显示“不

.

Select price ,minnum,nvl2(maxnum,to_char(maxnum),’不限’) from t_pricetable where id=1

18.3 条件取值

语法:

Decode(条件,1,翻译值1,2,翻译值2,....缺省值)

需求:显示下列信息(不要关联查询业主类型表,直接判断 1 2 3 的值)

Select name,decode(ownertypeid,1,’居民’,2,’行政事业单位,3,’商业’’) as

“类型” from  t_owners

总结:””的情况,一般起的别名可以使用双引号,也可以不用引号

上面的语句也可以用case when then 语句来实现

Select name,(case ownertypeid when 1 then ‘居民

When 2 then ‘行政事业单位’

When 3 then ‘商业’

Else ‘其它’

End) from t_owners

还有另外一种写法

select name,(case

when ownertypeid= 1 then ‘居民

when ownertypeid= 2 then ‘行政事业

when ownertypeid= 3 then ‘商业

end )

from T_OWNERS

 

19. 行列转换

需求:按月份统计 2012 年各个地区的水费,如下图

 

select (select name from T_AREA where id= areaid ) 区域,

sum( case when month>=‘01‘ and month<=‘03‘ then money else

0 end) 第一季度,

sum( case when month>=‘04‘ and month<=‘06‘ then money else

0 end) 第二季度,

sum( case when month>=‘07‘ and month<=‘09‘ then money else

0 end) 第三季度,

sum( case when month>=‘10‘ and month<=‘12‘ then money else

0 end) 第四季度

from T_ACCOUNT where year=‘2012‘ group by areaid

20. 分析函数

分析函数主要可以用于排名

 

(1) rank 相同的值排名相同,排名跳跃

Select rank() over(order by usenum desc), usenum from T_account

 

 

注意:over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。

(2) dense_rank 相同的值排名相同,排名连续

需求:对 T_ACCOUNT 表的 usenum 字段进行排序,相同的值排名相同,排名连

Select dense_rank(),over(order by usenum desc),usenum from t_account

(3) row_number 返回连续的排名,无论值是否相等

Select rownumber(),over(order by usenum desc ),usenum from t_account

 

row_number()可以实现分页查询:

Select row_number(),over(order by usenum desc) as rownumber,usenum from t_account

Select * from(Select row_number(),over(order by usenum desc) as rownumber,usenum from t_account

)

Where rownumber>10 and rownumber<=20

十. 集合运算

集合运算,集合运算就是将两个或者多个结果集组合成为一个结果集

Union all(并集),返回各个查询的所有的记录,包括查询重复记录

Union(并集),返回各个查询的所有的记录,不包括重复记录

Intersect(交集),返回两个数据共有的记录

Minus(差集),返回第一个查询检索的记录减去第二个查询检索出记录后剩余的记录简单说就是左边减去右边剩下的结果

 

1. 并集

UNIONALL 不去掉重复记录

select * from t_owners where id<=7

union all

select * from t_owners where id>=5

 

UNION 去掉重复记录

select * from t_owners where id<=7

union

select * from t_owners where id>=5

2. 交集

select * from t_owners where id<=7

intersect

select * from t_owners where id>=5

3. 差集

select * from t_owners where id<=7

minus

select * from t_owners where id>=5

 

运用minus 运算来实现分页,语句如下

select rownum,t.* from T_ACCOUNT t where rownum<=20

minus

select rownum,t.* from T_ACCOUNT t where rownum<=10

 

以上是关于oracle 表空间自动增长 如何设置的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库创建自动增长的表空间语句怎么写?

oracle数据库创建自动增长的表空间语句怎么写?

为啥设置表空间自增长老是报ORA-02142错误 ,语句如下:

oracle ORA-01653 表空间不能自动增长的原因及处理方法

oracle创建表空间 扩展表空间文件 修改表空间自动增长

SQL Server中怎样设置id号自动增长