知识大全 MS Jet SQL for Access 2000中级篇 (II)

Posted 语句

篇首语:对所学知识内容的兴趣可能成为学习动机。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MS Jet SQL for Access 2000中级篇 (II)相关的知识,希望对你有一定的参考价值。

MS Jet SQL for Access 2000中级篇 (II)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   改变数据表    在建立或倒入一个数据表之后 用户可能需要修改表的设计 这时就可以使用ALTER TABLE语句 但是注意 改变现存的表的结构可能会导致用户丢失一些数据 比如 改变一个域的数据类型将导致数据丢失或舍入错误 这取决于用户现在使用的数据类型 改变数据表也可能会破坏用户的应用程序中涉及到所改变的域的部分 所以用户在修改现有表的结构之前一定要格外小心     使用ALTER TABLE 语句 用户可以增加 删除或改变列或域 也可以增加或删除一个约束 还可以为某个域设定缺省值 但是一次只能修改一个域 假设我们有一个记账单的数据库 而我们想在顾客数据表中增加一个域 这时可以使用ALTER TABLE 语句 在其ADD COLUMN 子句后写上域的名称 数据类型和数据的大小(如果需要的话)     ALTER TABLE tblCustomers  ADD COLUMN Address TEXT( )  要改变域的数据类型或大小 可以使用ALTER COLUMN子句 在后面加上期望的数据类型和数据的大小     ALTER TABLE tblCustomers  ALTER COLUMN Address TEXT( )  如果需要改变域的名称 则必须删除该域并重新创建 删除一个域要使用DROP COLUMN 子句 在其后跟上域的名称     ALTER TABLE tblCustomers  DROP COLUMN Address  注意使用这种方法将会删除该域的现存数据 如果需要保存这些数据 则用户需要在Access的用户界面的设计模式中改变该域的名称 或者编写代码将现存的数据保存在一个临时的表中然后将其添加到改名后的表中     缺省值是指在表中增加新纪录并且没有为该列赋值时自动填充到该域中的值 为某域设置缺省值 要在定义域的类型后使用使用DEFAULT关键字 不管是使用ADD COLUMN或 ALTER COLUMN 子句     ALTER TABLE tblCustomers  ALTER COLUMN Address TEXT( ) DEFAULT Unknown  注意缺省值并不使用单引号包含 如果用了单引号 则引号也会插入到记录中 在CREATE TABLE语句中也可以使用DEFAULT关键字     CREATE TABLE tblCustomers (  CustomerID INTEGER CONSTRAINT PK_tblCustomers  PRIMARY KEY   [Last Name] TEXT( ) NOT NULL   [First Name] TEXT( ) NOT NULL   Phone TEXT( )   Email TEXT( )   Address TEXT( ) DEFAULT Unknown)    注意 DEFAULT 语句只有在Jet OLE DB provider和ADO中可以执行 在Access SQL View的用户界面中使用将会返回错误信息     下面的部分将讨论如何在ALTER TABLE语句中使用约束 要获得更详细的有关ALTER TABLE的说明 请在Office 助手中或在Microsoft Access 帮助的回答向导的标签页中输入ALTER TABLE 然后单击查找      约束    在《Access 的基础Microsoft Jet SQL》一文中 我们讨论了建立表之间的联系的约束方法 约束也能用于建立主键和参考完整性 来限制插入到一个域中的数据值 通常 约束可以用于保持用户数据库中的数据完整性和一致性     共有两种类型的约束 单数据域(或称域级的)的约束和多数据域(或称表级的)的约束 两种约束都可以用在CREATE TABLE 或 ALTER TABLE 语句中     单域的约束 也就是通常所说的列级的约束 是在域及其数据类型定义后针对该域定义的 下面我们使用用户表 在CustomerID域生成一个单域的主键 增加约束时 在域名后使用CONSTRAINT关键字     ALTER TABLE tblCustomers  ALTER COLUMN CustomerID INTEGER  CONSTRAINT PK_tblCustomers PRIMARY KEY    注意这里给出了约束的名称 用户还可以在定义主键时使用简称而省略CONSTRAINT子句     ALTER TABLE tblCustomers  ALTER COLUMN CustomerID INTEGER PRIMARY KEY    然而 使用简称的方法将导致Access随机的生成约束的名称 从而使得在代码中难以引用 所以 最好给约束制定名称     要删除一个约束 可以在ALTER TABLE 语句中使用DROP CONSTRAINT 子句 并给出约束的名称     ALTER TABLE tblCustomers  DROP CONSTRAINT PK_tblCustomers    约束还可以用来给域限制允许值 用户可以将限制值设为非空(NOT NULL)或唯一( UNIQUE) 或者定义一个检验性的约束 该约束指一种可以应用于某个域的规则 比如用户希望限制姓和名的域是唯一的 就意味着在表中永远不会有两个相同姓名的记录存在 这是因为这种约束是多域的性的 是在表的级别定义的 而非域的级别 使用ADD CONSTRAINT子句可以定义一个多域的列表     ALTER TABLE tblCustomers  ADD CONSTRAINT CustomerNames UNIQUE  ([Last Name] [First Name])    注意 我们在这里只是示范一下如何使用约束 而在实际的应用程序中 用户可能并不希望彻底限制姓名的唯一性     检验性约束是一种新的强有力的SQL特性 它通过一个表达式从而允许用户在表中添加数据合法性检验 该表达式可以指向一个单域 也可以指向跨越一个或多个表的多个域 比如用户希望确定输入到发票记录中的数值是否总是大于 则可以在ALTER TABLE语句的ADD CONSTRAINT子句中定义一个CHECK关键字     ALTER TABLE tblInvoices  ADD CONSTRAINT CheckAmount  CHECK (Amount > )    注意 检验性约束语句只能通过Jet OLE DB provider和ADO来执行 在Access SQL View的用户界面中使用将返回错误信息 而且 要删除一个检验性约束 也必须在Jet OLE DB provider 和ADO中执行DROP CONSTRAINT语句 另外 如果用户已经定义了一个检验性约束 ( ) 在Access的用户界面中并不会显示为一个合法性规则 ( ) 用户也不能在该界面中定义合法性文本的属性 否则将给出一般性错误信息 ( ) 在用户通过ADO使用DROP CONSTRAINT语句之前 不能够通过Access的用户界面或者在代码中删除数据表     用来定义一个检验性约束的表达式也可以用来指向同一个表中的多个域 甚至是其他表中的域 其中可以使用任何在Microsoft Jet SQL 中合法的操作符 比如SELECT 语句 数学运算符 以及集合函数等 用来定义检验性约束的表达式的长度不能超过 个字符     设想用户希望在将顾客加入到Customers 表之前检查每个顾客的信用额度 则可以使用带有ADD COLUMN 和CONSTRAINT 子句的ALTER TABLE 语句生成一个约束 该约束将查找在CreditLimit表中的值来验证顾客的信用额度 下面的SQL语句将生成一个tblCreditLimit 表 然后将CustomerLimit域加入到tblCustomers 表中 并将检验性约束加到tblCustomers表 最后对该检验性约束进行测试     CREATE TABLE tblCreditLimit (  Limit DOUBLE)  INSERT INTO tblCreditLimit  VALUES ( )  ALTER TABLE tblCustomers  ADD COLUMN CustomerLimit DOUBLE  ALTER TABLE tblCustomers  ADD CONSTRAINT LimitRule  CHECK (CustomerLimit <= (SELECT Limit  FROM tblCreditLimit))  UPDATE TABLE tblCustomers  SET CustomerLimit =   WHERE CustomerID =     注意 当用户执行UPDATE TABLE语句时 将被提示更新失败 因为该语句违反了检验性约束 如果用户使用小于等于 的值来更新CustomerLimit域 就能够成功      约束 II     级联性更新和删除    约束还可以用来在数据库中的表间建立参考完整性 具有参考完整性意味着数据是一致的和未被破坏的 比如 如果删除了一个顾客的记录但是该顾客的运单记录仍旧存在数据库中 这时数据就是非一致的 即指数据库中存在着一个孤立的顾客运单记录 参考完整性是在用户建立各个表间的关系时建立的 除了建立参考完整性之外 用户还可以使用级联性更新和删除来确保相互参考的表保持同步 例如 一旦定义了级联性更新和删除 当用户删除顾客记录时 该顾客的运单记录也将自动删除     要使用级联性更新和删除 用户可以在ALTER TABLE 语句的CONSTRAINT子句中使用ON UPDATE CASCADE 和/或 ON DELETE CASCADE 关键字 注意他们都必须是应用于外键的     ALTER TABLE tblShipping  ADD CONSTRAINT FK_tblShipping  FOREIGN KEY (CustomerID) REFERENCES  tblCustomers (CustomerID)  ON UPDATE CASCADE  ON DELETE CASCADE     外键  在处理外键时 有关快速外键(fast foreign key)的概念是很有用的 快速外键即是一种没有索引的外键 尽管这乍听起来有点不合理 但却可以得到很好的解释 在缺省情况下 一旦定义了一个外键 将会自动生成一个基于该外键中列的索引 这在很多情况下提高了执行保持参考完整性的操作的表现 然而 如果在定义外键的域中存在许多重复值 外键索引将会影响增加和删除数据使得效率 要防止基于外键的索引的生成 我们可以在定义外键是NO INDEX关键字     ALTER TABLE tblInvoices  ADD CONSTRAINT FK_tblInvoices  FOREIGN KEY NO INDEX (CustomerID) REFERENCES  tblCustomers (CustomerID)  ON UPDATE CASCADE  ON DELETE CASCADE    注意: 快速外键语句只能通过Jet OLE DB provider 和 ADO来执行 在Access SQL View的用户界面中使用将返回错误信息 而且 要删除一个快速外键 也必须在Jet OLE DB provider 和ADO中执行DROP CONSTRAINT语句     在记录按序排列的数据库应用中 快速外键也将发挥作用 cha138/Article/program/SQLServer/201311/22105

相关参考

知识大全 MS Access 数据库向 MS SQL Server 7.0 的迁移

MSAccess数据库向MSSQLServer7.0的迁移  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Access数据类型与MS SQL数据类型的相应

Access数据类型与MSSQL数据类型的相应  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  A

知识大全 ACCESS中使用SQL语句

ACCESS中使用SQL语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下SQL语句在AC

知识大全 用sql语句动态的创建access表

   用sql语句动态的创建access表的代如下! <% nowtime=now()tablename=cstr(year(nowtime))

知识大全 将Access移植到SQL Server

将Access移植到SQLServer  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  到SQLS

知识大全 将ACCESS转化成SQL2000需要注意的问题

将ACCESS转化成SQL2000需要注意的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 应用SQL链接服务器访问远程Access数据库

应用SQL链接服务器访问远程Access数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  W

知识大全 剖析Access数据库升迁SQL Server问题

剖析Access数据库升迁SQLServer问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 将ACCESS的转化为SQL SERVER的体验

将ACCESS的转化为SQLSERVER的体验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  A

知识大全 利用SQL的扩展属性象access一样显示列的注释

利用SQL的扩展属性象access一样显示列的注释  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!