第五章 SQL定义表(一)

第五章 SQL定义表(一),第1张

可以通过定义表(使用 CREATE TABLE )或通过定义投影到表的持久类来创建表:

由于以下原因,这两个名字之间的对应关系可能不相同:

表、视图或存储过程名称可以是限定的( schemaname ),也可以是限定的( name )。

模式名遵循标识符约定,需要特别注意非字母数字字符的使用。

模式名不应该指定为带分隔符的标识符。

尝试指定“USER”或任何其他SQL保留字作为模式名会导致 SQLCODE -312 错误。

INFORMATION_SCHEMA 模式名和相应的信息。

模式包名在所有命名空间中保留。

用户不应该在这个模式/包中创建表/类。

当执行一个创建 *** 作(比如 create TABLE ),指定一个还不存在的模式时,InterSystems IRIS将创建新的模式。

InterSystems IRIS使用模式名生成相应的包名。

由于模式及其对应包的命名约定不同,用户应该注意非字母数字字符的名称转换注意事项。

这些名称转换的注意事项与表不同:

INFORMATION_SCHEMA 模式名和相应的信息。

模式包名在所有命名空间中保留。

用户不应该在这个模式/包中创建表/类

在所有名称空间中保留 IRIS_Shard 模式名。

用户不应在此模式中创建表、视图或过程。

存储在 IRIS_Shard 模式中的项不会通过编目查询或 INFORMATION_SCHEMA 查询显示。

初始设置是对所有名称空间(系统范围)使用相同的默认模式名。

可以为所有命名空间设置相同的默认模式名,也可以为当前命名空间设置默认模式名。

如果创建了一个具有非限定名称的表或其他项,InterSystems IRIS将为其分配默认模式名和相应的持久类包名。

如果一个命名的或默认的模式不存在,InterSystems IRIS将创建模式(和包),并将创建的项分配给该模式。

如果删除模式中的最后一项,InterSystems IRIS将删除该模式(和包)。

下面的模式名解析描述适用于表名、视图名和存储过程名。

系统范围的初始默认模式名是 SQLUser 。

对应的持久类包名是 User 。

因此,非限定表名 Employee 或限定表名 SQLUser 。

Employee 将生成类 UserEmployee 。

因为 USER 是一个保留字,尝试用 USER 的模式名(或任何SQL保留字)指定限定名会导致 SQLCODE -1 错误。

要返回当前默认模式名,请调用 $SYSTEMSQLDefaultSchema() 方法:

或者使用以下预处理器宏:

可以使用以下任意一种方式更改默认模式名:

注意:当更改默认的SQL模式名称时,系统将自动清除系统上所有名称空间中的所有缓存查询。

通过更改默认模式名称,可以更改所有包含非限定表、视图或存储过程名称的查询的含义。

强烈建议在安装InterSystems IRIS时建立默认的SQL模式名,以后不要修改。

模式名用于生成相应的类包名。

因为这些名称有不同的命名约定,所以它们可能不相同。

可以通过将其设置为系统范围的默认模式来创建与SQL保留字同名的模式,但是不建议这样做。

名为 User 的默认模式根据类命名唯一性约定,生成相应的类包名称 User0 。

如果指定 _CURRENT_USER/name 作为默认模式名,其中name是选择的任意字符串,那么InterSystems IRIS将当前登录进程的用户名分配为默认模式名。

如果进程没有登录,则name将用作默认的模式名。

例如,如果进程没有登录, _CURRENT_USER/HMO 使用HMO作为默认模式名。

在 $SYSTEMSQLSetDefaultSchema() 中,指定 "_CURRENT_USER" 作为带引号的字符串。

当访问一个现有的表(或视图,或存储过程)进行DML *** 作时,将从模式搜索路径中提供一个非限定的名称。

按照指定的顺序搜索模式,并返回第一个匹配项。

如果在搜索路径中没有找到匹配的模式,或者没有搜索路径,则使用默认的模式名。

(注意, #Import 宏指令使用了不同的搜索策略,不会“失败”到默认的模式名。)

如果非限定名与模式搜索路径中指定的任何模式或默认模式名不匹配,则会发出 SQLCODE -30 错误,例如: SQLCODE: -30 消息: Table 'PEOPLE' not found in schemas: CUSTOMERS,EMPLOYEES,SQLUSER 。

当创建一个基于odbc的查询以通过Mac上的Microsoft query从Microsoft Excel运行时,如果从可用的表列表中选择一个表,则生成的查询不包括该表的模式(相当于类的包)。

例如,如果选择从示例模式返回 Person 表的所有行,则生成的查询为:

因为InterSystems IRIS将不限定的表名解释为 SQLUser 模式中的表名,所以该语句要么失败,要么从错误的表返回数据

要纠正这一点,编辑查询(在SQL View选项卡上),显式引用所需的模式。

然后查询应该是:

INFORMATIONSCHEMA 。

SCHEMATA persistent 类列出当前名称空间中的所有模式。

下面的示例返回当前命名空间中的所有非系统模式名:

Management Portal SQL界面的左侧允许查看模式(或匹配筛选器模式的多个模式)的内容。

每个表在其模式中都有一个唯一的名称。

一个表有一个SQL表名和一个对应的持久化类名;

这些名称在允许的字符、区分大小写和最大长度方面有所不同。

如果使用SQL CREATE TABLE 命令定义,则指定遵循标识符约定的SQL表名;

系统生成一个对应的持久化类名。

如果定义为持久类定义,则必须指定只包含字母和数字字符的名称;

这个名称既用作区分大小写的持久类名,也用作(默认情况下)对应的不区分大小写的SQL表名。

可选的 SqlTableName class 关键字允许用户指定不同的SQL表名。

当使用 CREATE TABLE 命令创建表时,InterSystems IRIS使用表名生成相应的持久化类名。

由于表及其对应类的命名约定不同,用户应该注意非字母数字字符的名称转换:

同一个模式中的视图和表不能具有相同的名称。

尝试这样做会导致 SQLCODE -201 错误。

可以使用 $SYSTEMSQLTableExists() 方法确定一个表名是否已经存在。

可以使用 $SYSTEMSQLViewExists() 方法确定视图名是否已经存在。

这些方法还返回与表或视图名称对应的类名。

管理门户SQL interface Catalog Details表信息选项显示与所选SQL表名称对应的类名。

试图指定 “USER” 或任何其他SQL保留字作为表名或模式名会导致 SQLCODE -312 错误。

要指定SQL保留字作为表名或模式名,可以指定名称作为带分隔符的标识符。

如果使用带分隔符的标识符指定包含非字母数字字符的表或模式名,InterSystems IRIS将在生成相应的类或包名时删除这些非字母数字字符。

适用以下表名长度限制:

在SQL中,每条记录都由一个唯一的整数值标识,这个整数值称为 RowID 。

在InterSystems SQL中,不需要指定 RowID 字段

当创建表并指定所需的数据字段时,会自动创建RowID字段。

这个 RowID 在内部使用,但没有映射到类属性。

默认情况下,只有当持久化类被投影到SQL表时,它的存在才可见。

在这个投影表中,将出现一个额外的 RowID 字段。

默认情况下,这个字段被命名为 “ID” ,并分配给第1列。

默认情况下,当在表中填充数据时,InterSystems IRIS将从1开始向该字段分配连续的正整数。 RowID 数据类型为 BIGINT(%LibraryBigInt) 。为 RowID 生成的值具有以下约束:每个值都是唯一的。不允许使用 NULL 值。排序规则是精确的。 默认情况下,值不可修改。

默认情况下,InterSystems IRIS将此字段命名为 “ ID” 。但是,此字段名称不是保留的。每次编译表时都会重新建立 RowID 字段名。如果用户定义了一个名为 “ ID” 的字段,则在编译表时,InterSystems IRIS会将 RowID 命名为 “ ID1” 。例如,如果用户随后使用 ALTER TABLE 定义了一个名为 “ ID1” 的字段,则表编译会将 RowID 重命名为 “ ID2” ,依此类推。在持久性类定义中,可以使用 SqlRowIdName 类关键字直接为此类投影到的表指定 RowID 字段名。由于这些原因,应避免按名称引用 RowID 字段。

InterSystems SQL提供了 %ID 伪列名称(别名),无论分配给 RowID 的字段名称如何,该伪列名称始终返回 RowID 值。 (InterSystems TSQL提供了 $IDENTITY 伪列名称,其作用相同。)

ALTER TABLE 无法修改或删除 RowID 字段定义。

将记录插入表中后,InterSystems IRIS将为每个记录分配一个整数ID值。 RowID 值始终递增。它们不被重用。因此,如果已插入和删除记录,则 RowID 值将按升序排列,但可能不连续。

可以通过设置 SetDDLUseSequence() 方法,将InterSystems IRIS配置为使用 $INCREMENT 执行 ID 分配。若要确定当前设置,请调用 $ SYSTEMSQLCurrentSettings() 方法。

在持久性类定义中, IdLocation 存储关键字global(例如,对于持久性类 SamplePerson:<IdLocation> ^ SamplePersonD </ IdLocation> )包含RowID计数器的最高分配值。 (这是分配给记录的最高整数,而不是分配给进程的最高整数。)请注意,此RowID计数器值可能不再与现有记录相对应。要确定是否存在具有特定RowID值的记录,请调用表的 %ExistsId() 方法。

通过 TRUNCATE TABLE 命令重置 RowID 计数器。即使使用 DELETE 命令删除表中的所有行,也不会通过 DELETE 命令将其重置。如果没有数据插入表中,或者已使用 TRUNCATE TABLE 删除所有表数据,则 IdLocation 存储关键字全局值未定义。

默认情况下, RowID 值不可用户修改。尝试修改 RowID 值会产生 SQLCODE -107 错误。覆盖此默认值以允许修改 RowID 值可能会导致严重的后果,只有在非常特殊的情况下并应格外谨慎。 ConfigSQLAllowRowIDUpdate 属性允许 RowID 值是用户可修改的。

通过定义一个用于投影表的持久类,可以定义 RowID 以具有字段或字段组合中的值。为此,请使用 IdKey index 关键字指定一个索引。例如,一个表可以具有一个 RowID ,其 RowId 通过在 PatientName [IdKey] 上指定索引定义 IdxId 来与 PatientName 字段的值相同;或者可以通过指定索引定义 IdxId 来将 PatientName 和 SSN 字段的组合值在 (PatientName,SSN)[IdKey]; 上。

当 RowID 基于多个字段时, RowID 值是由 || 连接的每个组成字段的值。 *** 作员。例如, Ross,Betsy || 123-45-6789 。 InterSystems IRIS尝试确定基于多个字段的 RowID 的最大长度。如果无法确定最大长度,则 RowID 长度默认为512。

用作外键引用的 RowID 必须是公共的。

默认情况下,不能将具有公共 RowID 的表用作源表或目标表,以使用 INSERT INTO SampleDupTable SELECT FROM SampleSrcTable 将数据复制到重复表中。

可以使用Management Portal SQL界面“目录详细信息字段”列出“隐藏”列来显示 RowID 是否被隐藏。

可以使用以下程序返回指定字段(在此示例中为 ID )是否被隐藏:

数据库系统的基本概念

数据:实际上就是描述事物的符号记录。

数据的特点:有一定的结构,有型与值之分,如整型、实型、字符型等。而数据的值给出了符合定型的值,如整型值15。

数据库:是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序共享。

数据库存放数据是按数据所提供的数据模式存放的,具有集成与共享的特点。

数据库管理系统:一种系统软件,负责数据库中的数据组织、数据 *** 纵、数据维护、控制及保护和数据服务等,是数据库的核心。

数据库管理系统功能:

(1)数据模式定义:即为数据库构建其数据框架;

(2)数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段;

(3)数据 *** 纵:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算及统计;

(4)数据的完整性、安生性定义与检查;

(5)数据库的并发控制与故障恢复;

(6)数据的服务:如拷贝、转存、重组、性能监测、分析等。

为完成以上六个功能,数据库管理系统提供以下的数据语言:

(1)数据定义语言:负责数据的模式定义与数据的物理存取构建;

(2)数据 *** 纵语言:负责数据的 *** 纵,如查询与增、删、改等;

(3)数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。

数据语言按其使用方式具有两种结构形式:交互式命令(又称自含型或自主型语言)宿主型语言(一般可嵌入某些宿主语言中)。

数据库管理员:对数据库进行规划、设计、维护、监视等的专业管理人员。

数据库系统:由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。

数据库应用系统:由数据库系统、应用软件及应用界面三者组成。

文件系统阶段:提供了简单的数据共享与数据管理能力,但是它无法提供完整的、统一的、管理和数据共享的能力。

层次数据库与网状数据库系统阶段 :为统一与共享数据提供了有力支撑。

关系数据库系统阶段

数据库系统的基本特点:数据的集成性 、数据的高共享性与低冗余性 、数据独立性(物理独立性与逻辑独立性)、数据统一管理与控制。

数据库系统的三级模式:

(1)概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;

(2)外模式:也称子模式与用户模式。是用户的数据视图,也就是用户所见到的数据模式;

(3)内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。

数据库系统的两级映射:

(1)概念模式到内模式的映射;

(2)外模式到概念模式的映射。

42 数据模型

数据模型的概念:是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与 *** 作提供一个抽象的框架。描述了数据结构、数据 *** 作及数据约束。

E-R模型的基本概念

(1)实体:现实世界中的事物;

(2)属性:事物的特性;

(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。

E-R模型三个基本概念之间的联接关系:实体是概念世界中的基本单位,属性有属性域,每个实体可取属性域内的值。一个实体的所有属性值叫元组。

E-R模型的图示法:(1)实体集表示法; (2)属性表法; (3)联系表示法。

层次模型的基本结构是树形结构,具有以下特点:

(1)每棵树有且仅有一个无双亲结点,称为根;

(2)树中除根外所有结点有且仅有一个双亲。

从图论上看,网状模型是一个不加任何条件限制的无向图。

关系模型采用二维表来表示,简称表,由表框架及表的元组组成。一个二维表就是一个关系。

在二维表中凡能唯一标识元组的最小属性称为键或码。从所有侯选健中选取一个作为用户使用的键称主键。表A中的某属性是某表B的键,则称该属性集为A的外键或外码。

关系中的数据约束:

(1)实体完整性约束:约束关系的主键中属性值不能为空值;

(2)参照完全性约束:是关系之间的基本约束;

(3)用户定义的完整性约束:它反映了具体应用中数据的语义要求。

43关系代数

关系数据库系统的特点之一是它建立在数据理论的基础之上,有很多数据理论可以表示关系模型的数据 *** 作,其中最为著名的是关系代数与关系演算。

关系模型的基本运算:

(1)插入 (2)删除 (3)修改 (4)查询(包括投影、选择、笛卡尔积运算)

44 数据库设计与管理

数据库设计是数据应用的核心。

数据库设计的两种方法:

(1)面向数据:以信息需求为主,兼顾处理需求;

(2)面向过程:以处理需求为主,兼顾信息需求。

数据库的生命周期:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。

需求分析常用结构析方法和面向对象的方法。结构化分析(简称SA)方法用自顶向下、逐层分解的方式分析系统。用数据流图表达数据和处理过程的关系。对数据库设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。

数据字典是各类数据描述的集合,包括5个部分:数据项、数据结构、数据流(可以是数据项,也可以是数据结构)、数据存储、处理过程。

数据库概念设计的目的是分析数据内在语义关系。设计的方法有两种

(1)集中式模式设计法(适用于小型或并不复杂的单位或部门);

(2)视图集成设计法。

设计方法:E-R模型与视图集成。

视图设计一般有三种设计次序:自顶向下、由底向上、由内向外。

视图集成的几种冲突:命名冲突、概念冲突、域冲突、约束冲突。

关系视图设计:关系视图的设计又称外模式设计。

关系视图的主要作用:

(1)提供数据逻辑独立性;

(2)能适应用户对数据的不同需求;

(3)有一定数据保密功能。

数据库的物理设计主要目标是对数据内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度有效利用存储空间。一般RDBMS中留给用户参与物理设计的内容大致有索引设计、集成簇设计和分区设计。

数据库管理的内容:

(1)数据库的建立;

(2)数据库的调整;

(3)数据库的重组;

(4)数据库安全性与完整性控制;

(5)数据库的故障恢复;

(6)数据库监控。

1、一般在“表结构”这个词,在计算机技术的数据库管理与编程方面用得比较多。2、这个词经常会在支持SQL语系控制的数库管理系统中用到,比如SQL Server、Oracle等,甚至ACCESS、MYSQL等里面也会用到。

3、数据库一般以:库、表、字段,这几个层级来组织数据。

一个库就象一个存储公司的仓库一样。

每个库可能有很多的表,这就象仓库里有很多的货架一样。

每个表可能有很多的字段,这就象货架上有很多的列,各列用于存放不同的物品一样。

4、接继上面的比方,表的结构,就象是对货架在哪儿,每个列叫什么,每个列有多宽,每个列可以放哪类的商品……等描述一样。

5、以技术性语言来说明的话,表结构就是定义数据库中,一个表的字段、类型、主键、外键、索引等等,这些基本的属性组成了数据库的表结构。

(1)创建并打开一个 OleDbConnection对象。

(2)创建一个插入一条记录的SQL语句。

(3)创建一个OleDbCommand对象。

(4)通过此OleDbCommand对象完成对插入一条记录到数据库的 *** 作。

以下是在程序中实现的具体语句:

string strConn = " Provider = MicrosoftJetOLEDB40 ; Data Source = samplemdb " ;

OleDbConnection myConn = new OleDbConnection ( strConn ) ;

myConnOpen ( ) ;

string strInsert = " INSERT INTO books ( bookid , booktitle , bookauthor , bookprice , bookstock ) VALUES ( " ;

strInsert += t_bookidText + ", '" ;

strInsert += t_booktitleText + "', '" ;

strInsert += t_bookauthorText + "', " ;

strInsert += t_bookpriceText + ", " ;

strInsert += t_bookstockText + ")" ;

OleDbCommand inst = new OleDbCommand ( strInsert , myConn ) ;

instExecuteNonQuery ( ) ;

myConnClose ( ) ;

A关系。

参考数据库access2003应用教程人民邮电出版社第6页“每一个关系都是一个二维表”。

表由字段组成。就像一张纸质表一样,假如你有一张人员基本信息表,姓名、性别、年龄、出生年月日、家庭住址、职务、职称,等等这些在数据库表设计中就称为字段,字段;

有一些属性,最重要属性是它数据类型,比如姓名、性别、家庭住址、职务、职称在ACCESS中一般设置成文本类型,出生年月日则是日期类型,年龄可以整数型或者小数类型。

Access拥有的报表

创建功能能够处理任何它能够访问的数据源。Access提供功能参数化的查询,这些查询和Access表格可以被诸如VB6和NET的其它程序通过DAO或ADO访问。在Access中,VBA能够通过ADO访问参数化的存储过程。

与一般的CS关系型数据库管理不同,Access不执行数据库触发,预存程序或交互式登录 *** 作。Access 2010包括了嵌入ACE数据引擎的表级触发和预存程序,在Access 2010中,表格,查询,图表,报表和宏在基于网络的应用上能够进行分别开发。

百度百科-ACCESS数据库

oracle 的话,用PL/SQL Developer的话,邮件菜单中有个view选项,可以查看column的类型,限制条件,keys值sql的话试下 desc [table name]

以上就是关于第五章 SQL定义表(一)全部的内容,包括:第五章 SQL定义表(一)、数据库的一些概念、表结构的定义等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10182935.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存