SQL中的集合和库之间有区别吗?

SQL中的集合和库之间有区别吗?,sql,db2,Sql,Db2,教授分配给我们的一项任务指出,我们需要做以下工作: 向以下问题提交包含sql语句的sql脚本文件 创建一个集合 根据上传至黑板的作业1解决方案创建所有表格 将主键和外键添加到它们 在每个表中插入(至少3条记录) 从每个表中更新和删除(至少1条记录) 然而,在他的讲座中,他用了“收藏”这个词,我总是听到图书馆和其他一些东西。什么是收藏 我正在使用notepad++并将语言设置为SQL,然后我输入了 创建集合,但以蓝色创建高光,但集合没有指定颜色(库也没有指定颜色) 当我试图用谷歌搜索答案时,我

教授分配给我们的一项任务指出,我们需要做以下工作:

向以下问题提交包含sql语句的sql脚本文件

  • 创建一个集合
  • 根据上传至黑板的作业1解决方案创建所有表格
  • 将主键和外键添加到它们
  • 在每个表中插入(至少3条记录)
  • 从每个表中更新和删除(至少1条记录)
然而,在他的讲座中,他用了“收藏”这个词,我总是听到图书馆和其他一些东西。什么是收藏

我正在使用notepad++并将语言设置为SQL,然后我输入了

创建集合,但以蓝色创建高光,但集合没有指定颜色(库也没有指定颜色)

当我试图用谷歌搜索答案时,我从IBM得到了这个答案

SQL集合是放置表、视图、索引和包的基本对象

那么藏品就是图书馆,不是吗

如果是这样,那么在iSeries(AS/400)中,我会在命令行上键入

CREATE COLLECTION ASSIGN1
但在剧本中,这会是同一件事吗

谢谢你抽出时间

编辑 我的教授将此作为示例发送给我,一个.sql文件,在iSeries中的一个程序中打开,名为“运行sql脚本”,但是,他没有解释任何内容,只是将此作为示例发送给我……因此,假设集合与创建库相同,安全吗

CREATE COLLECTION FARA042;

CREATE TABLE FARA043.EMPLOYEE (
    EMP_NUM VARCHAR(10) CONSTRAINT FARA043.EMPLOYEE_PK PRIMARY KEY,
    EMP_FNAME VARCHAR(50),
    EMP_LNAME VARCHAR(50));

SELECT * FROM FARA043.SYSTABLES;
SELECT * FROM FARA043.SYSCOLUMNS
    WHERE TABLE_NAME = 'CHARTER';

你说得对。在IBM i(以前称为iSeries,System i)上,术语
集合
,和
模式
都指同一事物。IBM现在使用术语
SCHEMA
代替术语
COLLECTION
,以符合较新的SQL标准,但它们是同义词。但是,术语
集合
已被弃用,因此不应再使用

然而,
CRTLIB
和“创建模式”(或创建集合)之间有一些细微的区别

允许您指定的描述,就像任何IBMi对象都有对象描述一样。您还可以指定当有人调试时,该库是否被视为
*PROD
*TEST
库。在IBM i上,当开发人员开始调试时,其中一个设置是安全功能,指示是否允许会话更新
*PROD
库中的文件(表)

另一方面,不仅创建库,还使用目录视图和自动数据库日志记录(日志记录)对其进行设置

在SQL中创建模式后,可以返回到CL并使用来设置库类型和描述,从而获得这两种方法的优点


另一个区别是,SQL
createschema
语句将允许您使用IBM i 10字符标准以外的字符创建模式。如果您这样做,我强烈建议您也使用
FOR SYSTEM name
子句为它指定一个有效的10个字符的OS对象名,否则OS将被迫生成一个10个字符的库名

是SQL Server吗?你的意思是?我们正在使用的这本书是《数据库系统-设计、实现和管理》(第9版),它只是作为SQL的入门介绍,经常提到Microsoft Access。例如,教授除了让我们安装Mocha并连接到我们学院的宙斯服务器外,没有提到其他内容,或者告诉我们使用学院预装的iSeriesNavigator@YuriyGalanter我们没有对XML做过任何事情,它也不在大纲中,我们一直在学习DDL和DML,以及SQLL中的基本操作。我想你最好向教授确认一下,他所说的第一项任务是什么意思。事实上,它对解释非常开放,您不会想猜错。这看起来像是一个IBMDB2命令。你能核实一下吗?在这种情况下,创建集合是创建数据库的同义词非常好,非常有用,谢谢。我甚至不知道有一个特定的DB2 for LUW,我想它应该是一样的。但是,是的,我使用的是IBM I或iSeries,因为我的学院将其标记为lol。谢谢Warren!也许这就是为什么当我的教授在我们身上放弃了收集术语时,我不知道它是什么,因为他以前从未提到过,这一定是一个旧作业,他在重复使用lol。这将为即将到来的测试做好准备。如果你不介意,我想在另一件事上寻求你的帮助。我正在使用iSeries中的“运行SQL脚本”功能,我创建了一些代码,所以我认为我应该运行脚本。集合的表已经创建,我在一个表中犯了一个语法错误,我想我已经修复了它,但是当我再次运行脚本时,它会显示“[SQL0601]ASSIGN2 in*N type*LIB已经存在”,因此基于我的集合已经存在……但是如果我想在整个脚本中运行更多测试,如何绕过此问题?请参阅。如果脚本包含CREATESCHEMA语句,并且发生此错误,则用“---”注释掉该行。但我认为它是在CREATE或ALTERTABLE语句上,带有一个约束。添加
DROP TABLE mytable CASCADE
,在创建表之前删除表和任何依赖项。您可以告诉教授DBA要求他教授行业标准术语。根据同一个IBM参考页面,集合“是非标准的,不应该使用。”来自其他环境的人询问模式,但不知道库是什么,当然也不知道集合。