一、登录 sqlplus /nolog
快捷键:Win+R
二、以系统sysdba身份进行oracle session连接登录
conn / as sysdba;
三、创建用户:appleyk,指定密码:sa123,暂未给其指定表空间,默认所属表空间DEFAULT_TABLESPACE:USERS
create user appleyk identified by sa123;
查看添加的用户APPLEYK所在的表空间
select username,default_tablespace from dba_users where username = 'APPLEYK';
查看默认表空间USERS的datafile文件完整路径
select tablespace_name,file_name from dba_data_files where tablespace_name = 'USERS';
四、创建表空间,指定datafile路径和数据文件xx.DBF的size
我们切换到系统对应目录下面,看一下,appleyk.dbf数据文件是否被创建
五、为用户appleyk指定表空间(修改默认表空间名指向),别忘了表空间名叫:ts_appleyk
alter user appleykl default tablespace ts_appleyk;
查看上述操作是否奏效
select username,default_tablespace from dba_users where username = 'APPLEYK';
六、假装不知道用户appleyk有哪些privilege(特权),尝试连接oracel session
说明:另外在开一个sqlplus /nolog,区别sysdba,省得一会给appleyk赋权限的时候,一个窗口来回切换用户。
conn appleyk/sa123;
七、查看用户appleyk的privilege(权限)有哪些(在sysdba下查)
select grantee,privilege from dba_sys_privs where grantee = 'APPLEYK';(grantee:被赋予权限的用户)
八、查看和SESSION相关的权限有哪些(仍然在系统表 dba_sys_privs里查)
select distinct privilege from dba_sys_privis where privilege like '%SESSION%';
九、给用户appleyk授予CREATE SESSION 权限,并再次以appleyk用户身份连接Oracle session
grant CREATE SESSION to appleyk;
conn appleyk/sa123;
十、一次性,将本篇剩余要用到的privilege(权限)给用户appleyk
创建表table权限 :CREATE TABLE
表空间tablespace权限 :UNLIMITED TABLESPACE(无限制 表空间)
创建序号sequence权限:CREATE SEQUENCE --->按照指定的增量递增的一个序号,每次取都会自动增加
创建触发器trigger权限 :CREAET TRIGGER --->结合sequence,实现table插入数据的时候,主键ID自增长
(以上这些,均可以在系统权限表dba_sys_privis里面查到相关内容信息)
grant CREATE TABLE,UNLIMITED TABLESPACE,GREATE SEQUENCE,CREATE TRIGGER to appleyk;
十一、为appleyk用户创建两个表A和B,并插入基本数据
创建:create
create table A(id integer,name nvarchar2(10));
create table B(id integer,a_id integer,name nvarchar2(20)); --->字段a_id 和表A的id关联
插入:insert
insert into A values(1,'appleyk');
insert into A values(2,'张三');
insert into A values(3,'李四');
insert into A values(4,'王五');
按照上述方法,插入余下数据
insert into B values(1,1,'Java');
insert into B values(2,2,'C++');
打开 pl/sql developer客户端工具
(1)登录
(2)实现表A和表B的左连接 left join
(3)实现表A和表B的右连接 right join
(4)实现表A和表B的内连接inner join
(5)实现表A和表B的全连接 full join
表A和表B就是为了配合基本数据的演示的,本篇不作重点!
十二、为用户appleyk创建一个序列sequence
create sequence seq_appleyk
increment by 1 --每一次的增量(步长)
start with 1 -- 开始序号
maxvalue 999999 -- 最大值
cycle nocache -- 循环 和 是否启用缓存
order --保证序号按照请求的顺序生成
验证序列,取出三个序号试一试
select seq_appleyk.nextval from dual;
十三、创建表C,并插入一条数据
create table C(
id number(6) not null primary key,
name nvarchar2(10) not null,
sex char(1) not null,
age integer not null,
email varchar2(20)
);
插入数据:
insert into C values(1,'appleyk','M',26,'appleyk.com@mail');
十四、为表C创建触发器,基于insert操作,结合sequence实现表C数据插入时主键id的自动增长
注意:相比MSSQL(identity(1,1)) 和 MYSQL(auto_increment),Oracle没有自动增长列一说
create or replace trigger tri_appleyk_C
before insert on C
for each row
begin
select seq_appleyk.nextval into:new.id from dual;
end;
/
再次向表C插入一条数据,这次不带id,走一次
(注意:序号我们当前已经取到了3,再取就是4,因此再插入一条数据,id应该是4,往后依次自增长)
insert into C(name,sex,age,email) values('科比','M',38,'kobe.com@mail');
查询一下表C的数据
再插入一条数据
insert into C(name,sex,age,email) values('志玲','F',45,'zhilng.com@mail');
转下一篇,实战操作 ---->Oracle存储过程数据集返回的定义和调用以及Java客户端的JDBC存储过程的调用