oracle快速了解法,快速掌握Oracle基本语法,让你来去自如

这篇,  让我们来继续上篇安装成功后, 讲解Oralce基本语法,让你可以操作掌握SQL语句,话不多说,上货!!!!!!

在说Oracle语法之前, 让我们了解一下 ↓↓↓↓↓↓↓↓↓

一. Oracle和mysql的区别:

MySQL:用户名--> 数据库 --> 表

5864bba81a45c8b1466359feac2aebcf.png

Oracle:数据库--> 用户名 --> 表

107b3085c5ba66f4bab8815be5e5c3a2.png

二. 数据库操作

1. 概述

Oracle表与用户关联

每一个用户,需要确定表存放位置,此位置称为 表空间。

在Oracle中表空间分2种:永久表空间、临时表空间

临时表空间:使用SQL语句操作时,结果先进入临时表空间

永久表空间:当执行commit(提交)时,数据将从临时表空间到永久表空间。

2.  创建表空间(永久)

基本语法 create tablespace 表空间名称

datafile '表空间保存位置'

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

autoextend on;            用于设置自动增长,如果存储量超过初始大小,则开始自动扩容

实例:

create tablespace test1

datafile 'G:\JAVA\tools\oracle\space\test1.dbf'

size 10m

autoextend on; --空间大小自动增强

3.创建临时表空间

语法

注意与创建表空间有2处不一样temporary和tempfile

-- 创建临时表空间

create temporary tablespace 临时表空间名称

tempfile '临时表空间位置'

size 10m

autoextend on;

实例

--创建临时表空间

create temporary tablespace test1temp

tempfile 'G:\JAVA\tools\oracle\space\testtemp.dbf'

size 10m

autoextend on;

4. 创建用户

语法

-- 创建用户

create user 用户名

identified by 密码

default tablespace 表空间

temporary tablespace 临时表空间

quota 大小 on 表空间;        --当前用于在指定的表空间的限额大小

实例

create user czxy1 --用户名

identified by czxy1 --密码

default tablespace test1 --表空间

temporary tablespace test1temp --临时表空间

quota 50m on test1; --当前用于在指定的表空间的限额大小

然后可用该账号密码进行登录

63202b6d61bf8468deb799c4505efe4c.png

5942b5278c07d5ba6dcbb130c90075c7.png

但是,可能会出现一个小问题, 无法进行登录,

使用czxy1 通过PL/SQL 无法进行登录,提示没有权限 .如下图

ce588267d24a2af35451680a3a81230b.png

这时候别慌, 煌sir早就给你准备好了

赋予用户所有权限(管理员权限 dba)

-- grant dba to 用户名;

grant dba to czxy002;

运行该SQL语句即可提高权限,即可登录

成功显示:

ecc7de3d1259d0e67b583260317689f2.png

5.  用户赋权(了解)

01e56b83f36e7b9f1f3699a89fadd738.png

4cdb561dc8baf04200dc14d0afd4ad8f.png

efae8a905723e4d193f58079fa2a0dda.png

grant create session toczxy1;

795330b63de42d797c8d11a63b1fc90d.png

959321e4227c27b4d5812544dadc2090.png

grant select onhr.employeesto czxy001;

6. 用户角色RBAC(了解)

def084371b40da6e0a3bcfc88797d931.png

c372df93d220763fe3822716f7cc45e5.png

3b31d8978fbbb51166699e3eeb6e83f1.png

03f0acfbdf2e4d5af7d92677143fdcce.png

5bb0e376829cdd91662ee076f0c80253.png

da0434ec79946dd079bf950550a78371.png

grant dba toczxy1;

这个就是给用户赋予DBA权限后即可登陆

7. 表的操作

(1)创建表

语法1:创建一个新表

create table 表名(

字段名   类型   [约束],

字段名2  类型   [约束],

);

如:

create table book (

bid int primary key,

title varchar2(50)

);

语法2:拷贝一个表(结构 + 数据)

create table 表名 as 查询语句;

如:

select * from hr.employees;

create table emp as select * from hr.employees;

分类:

32c892e8d8c7bffd364a3c06d5ac44fd.png

实例:

create table student(

stuid int,

stuname varchar2(20),

sex char(1),

age number(3,0),

birthday date,

email varchar2(20),

phone char(11)

);

(2) 修改表(了解)

alter table 表名 具体操作  数据;

-- 添加

alter table 表名 add (列描述,....);

-- 修改

alter table 表名 modify (列描述,....);

-- 删除列

alter table 表名 drop column 列名;

实例:

--1.增加字段

alter table student add(

remark varchar2(20),

order_no int

)

--2.修改字段

alter table student modify(

remark nvarchar2(50),

order_no varchar2(50)

);

--删除字段

alter table student drop column order_no;

(3) 删除表

drop table 表名

实例:

--删除表

drop table student2;

常见约束

23991cff7691fe362369c613cd51f036.png

(1) 主键约束

添加约束

-- 主键约束0

-- 方式1:创建表,声明字段时,添加约束 (只能指定一个字段为主键)

create table pk01(

pid int primary key,

name varchar2(20)

);

-- 方式2:创建表,声明字段后,添加约束 (可以设置联合主键)【推荐】

create table pk02(

pid int,

name varchar2(20),

constraint pk02_pid primary key (pid)

);

-- 方式3:创建后,修改表结构,添加约束 【推荐】

create table pk03(

pid int,

name varchar2(20)

);

alter table pk03 add constraint pk03_pid primary key (pid);

删除约束

-- 删除主键

alter table pk03 drop primary key;

(2)主键验证

insert into pk01(pid,name) values(1,'jack'); -- 不允许重复执行

insert into pk01(name) values('jack'); -- 不允许为null

commit;

(3)唯一、非空、默认

### 2.3.4 唯一、非空、默认

* 唯一约束 ,添加约束方式与`主键约束`一致,也就是可以采用3种方式

~~~sql

-- 唯一约束 (第三种)

create table un01(

pid int,

name varchar2(20)

);

alter table un01 add constraint un01_name unique(name);

唯一验证

insert into un01(pid,name) values(1,'jack'); -- 不允许重复执行

insert into un01(name) values('rose'); -- 可以执行

commit;

(4) 非空约束:

-- 非空约束

create table nn01(

pid int,

name varchar2(20) not null

);

非空验证

insert into nn01(pid,name) values(1,'jack'); -- 允许重复录入

insert into nn01(pid) values(2); --不允许为null

commit;

(5)默认约束:

-- 默认约束

create table de01(

pid int,

name varchar2(20) default('游客')

);

默认验证

insert into de01(pid) values(2); -- 只录入id,name默认游客

commit;

(6) 检查约束

-- 检查校验

create table ch01(

pid int,

sex char(10) check( sex in ('男','女') ),

age int check( age >=0 and age <=100 )

);

检查校验

insert into ch01(pid,sex,age) values(1,'男',18); -- 可以录入

insert into ch01(pid,sex,age) values(2,'妖',18); -- 不允许

commit;

(7)外键约束

语法:

--  alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

实例:

Alter table stuinfo add constraint fk_stuno foreign key(stuno) references student(stuno);

联合主键

联合主键:2个以上字段,组合在一起为主键,称为联合主键。

应用场景:多对多关系中间表

6b10969a5e508e1bea2fcbe78776ba8a.png

drop table student_course;

create table student_course(

sid varchar2(20) ,

cid varchar2(20) ,

score number(4,1)

);

alter table student_course add constraint student_course_pk primary key (sid,cid);

insert into student_course(sid,cid,score) values('s001','c001',100); --不允许重复

commit;

三. DML (增删改)

DML :数据操作语言,完成数据增删改操作

1. 添加

-- 完整用法

insert into 表名(字段1,字段2,...) values(值1,值2,...)

-- 省略用法:值顺序必须与表中的列顺序对应

insert into 表名 values(值1,值2,...)

实例:

--插入数据

--方式一

insert into student(sid,sname,phone)values(1,'tom','123');

--方式二

insert into student values(2,'aa',null,20,null,null,'111111');

insert into student values(2,'bb','男',18,null,'123@com','22222')

2. 修改

-- 语法1:更新表中的所有数据

update 表名 set 字段1=值1,字段2=值2,...

-- 语法2:更新指定数据(条件)

update 表名 set 字段1=值1,字段2=值2,... where 条件

实例:

--修改数据 ------------

update student set phone='123321' where sid=1;

3. 删除

-- 语法1:删除所有

delete from 表名;

-- 语法2:删除指定数据(条件)

delete from 表名 where 条件;

-- 语法3:

truncate table 表名;

实例:

--删除

--语法1 delete支持回滚

--删除数据

delete from student where sid=1;

--删除所有

delete from student;

--语法3;删除表结构,重新创建

truncate table student2;

delete 和 truncate 区别:

delete 删除表中的数据,支持回滚。

truncate 删除表结构,重新创建。

今篇到这里就结束,但在结束前还有一点要注意的就是关于数据库操作的一些情况

在PL/SQL执行 DML(增删改)时,查询不到数据。

,可以在以下三种情况下说明:

向Oracle中 新增一条数据:其实就是向临时表空间中新增

临时表空间的数据何时提交到表空间中呢?

答:三种情况:

Commit

过半个小时左右,自动提交

关闭plsql开发工具

Oracle事务,自动提交默认关闭的。所以需要手动提交

我们下篇继续噢!!!期待!!

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多!

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 !加油 ,陌生人一起努力,共勉!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值