前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle应用实战三——表+序列

Oracle应用实战三——表+序列

作者头像
Java帮帮
发布2018-03-19 16:15:06
7720
发布2018-03-19 16:15:06
举报
创建表空间

表空间? ORACLE数据库的逻辑单元。 数据库---表空间 一个表空间可以与多个数据文件(物理结构)关联

一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。

create tablespace itcastspacedatafile 'c:\itcast.dbf'size 100mautoextend onnext 10m

itcastspace 为表空间名称

datafile 指定表空间对应的数据文件

size 后定义的是表空间的初始大小

autoextend on 自动增长 ,当表空间存储都占满时,自动增长

next 后指定的是一次自动增长的大小。

用户

1.创建用户

create user itcastuseridentified by itcastdefault tablespace itcastspace

identified by 后边是用户的密码

default tablespace 后边是表空间名称

oracle数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。

2.用户赋权限

新创建的用户没有任何权限,登陆后会提示

Oracle中已存在三个重要的角色:connect角色,resource角色,dba角色。

CONNECT角色: --是授予最终用户的典型权利,最基本的

CREATE SESSION --建立会话

RESOURCE角色: --是授予开发人员的

CREATE CLUSTER --建立聚簇

CREATE PROCEDURE --建立过程

CREATE SEQUENCE --建立序列

CREATE TABLE --建表

CREATE TRIGGER --建立触发器

CREATE TYPE --建立类型

DBA角色:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构,并且系统权限也需要DBA授出,且DBA用户可以操作全体用户的任意基表,包括删除

grant dba to itcastuser

进入system用户下给用户赋予dba权限,否则无法正常登录

表的管理

建表*****

语法

Create table 表名(字段1 数据类型 [default 默认值],字段2 数据类型 [default 默认值],...字段n 数据类型 [default 默认值]);

范例:创建person表

create table person(

pid number(10),

name varchar2(10),

gender number(1) default 1,

birthday date

);

insert into person(pid, name, gender, birthday)

values(1, '张三', 1, to_date('1999-12-22', 'yyyy-MM-dd'));

删除表

语法:DROP TABLE 表名

表的修改*****

在sql中使用alter可以修改表

Ø 添加语法:ALTER TABLE 表名称 ADD(列名1 类型 [DEFAULT 默认值],列名1 类型 [DEFAULT 默认值]...)

Ø 修改语法:ALTER TABLE 表名称 MODIFY(列名1 类型 [DEFAULT 默认值],列名1 类型 [DEFAULT 默认值]...)

Ø 修改列名: ALTER TABLE 表名称 RENAME COLUMN 列名1 TO 列名2

范例:在person表中增加列address

alter table person add(address varchar2(10));

范例:把person表的address列的长度修改成20长度

alter table person modify(address varchar2(20));

数据库表数据的更新

INSERT(增加)

语法:

INSERT INTO表名[(列名1,列名2,...)]VALUES(值1,值2,...)

标准写法:

简单写法(不建议):

INSERT INTO 表名VALUES(值1,值2,...)

insert into person

values(1,'张三',1,'9-5月-1981','北京北七家');

注意:使用简单的写法必须按照表中的字段的顺序来插入值,而且如果有为空的字段使用null

insert into person

values(2,'李四',1,null,'北京育新');

事务

这是因为oracle的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据库。如果事务提交后则不可以再回滚。

提交:commit

回滚:rollback

UPDATE(修改)

全部修改:UPDATE 表名 SET 列名1=值1,列名2=值2,....局部修改:UPDATE 表名 SET 列名1=值1,列名2=值2,....WHERE 修改条件;

DELETE(删除)

语法 : DELETE FROM 表名 WHERE 删除条件;

在删除语句中如果不指定删除条件的话就会删除所有的数据

Truncate table实现数据删除

比较truncate与delete实现数据删除?

1. delete删除的数据可以rollback,也可以闪回

2. delete删除可能产生碎片,并且不释放空间

3. truncate是先摧毁表结构,再重构表结构

序列

在很多数据库中都存在一个自动增长的列,如果现在要想在oracle 中完成自动增长的功能, 则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。

范例:创建一个seqpersonid的序列,验证自动增长的操作

CREATE SEQUENCE seqpersonid;

序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中

提供了以下的两种操作:

nextval :取得序列的下一个内容

currval :取得序列的当前内容

select seqpersonid.nextval from dual;

select seqpersonid.currval from dual;

在插入数据时需要自增的主键中可以这样使用

在实际项目中每一张表会配一个序列,但是表和序列是没有必然的联系的,一个序列被哪一张表使用都可以,但是我们一般都是一张表用一个序列。

序列的管理一般使用工具来管理。

完整语法

CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}];

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档