oracle sql 序列

以前有一点开发的基础,对sql有一定的了解,但是在具体的实现中遇到很多问题。与开发不同,目前工作用到数据库知识较多,工作空闲之余学习oracle。下面是有关学习中的一些问题总结:

1.初入oracle

a.一般的使用sysdba用户登录(密码在安装数据库时设定)

b.在建立“用户”之前,需要创建表空间“tablespace”

create tablespace name   --name是表空间名
        datafile 'D:\dttbspace\rs01.dbf' size 100m autoextend on;     --autoextend on    是不设置表空间的最大上限

drop tablespace tablespacename including contents and datafiles;  --删除表空间

c.建立用户

create user username identified by password default tablespace tablespacename;

username:用户名;  password:密码;tablespacename:用户的表空间名


drop user username cascade;
删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace

d.分配权限

权限需更具实际需求来非配,但是有些权限基本都要用上,如:

grant create session to username;       --授权create session权限,保证用户能成功登陆

grant unlimited tablespace to username;--授权unlimited tablespace权限,让用户可以使用表空间

grant create table to test;-- 授权create table权限,让用户可以创建数据表(需在获得表空间权限的前提下)

grant dba to username;--将dba的所有权限授权给username用

这里不一一列举;

2.建表

create table test(--test为表名
        id number(9,0) primary key ,--id为字段名(列名),number(9,0)数据类型为数字、长度为9、精确到小数后0位,primary key标示为主键(唯一的、非空的)
        name varchar2(50) not null, --name为字段名(列名),varchar2(50)数据类型为字符、长度为50,not null不能为空
      url varchar2(100) not null,
    alexa number(9,0),
        country varchar2(5)
        );


3.删除表

drop table test; --删除表test

在表被删除后会留下一些痕迹,因为在oracle 10G之后有一个新特性闪回技术 。
在oracle10G之后,为了防止用户的错误删除,表的操作,专门提供了回收站的功能。用户删除的表会默认保存到回收站之中,也可以通过回收站进行表的恢复,所以此技术称为闪回(FLASHBACK);
查看回收站
SHOW RECYCLEBIN;

这个时候可以发现所有已经删除的表都在回收站中保存着,那么就可以将表进行恢复:
FLASHBACK TABLE 表名称 TO BEFORE DROP;

也可以直接删除回收站的数据:
PURGE TABLE 表名称;

清空回收站
PURGE RECYCLEBIN;

如果希望删除一张表,而又不希望这个表进入回收站中,则可以在删除的时候增加PURGE.
DROP  TABLE  表名称 PURGE;--这是在oracle10G以后才有的,oracle11也有。


4.数据的插入

数据的插入有两种方式

INSERT INTO 表名  values(val1,val2,val3);--这种方式必须将所有字段都写上,列入表中有3个字段(3列),就必须按照列的顺序依次填写val

INSERT INTO 表名 (key1,key2,key3) values(val1,val2,val3);--除了not null的列,其余列可以不插入数据


5.序列:关于oracle中主键,和字段自增(自减、循环等)

CREATE SEQUENCE sequenceName -- 表名_字段名_seq / seq_字段_表名

[INCREMENT BY n]--自增n:number,一般是1

[START WITH n] --初始数字 1

[{MAXVALUE n|NOMAXVALUE}]--最大值,默认没有最大值

[{MINVALUE n|NOMINVALUE}]--最小值,默认没有最小值

[{CYCLE|NOCYCLE}]--是否循环,默认不循环

[{CACHEn| NOCACHE}] --缓存,默认没有缓存


如运行下面的sql后,便创建了一个名为 seq 的序列

CREATE SEQUENCE seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE;

在插入数据时,只需在使用自增(自减、循环等)的对应位置 用seq.nextval代替,不需要具体的数据。

insert into test values(seqseq.nextval,'淘宝','https://www.taobao.com/',13,'CN');



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值