目录

1. DB2数据库中用户的概念
2. DB2中schema的概念
3. 用户与Schema的关系

1. DB2数据库中用户的概念
Oracle和MySQL数据库的用户都是数据库内部的用户,由数据库来管理。

但DB2不一样,DB2没有数据库用户的概念,它依赖于操作系统用户,也就是操作系统上有这个用户,这个用户才可能连接到DB2数据库。连接数据库的命令:

db2 connect to dbname user <username> using <password>

这里的username是一个操作系统的用户,password是指这个系统用户的密码。

2. DB2中Schema的概念
每个DB2的表的完整名子都是由两部分组成 SchemaName.Tablename,没有例外。
如果访问表的时候,不加Schema的名子,就有一个默认的Schema, 比如运行了以下的SQL语句:

db2 "create table a.t1 (id int)"
db2 "create table b.t1 (id int)"

那么就创建了两个表,schema分别是a和b,那么问题来了,如果创建表的时候不指定schema呢?
默认的Schema就是当前用户的用户名,比如当前连接用户是 db2inst1,发出如下SQL
db2 "create table t1(id int)"
那么这个表的schema就是db2inst1

当然,可以使用db2 set current schema来改变当前会话默认的Schema
db2 "set current schema c"
db2 "create table t1(id int)"
这个新建的表的完整表名就是c.t1

使用db2 list tables for all可以看到所有表,如下:

db2inst1@node01:~> db2 "list tables for all" | grep -iw t1
Table/View                      Schema          Type  Creation time             
------------------------------- --------------- ----- --------------------------
T1                              A               T     2019-08-23-06.53.18.807936
T1                              B               T     2019-08-23-06.53.22.671670
T1                              C               T     2019-08-23-06.53.39.154763
T1                              DB2INST1        T     2019-08-23-06.53.29.872110
可以看到有4条表 A.T1, B.T1, C.T1和DB2INST1.T1,如果现在发出命令db2 "select * from t1",那么实际访问的是C.T1,因为前面有发出过命令db2 set current schema c

3. 用户名与Schema的关系

没有必然联系,可能有用户,但没有和用户名一样的Schema。也可能有schema,但没有和Schema一样的用户名。
唯一的联系是,如果访问表的时候不指定schema,默认的Schema是当前连接用户。
————————————————
DB2的schema对象

熟悉Oracle的人都知道Oracle的schema和user是同一个概念;每一个Oracle user就是一个oracle schema。那么DB2的schema和user是不是也是同一个概念呢?
答案是否定的。


背景原因
Oracle数据库是数据库本身管理用户的,即每一个要访问Oracle的用户都必须先在Oracle数据库里创建用户;而DB2并没有自己的用户帐号,DB2使用的是操作系统的帐号,DB2只需要对相应的操作系统账户进行授权,则该操作系统账户就可以访问DB2数据库。


DB2数据库几个概念

  1. instance, 同一台机器上可以安装多个DB2 instance。
  2. database, 同一个instance下面可以创建有多个database。
  3. schema, 同一个database下面可以配置多个schema。

所有的数据库对象包括table、view、sequence,etc都必须属于某一个schema。

另外,database是一个connection的目标对象,也就是说用户发起一个DB2连接时,指的是连接到到一个database,而不是连接到一个instance,也不是连接到一个schema。

但是DB2的启动和关停是以instance为单位的。可以启动一个instance,或者关停一个instance。但不可以启动或者关停一个数据库或者一个schema。


DB2的schema对象和user对象

  • 每一个DB2授权用户都有一个对应的schema,其名字和用户名相同;当然也可以再创建新的schema;这样DB2中user和schema是一种一对多的关系,而Oracle中是一对一的关系。
  • 每一个schema都有一个属主(即所属用户),这个属主在创建scheme的时候指定,如果没有指定值,缺省即当前用户,也就是说谁创建了这个schema,那么这个schema就属于谁。

对于每一个数据库connection,缺省操作都是在其相同用户名的schema下面,除非用户显示的更改了当前schema。


DB2 schema相关SQL语句

  • CREATE SCHEMA <schema-name> [AUTHORIZATION <schema-owner-name>]
  • DROP SCHEMA <schema-name> RESTRICT
  • SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1
  • SELECT CURRENT USER FROM SYSIBM.SYSDUMMY1
  • SET CURRENT SCHEMA = <schema-name>

DB2数据库中用户和Schema的概念与理解相关推荐

  1. 锁是网络数据库中的一个非常重要的概念

    锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体 实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我 ...

  2. DB2数据库中DB2字符串类型

    DB2字符串是DB2数据库中的基础知识,下面就为您分类介绍DB2字符串,供您参考,如果您对DB2字符串方面刚兴趣的话,不妨一看. DB2字符串是字节序列.DB2字符串包括 CHAR(n) 类型的定长字 ...

  3. 每个汉字在DB2数据库中占多少个字节?

    问题描述: 每个汉字在DB2数据库中占多少个字节? 问题解决: 与DB2的code page有关系,如果是GBK, 每个汉字占2个字节.如果是UTF,则占用3个字节. 测试: $ db2 " ...

  4. pytorch 中维度(Dimension)概念的理解

    pytorch 中维度(Dimension)概念的理解 Dimension为0(即维度为0时) 维度为0时,即tensor(张量)为标量.例如:神经网络中损失函数的值即为标量. 接下来我们创建一个di ...

  5. db2常用命令大全 db2数据库中的操作命令

    DB2 常用命令,对于使用db2的朋友可以参考下.管理客户端从v9.7版本之后就不再带有控制中心了,而是使用 Data Studio Client.安装 DB2 数据库产品期间不会应用许可证密钥.但是 ...

  6. cmd查看所有数据库 db2_db2常用命令大全 db2数据库中的操作命令

    类型:反编译(译逆工程)大小:1.8M语言:中文 评分:5.0 标签: 立即下载 DB2 常用命令,对于使用db2的朋友可以参考下.管理客户端从v9.7版本之后就不再带有控制中心了,而是使用 Data ...

  7. Db2数据库中常见的堵塞问题分析与处理方法

    Db2 数据库堵塞怎么办 作为一个数据库管理员,工作中经常会遇到的一个问题:当数据库出现故障的情况下,如何快速定位问题和找到解决方案.尤其是在运维非常重要系统的时候,解决问题恢复服务是分秒必争.Db2 ...

  8. mysql schema table_关于数据库中table与schema的区别详解

    什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User? 相关mysql视频教程推荐:<mysql教程> 我们可以把Database看作是一个大仓 ...

  9. 将数据库中用户表 名称设置对应的拼音账号sql

    有这样的一个需求: 需要把用户表里面Users根据名称 设置对应的拼音账号然后替换掉原来的. 步骤1:进入数据库中建立中转的表 create table User1(Id uniqueidentifi ...

  10. 数据库中用户登录注册用户信息表怎么设计如何设计

    用户登录 站内登录:用户信息+密码的验证形式: 用户名+密码, 手机+密码, 站外授权:第三方登录, 其实它也是用户信息+密码的形式, 用户信息即第三方系统中的ID(第三方登录一定会给一个在他们系统中 ...

最新文章

  1. 谷歌人工智能野心:从“下围棋”开始走向商用赚钱
  2. Virtual Machine Remote Control Client Plus
  3. swagger 返回json字符串_Net Core微服务入门全纪录(完结)——Ocelot与Swagger
  4. mysql分析表增删改统计_MySQL增删改查|附思维导图
  5. freeMarker自定义函数的使用
  6. 根据ip地址获得天气预报
  7. EXCEL如何验证重复数据?
  8. 工厂模式(简单工厂、工厂方法、抽象工厂)
  9. 字节跳动offer流程多长时间_字节跳动-运营实习生-面经实录(已Offer??)
  10. 关系型数据的分布式处理系统:Cobar
  11. 性能测试--yslow
  12. 继承体系下的对象构造
  13. acer软件保护卡怎么解除_外观精致性能强,配置丰富重量轻、宏碁(Acer)墨舞EX214轻薄笔记本 深度评测...
  14. NVIDIA 旧版显卡驱动下载及对应CUDA,CUDNN安装教程
  15. python写一个地球同步卫星图动态壁纸(第一部分)
  16. mysql的七种查询命令_MySQL数据库查询指令大全
  17. 【数据分析自学】一、系统认识数据分析
  18. 射影几何--圆锥曲线在平面上某点确定的对合线束
  19. 一道google面试题--自然数e中出现的连续的第一个10个数字组成的质数
  20. 谷歌大脑团队任意图像风格化迁移论文详解,模型还可以跑在您本地浏览器里...

热门文章

  1. gimp 抠图_gimp软件如何实现抠图?
  2. 你需要的三维激光LiDAR点云数据处理服务来了!
  3. CSS引用外部字体的方法
  4. 网络安全实验1——口令攻击和钓鱼攻击
  5. java基础学习的心得体会
  6. Java基础学习总结(174)——Java 开发者应该会的流程图绘制技巧
  7. R语言:网页抓取之get the data
  8. Linux下bzero函数
  9. 【WPS·Excel】数据分析方法汇总
  10. 如何用C语言编写字母游戏,怎么样用C语言编写一个小游戏?