Access中的SQL语言
1. SQL概述
结构化查询语言(Structured Query Language SQL 读成“sequel”)自1974年提出,1975年IBM公司在RDBMS(关系型DBMS)Syatem R上实现以来,由于它功能丰富、使用方便、简洁易学,倍受用户和计算机工业界的欢迎,经不断修改、扩充和完善,现已成为RDBMS的标准语言。众多的RDBMS中实现了SQL语言,当然各数据库厂家在各自的RDBMS中的SQL语言与ISO颁布的标准SQL语言都或多或少有些差别。
SQL语言包括了对数据库的所有操作,主要可分为三个部分①数据定义语言(DDL Data Definition Language),用以定义数据库的逻辑结构,包括定义基本表、索引和视图。②数据操纵语言(DML Data Manipulation Language),用以对数据的查询和更新,数据更新操作中包括插入、删除和修改三种操作。③数据控制语言(DCL Data Control Language),用以对基本表和视图的授权即指定具体用户可使用哪些表或视图。
SQL语言的特点:
(1) 语言风格统一:尽管有不同功能的DDL、DML和DCL,但语言风格相同,再SQL语言既能独立地使用于联机交互方式,又能嵌入到高级程序设计语言如C、C++等语言中,而且在两种不同地使用方式下的SQL语句的语法基本一样;
(2) 面向集合的操作方式:因为RDB的结构是关系,即记录的集合,也是SQL语言的操作对象,所以操作速度比其他语言快;
(3) 语言简洁,易学易用:尽管SQL的功能很强,但它的核心语句只有九条(CREATE、ALTER、DROP、SELECT、INSERT、DELETE、UPDATE、GRANT和REVOKE),加之它的结构化特性,非常便于学习和使用。
2. 在Access中使用SQL语句
SQL语句的输入:打开一个已有的Access数据库,在“对象”栏中选中“查询”,在“列表框”内选定“在设计视图中创建查询”命令,双击之,或按“设计”按钮,系统将显示一个查询窗口和一个“显示表”对话框,关闭“显示表”对话框,在不关闭查询窗口的情况下,①Access窗口的菜单栏上才会出现查询菜单,该查询菜单下有“SQL特定查询”子菜单、②视图菜单中会出现“S
QL视图”命令、③同时原来显示在菜单栏下的数据库工具栏自动被切换为“查询设计”工具栏,其中的左上角会有一个视图切换按钮。无论用上述三种方法的哪一种,均可在Access窗口中显示供输入SQL语句的“查询”窗口。
注意:①在该窗口中只能输入一条SQL语句!但可分行输入,系统会把分号“;”作为命令的结束标志,但一般在输入命令时,不必人为地输入分号。当需要分行输入时,不能把Sql语言的关键字或字段名分在不同行。
②Sql语句中所有的标点符号和运算符号均为ASCII字符!
③每两个单词之间至少要有一个空格或有必要的逗号!
SQL语句的保存:关闭“SQL语句输入”窗口,命名为一个查询
SQL语句的执行:在“SQL语句输入”窗口中输入一个完整的SQL语句后,按“查询设计工具栏”中的运行按钮“!”,或在数据库窗口中双击已被保存的相应查询。
I. 数据表定义语句
前面我们是使用Access窗口中菜单命令的方式建立数据表的。现在,我们开始学习用SQL语言来创建数据表。首先打开图书管理数据库文件“图书管理.mdb”,且按上述方法打开输入SQL语句的“查询”窗口。
输入Sql语句:
CREATE TABLE 图书(总编号 CHAR(6) PRIMARY KEY,分类号 CHAR(6) NOT NULL,
书名 CHAR(20),作者 CHAR(15),出版社 CHAR(10),单价 SINGLE)
运行该Sql语句后,在数据库窗口中打开数据表图书的设计视图,可核对一下用Sql语句和用窗口菜单命令建表的区别。
说明:在Microsoft Access 2000 中 的Sql语言是通过Microsoft Jet数据库引擎来支持Sql语言的,而Microsoft Jet SQL语言与标准SQL语言有若干的差别。
1 Microsoft Jet SQL语言所支持的SQL数据类型
CHAR(n) or TEXT(n) 文本型
MEMO 备注型
INT or INTEGER 数字(长整型)介于–2,147,483,648到2,147,483,647的长整型数
SMALLINT or SHORT 数字(短整型)介于 –32,768 到 32,767 的短整型数
BYTE 数字(字节)介于 0 到 255 的整型数
REAL or SINGLE 数字(单精度)默认有四位小数
FLOAT or DOUBLE 数字(双精度)
DATE or TIME 日期/时间型
CURRENCY or MONEY 货币型
COUNTER(n) 自动编号型(从整数n起)
YESNO 是/否型
2 若字段名中有空格或除了汉字外的非字母性字符,则应用一对方括号[ ]将字段名括起来,如[First Name]
3 数据完整性约束条件:它是用来定义数据表之间的关联关系和数据表内的字段应满足的条件的,当用户操作数据表时,DBMS会自动检查操作是否违背已定义的完整性约束条件。
同一个完整性约束条件如果涉及到一个表中的多个字段,则该约束条件必须定义在表级,否则,一般定义在字段级(即列级)。
完整性约束条件主要有下列三种:
实体完整性约束条件:
NOT NULL 不能为空,NULL的含义是无意义,不能与空字符或数值0等同
UNIQUE 唯一性,即表中各记录的该字段值各不相同
PRIMARY KEY 主键或称主码(同时,具有上两约束条件)
参照完整性约束条件:
REFERENCES <表名> (<字段名>) 该字段所取值应来自指定表内的指定字段的值
用户定义完整性约束条件:不能在Access的Sql中使用,只能在表的设计视图中的字段有效性规则中输入
IS NULL
[NOT] Between <表达式> And <表达式>
如:Between 0 And 100 可取0到100之间的数
[NOT] In (<表达式列表>)
sql约束条件大于0如:In(’法律’ ,’经济法’,’刑事司法’)仅可取表达式列表中所指定的有限个值
由此可见,
(1) 创建基表的Sql命令格式为:
CREATE TABLE <表名>(<字段名> <数据类型> [<字段级完整性约束条件>]
[,<字段名> <数据类型> [<字段级完整性约束条件>]]
…………
[,<表级完整性约束条件>]
)
…………
[,<表级完整性约束条件>]
)
类似地,我们可以根据
读者( 借书证号 字符型 长度为5 非空 每位读者的借书证号均不相同
姓名 字符型 长度为4
性别 字符型 长度为1
部门 字符型 长度为5
职称 字符型 长度为5)
建立读者数据表。请同学们自己完成。
CREATE TABLE 读者(借书证号 TEXT(5) PRIMARY KEY,姓名 TEXT(4),性别 TEXT(1),
部门 TEXT(5),职称 TEXT(5))
那么对于流通数据表
流通(总编号 字符型 长度为6 主键,且来自于图书实体
借书证号 字符型 长度为5 非空,且来自于读者实体
借阅日期 日期型)
还是请同学们自己完成。
CREATE TABLE 流通(总编号 TEXT(6) PRIMARY KEY REFERENCES 图书(总编号),
借书证号TEXT(5) NOT NULL REFERENCES 读者(借书证号),
借阅日期 DATE)
注意:由于流通表的建立要参照图书表与读者表,所以必须待图书表与读者表建立后方可建立流通表。同理,必须在主表中有记录后,才能在相关表中输入记录。
我们现在在图书表中开始输入记录:
INSERT INTO 图书 VALUES(‘100001’,’ww001’,’橘子红了’,’郑重 王要’,’人民文学出版社’,31.8)
INSERT INTO 图书(总编号,分类号,书名,单价) VALUES('100002','ww002','追忆似水年华(上)',68)
可见,插入一条具体录的Sql语句为:
INSERT INTO <表名> [(<字段名列表>)] VALUES (<字段值列表>)
当插入的记录中有部分字段值不确定时,可以仅输入部分字段值,但必须指明相应的字段名,而未指明的字段值为NULL。
故上述第二条记录插入命令等价于
INSERT INTO 图书 VALUES('100002','ww002','追忆似水年华(上)',NULL,NULL,68)
请再输入以下三条命令
INSERT INTO 图书 VALUES('100002','ww003','追忆似水年华(下)',NULL,NULL,68)
INSERT INTO 图书 VALUES(NULL,'ww003','追忆似水年华(下)',NULL,NULL,68)
INSERT INTO 流通 VALUES('100002','90002',#02/14/98#)
看看能不能执行上述三条命令,若不能,请说明原因。
通过上述对创建表命令和插入记录命令的学习,我们可以大致了解到
Sql命令的基本格式为:
<命令动词> [<子句列表>]
其中<命令动词>是指明该命令的功能,子句可以有多种,
如:标识子句 TABLE <表名>、INDEX <表名>、VIEW <视图名>
目标子句 INTO <表名>
字段(值)列表子句 <字段名列表> | VALUES (<字段值列表>)
完整性约束条件子句
…………
目标子句 INTO <表名>
字段(值)列表子句 <字段名列表> | VALUES (<字段值列表>)
完整性约束条件子句
…………
以后,还将学到更多的子句。
(2) 修改表结构
增加字段:ALTER TABLE <表名> ADD <字段名> <数据类型> [<字段级完整性约束条件>][,<字段名> <数据类型> [<字段级完整性约束条件>]……
修改字段类型:ALTER TABLE <表名> ALTER <字段名> <数据类型>[,<字段名> <数据类型> [<字段级完整性约束条件>]……
删除字段:ALTER TABLE <表名> DROP <字段名列表>
注意:在对数据表的结构进行修改前,必须关闭该表!
请同学自己先在读者数据表中增加两个字段,字段名依次为和年龄,数据类型分别为长整型和短整型,并观察每个命令执行后的效果。
ALTER TABLE 读者 ADD INT,年龄 SHORT
再将字段的数据类型改为有8个字符的字符型,年龄字段的类型改为字节型数字。
ALTER TABLE 读者 ALTER CHAR(8),年龄 BYTE
再删除字段
ALTER TABLE 读者 DROP,住址
(3) 删除表
DROP TABLE <表名列表>
II. 数据更新
前面,我们已经学会了在数据表中插入记录的命令,对数据的更新还包括修改数据,删除记录等操作。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论