• 104138

    文章

  • 803

    评论

  • 12

    友链

  • 比来新加了换肤功能,大年夜家多来走走吧~~~~
  • 爱好这个网站的同伙可以加一下QQ群,我们一路交换技巧。

快速控制Oracle根本语法,让你来往交往自若

撸了本年阿里、腾讯和美团的面试,我有一个重要发明.......>>

这篇,  让我们来持续上篇装置成功后, 讲解Oralce根本语法,让你可以操作控制SQL语句,话不多说,上货!!!!!!

 

在说Oracle语法之前, 让我们懂得一下 ↓↓↓↓↓↓↓↓↓

一. Oracle和mysql的差别:

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

 

 

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

 

 

二. 数据库操作

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处不一样 temporarytempfile

-- 创建临时表空间
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;  --以后用于在指定的表空间的限额大年夜小

 

然后可用该账号暗码停止登录

 

然则,能够会出现一个小成绩, 没法停止登录,

应用czxy1 经过过程PL/SQL 没法停止登录,提示没有权限 .以下图

 

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

付与用户一切权限(管理员权限 dba)
-- grant dba to 用户名;
grant dba to czxy002;

运转该SQL语句便可进步权限,便可登录

成功显示:

 

 

5.  用户赋权(懂得)

 

 

 

grant create session to czxy1;

 

 

 

grant select on hr.employees to czxy001;

 

 

 

6. 用户角色RBAC(懂得)

 

 

 

 

 

 

 

 

 

grant dba to czxy1;

这个就是给用户付与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;

 

分类:

 

 

实例:

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;

 

 

罕见束缚

 

 

(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个以上字段,组合在一路为主键,称为结合主键。

  • 应用处景:多对多关系中心表

 

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中 新增一条数据:其实就是向临时表空间中新增

临时表空间的数据甚么时候提交到表空间中呢?

答:三种情况:

  1. Commit
  2. 过半个小时阁下,主动提交
  3. 封闭plsql开辟对象
    • Oracle事务,主动提交默许封闭的。所以须要手动提交

 

 

我们下篇持续噢!!!等待!!

看完祝贺你,又知道了一点点!!!

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

~感激志同志合的你浏览,  你的支撑是我进修的最大年夜动力 ! 加油 ,陌生人一路尽力,共勉!!


695856371Web网页设计师②群 | 爱好本站的同伙可以收藏本站,或许参加我们大年夜家一路来交换技巧!

0条评论

Loading...


自定义皮肤 主体内容背景
翻开付出宝扫码付款购买视频教程
碰到成绩接洽客服QQ:419400980
注册梁钟霖小我博客