Oracle数据库笔记以及plsql的使用
1.登录sys
1.sql*plus登录
请输入用户名: connect / as sysdba
输入口令:oracle
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
2.plsql登录
输入用户名: system
输入口令:oracle
数据库:orcl
2.用户创建与授权(system权限)
1.新建个用户
create user xxxxx(用户名) identified by "密码"
例如: create user sqluser01 identified by oracle;
2.修改用户信息
alter user 用户名 identified by “新密码” --修改用户密码
例如:alter user sqluser01 identified by 123456
3.删除用户
语法:drop user 用户名;
例如:drop user sqluser01;
若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。
语法: drop user 用户名 cascade;
例子: drop user sqluser01 cascade;
4.查看权限
1.查看当前用户所有权限
select * from user_sys_privs;
2.查看所用用户对表的权限
select * from user_tab_privs;
3.授权
新建的用户和默认的用户是锁住的,没有权限。所以新建用户后要给用户赋予权限.ORACLE系统提供三种权限:Object 对象级、System 系统级、Role 角色级。
oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.
1 connect role(连接角色)
connect 只对其他用户的表有访问权限,包括select/insert/update和delete等。
connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链
2 resource role(资源角色)
--更可靠和正式的数据库用户可以授予resource role。resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
3 dba role(数据库管理员角色)
system由dba用户拥有。dba role拥有所有的系统权限.包括无限制的空间限额和给其他用户授予各种权限的能力。
授权命令
语法: grant connect, resource to 用户名;
grant connect,resource to sqluser01;
4.收回权限
revoke connect,resource from sqluser01;
5.创建/授权/删除角色
除了前面讲到的三种系统角色----connect、resource和dba,用户还可以在oracle创建自己的role。用户创建的role可以由表或系统权限或两者的组合构成。为了创建role,用户必须具有create role系统权限。Oracle 的角色存放在表 dba_roles 中,某角色包含的系统权限存放在 dba_sys_privs 中,包含的对象权限存放在 dba_tab_privs 中。实体权限分类
select, update, insert, alter, index, delete, all //all包括所有权限 execute //执行存储过程权限
1》创建角色
语法: create role 角色名;
例子: create role sqluser01role01;
2》授权角色
1.授予用户sqluser01role01登录权限(只能登陆数据库,以及查询一些public视图等)
grant create session to sqluser01role01;
2.授予sqluser01role01建表权限
grant create table to sqluser01role01;
3.授予sqluser01role01建视图权限
grant create view to sqluser01role01;
4.授予sqluser01role01操作表空间的权限
grant unlimited tablespace to sqluser01role01;
5.授予sqluser01role01建类型权限
grant create type to sqluser01role01;
6.授予sqluser01role01创建序列的权限
grant create sequence to sqluser01role01;
7.授予sqluser01role01创建触发器的权限
grant create trigger to sqluser01role01;
8.授予sqluser01role01创建存储过程的权限
grant create any procedure to sqluser01role01;
9.授予sqluser01role01执行存储过程的权限
grant execute any procedure to sqluser01role01;
10.授予sqluser01role01对class表的select查询权限
语法: grant select on class to 角色名;
列子: grant select on class to sqluser01role01;
3》收回权限:
语法: revoke connect, resource from 角色名;
列子: revoke connect, resource from sqluser01role01;
3》删除角色
语法: drop role 角色名;
例子: drop role sqluser01role01;
4》查看角色权限
1查询当前用户拥有的全部角色的全部信息
select * from user_role_privs;
2.查询当前用户拥有的权限全部信息
select * from role_sys_privs;
3.创建表
1.使用sequence实现自增
1.语法:
create sequence SQE_TEST--名字 minvalue 10000--最小值 maxvalue 99999999999--最大值 start with 10000--起始值 increment by 1--自增数量 cache 20;--定义存放序列的内存块的大小,默认为20。对序列进行内存缓冲,可以改善序列的性能。 --nocache;--表示不对序列进行内存缓冲。
2.查询自增序列:
创建完成sequence,必须先使用nextval
1.查看当前的序列:
select SQE_TEST.currval from dual;
2.查看下一个自增序列
select SQE_TEST.nextval from dual;
3.创表语法(alter语法)
create table **sqluser01t1**(--黑体为表名 id number not null, name varchar2(8), sex varchar2(2) check(sex='男' or sex='女'), primary key(id) ); create table sqluser01test2( id number not null, fid number, name varchar2(8), sex varchar2(2) check(sex='男' or sex='女'), primary key(id,fid) );
1.添加 name约束:name不为空;
alter table sqluser01test1 modify name varchar2(8) not null;
测试语句:
insert into sqluser01test1 values(1,'test','男'); insert into sqluser01test1 values(1,'男');
2.表t2添加外码ti的id:
表外:
alter table sqluser01test2 add foreign key(fid) references sqluser01test1(id);
或者:
drop table sqluser01test2; create table sqluser01test2( id number not null, fid number, name varchar2(8), sex varchar2(2) check(sex='男' or sex='女'), primary key(id,fid), foreign key(fid) references sqluser01test1(id)--添加 );
3.alter对表字段操作:
1.先对表2添加字段 testfild:
alter table sqluser01test2 add testfild varchar2(8);--单字段 alter table sqluser01test2 add (testfild varchar2(8),testfild2 number(8));--多字段
2.对表2修改字段 testfild:
alter table sqluser01test2 modify testfild varchar2(10) notnull;--单字段 alter table sqluser01test2 modify (testfild varchar2(10),testfild2 number(10));--多字段
3.对表2删除字段 testfild:
alter table sqluser01test2 drop (testfild);--注意小括号 alter table sqluser01test2 drop (testfild,testfild2);--多字段
4.对主键约束
对表2取消外键作为主码:
1.判断主码约束是否有名字:
没有名字:
对于表2:
create table sqluser01test2( id number not null, fid number, name varchar2(8), sex varchar2(2) check(sex='男' or sex='女'), primary key(id,fid), foreign key(fid) references sqluser01test1(id)--添加 );
1.查询主键名:
SELECT * from user_cons_columns where table_name='SQLUSER01TEST2';--表名
结果为:
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME SQLUSER01 SYS_C0012207 SQLUSER01TEST2 ID SQLUSER01 SYS_C0012208 SQLUSER01TEST2 SEX SQLUSER01 SYS_C0012209 SQLUSER01TEST2 ID SQLUSER01 SYS_C0012209 SQLUSER01TEST2 FID SQLUSER01 SYS_C0012210 SQLUSER01TEST2 FID
主键名字:SYS_C0012209
2.依据主键名字,删除主键:
alter table sqluser01test2 drop constraint SYS_C0012209;
3.添加主键(自定义主键名)
alter table sqluser01test2 add constraint pk_student primary key(id);
有名字的:
create table sqluser01test2( id number not null, fid number, name varchar2(8), sex varchar2(2) check(sex='男' or sex='女'), constraints pk_sqluser01test2 primary key(id), foreign key(fid) references sqluser01test1(id)--添加 );
1.依据主键名字,删除主键:
alter table sqluser01test2 drop constraint pk_sqluser01test2;
2.添加主键(自定义主键名)
alter table sqluser01test2 add constraint pk_sqluser01test2 primary key(id,fid);
4.常用函数:
1.时间函数:
查询当前时间:
select sysdate from dual;
2.日期转换字符串:
to_char(date,formate)
例如:
把当前时间转换成字符串:
to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss');
3.字符串转换成日期的函数:
to_date(str,formate)
例如:
1.字符串2021-7-21 00:11:23转成时间
to_date('2021-7-21 00:11:23'), 'yyyy-mm-dd hh24:mi:ss');
2.把当前时间转化成字符串,把字符串转化成时间:
to_date(to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss');
例如:对表SQE_DATETESTT1插入时间,
create sequence SQE_DATETESTT1 minvalue 10000 maxvalue 99999999999 start with 10000 increment by 1 cache 20 ; create table datetestt1( id number, birdate date, name varchar2(20), constraint pk_datetestt1 primary key(id) ); insert into datetestt1 values(SQE_DATETESTT1.nextval,sysdate,'test');
4.最大值:
Max(coloms)
select 学号,Max(成绩) as 最高分 from grade group by 学号 order by 学号; select 课程号,Max(成绩) as 最高分 from grade group by 课程号 order by 课程号;
5.最小值:
Min()
select 学号,Min(成绩) as 最低分 from grade group by 学号 order by 学号; select 课程号,Min(成绩) as 最低分 from grade group by 课程号 order by 课程号;
6.平均值:
Avg()
select 学号,Avg(成绩) as 学生平均成绩 from grade group by 学号 order by 学号; select 课程号,Avg(成绩) as 课程平均成绩 from grade group by 课程号 order by 课程号;
Oracle数据库笔记以及plsql的使用相关推荐
- Oracle数据库笔记(基于oracle数据库的PLSQL编程以及存储过程的创建和使用)
PLSQL编程 概念和目的 程序结构 Hello World 变量普通变量 引用型变量 记录型变量 流程控制 条件分支 循环 游标 什么是游标 语法 游标的属性 创建和使用 带参数的游标 存储过程 概 ...
- 达内oracle教材,达内学习心得oracle数据库笔记
达内学习心得oracle数据库笔记 达内学员: oracle 数据库笔记获奖学员:王梓祺所获奖项:三等奖内容:/*前言:这份资料是结合老师笔记,课堂案例, TTS6.0 课件以及个人的理解整理,时间仓 ...
- Oracle数据库•笔记
Oracle数据库•笔记 第一章 数据库概述 第二章 表管理.表数据库修改 oracle注释:单行注释(–),如: –这是单行注释 多行注释(/**/),如: /* 这是多行注释 这是多行注释 这是多 ...
- oracle数据库笔记---oracleweb视图使用流程,及plsql安装
1. a.第一次进入的时候输入:http://127.0.0.1:1158/em/ Oracle Enterprise Manager注意,网页的标题是这个; 输入:system账 ...
- php sql oracle数据库,PHP、PLSQL连接oracle数据库的方法
众所周知,在使用PHP(针对5.2及后续版本)和PLSQL操作oracle数据库前需要先安装客户端来部署环境,然而事实上在连接过程中仅仅只需要客户端中的几个文件罢了.完整版客户端对于我们这些数据库不在 ...
- plsql备份还原oracle数据库,(已实践)PLSQL本地还原Oracle数据库dmp文件
这个方法很烂,导致重装Oracle时候处处出现问题,不建议使用这个方法,除非你以后不再用Oracle这个软件了,这个方法很烂,再评论一下. 第一,启动服务,(如果数据库处于启动状态,那么略过这一步) ...
- oracle rownum union,oracle数据库笔记
获奖学员:王梓祺 所获奖项:三等奖 内容: /*前言:这份资料是结合老师笔记,课堂案例,TTS6.0课件以及个人的理解整理,时间仓促,如有纰漏敬请原谅.*/ Oracle 数据库 语法顺序 selec ...
- oracle11g之管理oracle数据库笔记(理论基础知识)
第三章 管理oracle数据库 1.启动数据库步骤;(创建启动实例--> ...
- PL/SQL 工具远程连接Oracle数据库方法,plsql免安装oracle客户端直接配置oci实战演示
PL/SQL 工具远程连接 Oracle 数据库 第一章:PL/SQL 工具配置 ① oci 下载 ② oci 配置 ③ PL/SQL 工具配置 ④ PL/SQL 远程连接 Oracle 数据库演示 ...
最新文章
- 堆、栈、方法区、静态代码块---Java
- 你的设备中缺少重要的安全和质量修复_城市排水管道三类非开挖修复技术汇总...
- Openstack_通用模块_Oslo_vmware 创建 vCenter 虚拟机快照
- 第一次简单总结CPU工作原理
- 用神经网络的衰变假设理解神经网络的翻译行为
- scala外部传入时间参数-亲测有效
- 使用Java 8 CompletableFuture和Rx-Java Observable
- wps 复制流程图_简单三步,用WPS轻松完成一个又大气又好看的流程图!
- 2021福州地区高考成绩排名查询,2021年福州各高中高考成绩排名及放榜最新消息...
- eclipse 自定义文档注释的作者
- ios 简单的倒计时验证码数秒过程实现
- Fluent.TGrid.v4.0.16
- android textwatcher 延时,Android TextWatcher监控EditText中的输入内容并限制其个数
- DB2 DIgits函数用法
- 【Linux】系统移植篇四--uboot移植
- python生成首尾相连的字符串
- 北京、纽约、伦敦、东京、巴黎五大都市圈中,东京人口集中度最高,北京人均GDP增速卓越 | 美通社头条...
- 服务器winsxs文件夹怎么清理工具,如何清理Win7系统winsxs文件夹中的垃圾?
- java做五子棋 视频_java swing实现五子棋小游戏项目源码附带视频指导运行教程...
- Python发送邮件实例
热门文章
- 计算机网络对我们意味着什么,全网通手机的普及对我们来说意味着什么?
- 书写可静心----《人生》
- 快乐肥宅水--辗转相除法
- 2010年安徽省计算机二级证书,2010安徽省计算机等级考试二级考资料
- 山东大学众智课程——网络(图)有关的实验
- 虎口夺食! 打破Facebook谷歌垄断, MIT大神和他的区块链数据库传奇! |人物志
- Exadata中Infiniband交换机升级
- linux 生成shellcode,基本shellcode提取方法
- Word2Vec原理之层次Softmax算法(转)
- 米达机器人_《星球大战》历史中最佳机器人排名TOP10,你知道几个?