oracle细节、经验锦集

这篇具有很好参考价值的文章主要介绍了oracle细节、经验锦集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131054454
出自【进步*于辰的博客】

1、细节积累

  1. 字符串前有一个' '(空字符),故首字母的索引是1
  2. 使用in/not in时,逐条检索。任何类型与null比较,都返回null,故子查询时,要先清除所有null记录,否则结果集都为空;
  3. 使用group by时,select中出现的字段必须在group by中存在;
  4. 查看所有实例:show parameter name;(注:当前用户必须至少拥有sysdba权限)
  5. 插入时,若要插入特殊字符'&',不能直接放入字符串中,因为&是变量修饰符,只能通过字符串拼接实现;
  6. 插入时,未赋值却有值,此值来自default,使用alter table 表名 set 字段 = default可将所有已存储数据重置为default
  7. 数据表存储于用户的数据群中,会占据存储空间。delete是 DML,删除记录后并不释放空间,可回滚;truncate是 DDL,执行后释放空间,不可回滚。
  8. 表约束和列约束相同,只是定义位置不同。列约束定义于列后,表约束定义于所有列后。定义格式:constraint 约束名 约束类型(字段)。(出自create table...
  9. 日期运算: (1)+ 1:增加一天;(2)+ 1/24:增加一小时,都会进位。
  10. 查询对象结构:desc 对象名。 (“对象”如:数据表)
  11. 查看Oracle版本方法:(1)登录时(cmd)显示;(2)sqlplus -v;(3)select * from v$version
  12. 修改表名命令:(1)alter table old_name rename to new_name;(2)rename old_name to new_name
  13. 查看所有实例:show parameter name

2、关于修改数据表字段时的规定

参考笔记一,P21.15。

  1. 若修改数据类型,则此列中已存储数据必须全为null(不是字符串'null',而是指“空”,无数据)。
  2. 若此类的数据类型为数值类型,(1)减少长度,同上;(2)增大长度,无限制。
  3. 若此类的数据类型为字符类型,减少长度时,只要修改后的长度足够容纳已存储数据,无限制;
  4. 修改默认值:modify(字段 default 值)。只会改变新增值,不会影响已存储值。
  5. 修改别名:alter table 表名 rename column 旧名 to 新名

3、登录相关

参考笔记二,P24.5/6、P58.1。

3.1 免密登录

Oracle登录命令的形式很多,普遍的两种形式是:

  1. sqlplus /nolog,一般的用途是防止用户名和密码被窥视;
  2. sqlplus / as sysdba。(登录用户为sys,身份是sysdba

为什么可以“免密登录”? \color{grey}{为什么可以“免密登录”?} 为什么可以免密登录
首先,Oracle具有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。之所以能“免密登录”,是因为操作系统的当前账户在用户组ora_dba中。(大家可以在“组策略”中看到这个用户组)

3.2 登录

远程登录命令格式:

sqlplus 用户名/密码@ip地址:端口/实例名

例如:

sqlplus scott/123456@localhost:1521/bpmtest

默认端口是1521

其他命令:

show user	// 查看当前用户

// 切换用户
1、conn scott/123456
2connect /
3、conn / as sysdba

shutdown immediate	  // 关闭数据库
startup		// 打开数据库

4、数据字典dba_profiles

参考笔记二,P24.4。

此字典记录了口令和资源限制的配置信息,如:登录允许密码错误次数、密码过期时间。如下:(当前用户身份至少是sysdba才能访问,当前用户为基础数据库管理员sys
oracle细节、经验锦集

修改此表数据不能使用update,而是需要在命令行完成。

示例。

alter profile default limit failed_login_attempts 3;

将登录允许密码错误次数设置为3次。

5、集合运算

参考笔记一,P20.10;笔记二,P58.3。

5.1 概述

常见的集合运算有4种:

  1. union:联合。相当于“并集”,去重,按照第一列升序排序;若每个查询都有 null(空记录),只保留一个。
  2. union all:完全联合。不去重,默认不排序,并保留所有 null。由于不去重,故效率高于union
  3. intersect:交集。
  4. minus:差集。假设运算是A minus B(A、B是select查询),等价于A - A intersect B

集合运算条件:

  1. 所有select查询(在后称为“子查询”)的列数必须相同并类型一一对应,列名无需相同;
  2. 不允许“子查询”使用order by,只能联合后使用(即只能在最后使用);
  3. 以第一个“子查询”的列作为运算结果的列;
  4. 去重依据:在“子查询”内、“子查询”间,根据不同记录之间所有列的数据是否相同判断(一一对应比较),不考虑列名(包括相同列名)。

5.2 示例

示例数据。
oracle细节、经验锦集
oracle细节、经验锦集
运算示例。
oracle细节、经验锦集
oracle细节、经验锦集
oracle细节、经验锦集
oracle细节、经验锦集

6、关于 null

参考笔记一,P26.30/31;P27.30。

注:null 指空,即“无数据”,不是'null''NULL'

6.1 规则

  1. 任何类型与 null 运算都为空。
  2. 包含空值的连接字符串||,同与空字符串''连接。

6.2 null 对in/not in的影响

innot in我们都很熟悉,不知道大家有没有注意一个细节,就是明明存在满足in/not in的记录,可结果集为空。为何如此?

我先将所有情况列举出来,再说明原因。为了降低大家的阅读成本,在此规定格式:

where A B C

A 是字段,B 是in/not in,C 是条件列表。

八种情况:

  1. A 中有 null,B 是in,C 有null。结果:正常匹配,但 null 行无法显示。(正常匹配非 null 记录)
  2. A 中有 null,B 是in,C 无null。结果:正常匹配。
  3. A 中有 null,B 是not in,C 有null。结果:无记录。
  4. A 中有 null,B 是not in,C 无null。结果:正常匹配非 null 记录。
  5. A 中无 null,B 是in,C 有null。结果:正常匹配。
  6. A 中无 null,B 是in,C 无null。结果:正常匹配。
  7. A 中无 null,B 是not in,C 有null。结果:无记录。
  8. A 中无 null,B 是not in,C 无null。结果:正常匹配。

原因:

  1. in相当于=not in相当于!=
  2. 表示为空的格式是is null,不为空是is not null
  3. 满足in的条件是“只要有一个匹配”,满足not in的条件是“必须所有都不匹配”。
  4. 无论in还是not null,都是逐一进行比较。

大家基于这四点,套用到以上八种情况,就知道为何“无记录”了,在此不赘述。

P S : PS: PS当然,大家在使用in/not in时,可以直接对比这八种情况,作相应的数据处理即可,不需要具体分析。

8、关于类型间转换

参考笔记一,P17。

8.1 隐式转换

  1. 插入、更新时,转换为字段的类型,如:Integer → number
  2. 查询时,转换为属性的类型,如:number → int
  3. 字符与数字比较时,转换为数值类型;
  4. 字符与日期比较时,转换为日期类型;
  5. ||连接时,转换为字符类型。

8.2 显式转换

如下图:
oracle细节、经验锦集

图解:

  • Ato_char(d, 格式码)

格式码:
yyyy→ 年,year→ 年份英文全称,month→ 月份,MM/mm→ 月,day/dy→ 星期,dd→ 日,hh24/HH24→ 小时,mi→ 分钟,ss→ 秒,am/pm→ 朝夕。

示例:
oracle细节、经验锦集

  • Bto_number(c)

规定: c必须是数字型字符串才可以转换。

示例:
oracle细节、经验锦集

  • Cto_char(n, 格式码)

格式码:
9(数字)→ 保持数字原状;0(数字)→ 若n的位数小于格式码的位数时,用0代替;$→ 美元;L(字母)→ 本地货币;.(小数点)→ 保持本身。

示例:
1、格式码:'9999.99'
oracle细节、经验锦集
2、格式码:'0000.00'
oracle细节、经验锦集
3、格式码:'$9999.99''$0000.00'
oracle细节、经验锦集
4、格式码:'L9999.99'
oracle细节、经验锦集
特例:
若格式码的长度大于数字的长度,则显示##...

示例:
oracle细节、经验锦集

  • Dto_date(c, 格式码)

同样遵循转换A中的格式码。(后续补充)

9、用户相关

9.1 用户

参考笔记一,P24.19;笔记二,P24.3。

用户创建步骤:

// 创建用户
create user 用户名 identified by 密码;

// 修改用户配额
alter user 用户名 quota 空间大小 on 表空间名
// 或:
grant unlimited tablespace to 用户名;	// 无限表空间

// 授权
grant 权限 to 用户 [with admin option];		
// []内语句的作用是:允许此用户将此权限授予其他用户

// 回收权限
revoke 权限 from 用户;
// 若此用户已将此权限授予其他用户,则回收权限时不会连带回收

其他命令:

alter user 用户 identified by 密码;		// 修改密码

alter user 用户名 account lock/unlock;		--上锁 / 解锁--
// 用户状态:open(打开。默认)、expired(密码过期)、locked(已锁定)

9.2 对象权限

参考笔记一,P24.20、P25.23~25。

分类:
selectdeleteinsertupdatealter(修改)、references(外链)、index(索引)、execute(执行)。

命令:

// 授权
grant 权限[(字段)]|all privileges[(字段)]
on [schema.]Object
to 用户|public [with grant option]

// 回收权限
revoke 权限 on [schema.]Object from 用户;

说明:

  1. 权限即上述分类;all privileges指所有对象权限;schema是用户名;Object是对象,指数据表;public指所有用户;with grant option类似with admin option
  2. 关于public对象:既不是用户,也不是角色,为所有用户自动共有public拥有的所有权限,所有用户都会自动拥有,如:grant create user to public,表示所有用户都有权创建用户;
  3. 若用户有创建对象(如:数据表),则删除用户(drop user 用户)时需加上cascade,表示“先删除此用户旗下对象,再删除用户”;

9.3 角色

参考笔记一,P24.21。

角色创建步骤:

create role 角色名;		// 创建角色
grant 权限 to 角色;		// 授权
grant 角色 to 用户;		// 为用户分配角色
revoke 角色 from 用户;	// 收回用户角色
revoke 权限 from 角色;	// 收回权限
drop role 角色;		// 删除角色

9.4 数据字典

参考笔记一,P23.17、P25.26;笔记二,P58.2。

user_objects	--当前用户旗下所有对象--
user_users		--查询当前用户--
dba_users/all_users	--查询所有用户--
dba_sys_privs/user_sys_privs	--查询用户所有系统权限--
dba_tab_privs/all_tab_privs/user_tab_privs	--查询用户所有对象权限--
dba_role_privs/user_role_privs	--查询用户所有角色--

dba_roles	--查询所有角色--
role_sys_privs	--查询角色所有系统权限--

最后

纯文字阐述,内容比较干。并且,由于考虑到时间长了恐有所遗漏,便即兴记录,并没有对内容进行筛选、排序。因此,大家在阅读时可以直接Ctrl + F进行检索。

如果大家想要了解一些Oracle知识点,可查阅博文《Oracle知识点锦集》。

本文持续更新中。。。文章来源地址https://www.toymoban.com/news/detail-476650.html

到了这里,关于oracle细节、经验锦集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle 重启步骤及踩坑经验

    oracle 重启步骤及踩坑经验 切换到oracle用户 关闭监听 杀掉oracle有关进程 登录数据库,关闭oracle数据库 重启监听 重启数据库 shutdown immediate 时可能比较久,此时不要着急退出,等待一会等他报错 重启oracle startup时一直卡在Database mounted 可以等一会,如果等了很久没报错就退出

    2024年02月06日
    浏览(39)
  • Unity 性能优化锦集

    Unity作为一款主流的游戏开发引擎,不仅提供了强大的编辑器和开发工具,还可以让开发者轻松地实现高质量的3D游戏。但是,随着游戏规模的不断扩大和玩家需求的增加,游戏的性能问题也变得越来越重要。因此,在使用Unity进行游戏开发时,我们需要注意性能优化方面的一

    2024年02月16日
    浏览(41)
  • C++ 常见错误锦集

    1、LNK1158错误:无法运行“rc.exe” 解决方法: 项目属性-常规-平台工具集里,选择带有XP的平台工具集(Visual Studio 2013 - Windows XP (v120_xp)); 2、fatal error: winapifamily.h: No such file or directory     (错误,找不到winapifamily.h文件) 解决方法: winapifamily.h是在win8中才有的头文件,如

    2024年02月07日
    浏览(33)
  • Hive | 报错锦集

    大家好!我是初心,希望我们一路走来能坚守初心!🔥 今天跟大家分享的文章是 大数据中的Hive报错锦集分享,以此记录我在搭建大数据平台可视化展示中遇到的部分错误 ,希望能帮助到大家!本篇文章收录于 初心 的 Hive 专栏。 🏠 个人主页:初心%个人主页 🧑 个人简介

    2024年02月08日
    浏览(33)
  • 【python知识点】锦集

    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/132368704 出自【进步*于辰的博客】 注:本文可能不适合 0-Python 基础的博友,因为对于各类知识点,我阐述的宗旨是“ 阐明使用细节 ”,而不是基础知识。 细节、

    2024年02月12日
    浏览(41)
  • goland+solidty报错锦集

    本文已参与「新人创作礼」活动,一起开启掘金创作之路。 1、write tcp 127.0.0.1:8888-127.0.0.1:7861: wsasend: An established connection was aborted by the software in your host machine.(已建立的连接被您的主机中的软件终止。) 原因: 个人判断是以为数据库超时时间设置过短,连接就被数据库掐断了

    2024年02月05日
    浏览(36)
  • Qt实现思维导图锦集

    序号 简述 文章导航 1 思维导图树形结构、不重叠且均匀分布、支持折叠和展开 核心树 2 菜单按钮风格、菜单提示风格、侧滑菜单、侧滑功能窗口 UI设计 3 支持JPEG、PNG、XML、JSON、PDF、SVG格式文件 数据导入导出 4 支持撤销回撤功能、显示节点操作流程、点击可跳转历史 撤销回

    2024年02月14日
    浏览(46)
  • 八大排序算法之快速排序(上篇)(未经优化的快排)

    目录 一.关于快速排序的总体算法思想 1.冒泡排序(交换排序) (以排升序为例) 2.快速排序的总体思想简介(以排升序为例)  二.快速排序单趟排序的算法接口设计(以排升序为例) 单趟排序实现的方法一:hoare版本(左右指针法) 代码实现:  单趟排序实现的方法二:挖坑法  代码实现

    2023年04月08日
    浏览(38)
  • 【Hadoop】 | 搭建HA之报错锦集

    大家好!我是初心,希望我们一路走来能坚守初心! 今天跟大家分享的文章是 Hadoop搭建过程中的报错锦集 ,希望能帮助到大家!本篇文章收录于 初心 的 Hadoop 专栏。 🏠 个人主页:初心%个人主页 🧑 个人简介:大家好,我是初心,和大家共同努力 💕欢迎大家:这里是CS

    2024年02月09日
    浏览(44)
  • 【数据结构练习】链表面试题锦集一

    目录 前言: 1. 删除链表中所有值为key的节点  方法一:正常删除,头结点另外讨论  方法二:虚拟头结点法  方法三:递归 2.反转链表  方法一:双指针迭代   方法二:递归法 3.链表的中间结点   方法:快慢指针法 4. 链表中倒数第k个结点  方法:快慢指针方法 5.合并两个

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包