简单数据库查询语句_第1页
简单数据库查询语句_第2页
简单数据库查询语句_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据查询语言( SELECT 语句) 数据操纵语言( INSERT, UPDATE, DELETE 语句) 数据定义语言(如 CREATE, DROP 等语句) 数据控制语言(如 COMMIT, ROLLBACK 等语句 超详细的 SQL 语句语法 2008-07-11 14:25 简单的 Transact-SQL 查询只包括选择列表、 FROM 子句和 WHERE 子句一、 简单查询简单的 Transact-SQL 查询只包括选择列表、 FROM 子句和 WHERE 子句。它们分别说明所 查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询 testtable 表中姓名为“张三”的

2、nickname 字段和 email 字段。 SELECT nickname,email FROM testtable WHERE name=' 张三 '(一 ) 选择列表 选择列表 (select_list) 指出所查询列 它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量 )等构成。1、选择所有列例如,下面语句显示 testtable 表中所有列的数据 : SELECT * FROM testtable2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如 : SELECT nickname,email F

3、ROM testtable3、更改列标题在选择列表中,可重新指定列标题。定义格式为 :列标题 = 列名列名 列标题如果指定的列标题不是标准的标识符格式时, 应使用引号定界符, 例如, 下列语句使用汉字 显示列标题 :SELECT 昵称 =nickname, 电子邮件 =email FROM testtable4、删除重复行SELECT 语句中使用 ALL 或 DISTINCT 选项来显示表中符合条件的所有行或删除其中重复 的数据行,默认为 ALL 。使用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合 中只保留一行。5、限制返回的行数使用TOP n PERCEN

4、T选项限制返回的数据行数,TOP n说明返回n行,而 TOP n PERCENT 时,说明 n 是表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable 9、说明: in 的使用方法select * from table1 where a not in ( 值 1','值 2' ,'值 4''值 6' )10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 w

5、here not exists ( select * from table2 where table1.field1=table2.field1 )11、说明:四表联查问题:select * from a left inner join b on a.a=b.b right inner joinc on a.a=c.c inner join d on a.a=d.d where 12、说明:日程安排提前五分钟提醒SQL: select * from 日程安排 where datediff('minute',f 开始时间,getdate()>513、说明:一条 sql 语句

6、搞定数据库分页select top 10 b.* from (select top 20 主键字段 ,排序字段 from 表名order by排序字段 desc) a表名 b where b.主键字段 =a.主键字段 order by a. 排序字段14、说明:前 10 条记录select top 10 * from table1 where 范围15、说明:选择在每一组 b 值相同的数据中对应的 a 最大的记录的所有信息 (类似这样的用法可以用于论坛每月排行榜,每月热销产品分析 ,按科目成绩排名,等等.)select a,b,c from tablename ta where a=(sele

7、ct max(a) from tablename tb where tb.b=ta.b)16、 说明:包括所有在TableA 中但不在 TableB 和 TableC 中的行并消除 所有重复行而派生出一个结果表(select a from tableA ) except (select a from tableB) except(select a from tableC)17、说明:随机取出 10 条数据select top 10 * from tablename order by newid()18、说明:随机选择记录select newid()19、说明:删除重复记录Delete from

8、 tablename where id not in (select max(id) fromtablename group by col1,col2,.)20、说明:列出数据库里所有的表名select name from sysobjects where type='U'case可以方便21、说明:列出表里的所有的 select name from syscolumns where id=object_id('TableName')22、 说明:列示type、vender、pcs字段,以type字段排列,地实现多重选择,类似 select 中的 case。se

9、lect type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type显示结果:type vender pcs电脑 A 1电脑 A 1光盘 B 2光盘 A 2手机 B 3手机 C 323、说明:初始化表 table1TRUNCATE TABLE table124、说明:

10、选择从 10到 15 的记录select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc随机选择数据库记录的方法(使用 Randomize 函数,通过 SQL 语句实现)对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP “找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:RandomizeRNumber = Int(Rnd*499) +1While Not objRec.EOFIf objRec("ID&

11、quot;) = RNumber THEN. 这里是执行脚本 .end ifobjRec.MoveNextWend这很容易理解。首先,你取出 1 到 500 范围之内的一个随机数(假设 500 就是数据库内记录的总数) 。然后,你遍历每一记录来测试 ID 的值、检查 其是否匹配 RNumber 。满足条件的话就执行由 THEN 关键字开始的那一块代码 。假如你的 RNumber 等于 495,那么要循环一遍数据库花的时间可就长了。 虽然 500 这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个 小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候 不就死定了?采用SQL

12、,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:RandomizeRNumber = Int(Rnd*499) + 1SQL = "SELECT * FROM Customers WHERE ID = " & RNumberset objRec = ObjConn.Execute(SQL)Response.WriteRNumber & " = " & objRec("ID") & " " &objRec("c_email&quo

13、t;)不必写出RNumber和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset 没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。再谈随机数现在你下定决心要榨干 Random 函数的最后一滴油,那么你可能会一次 取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准 Random 示例扩展一下就可以用 SQL 应对上面两种情况了。为了取出几条随机选择的记录并存放在同一 recordset 内,你可以存储 三个随机数,然后查询数据库获得匹配这些数字的记录:SQL = "SELECT * FROM C

14、ustomers WHERE ID = " & RNumber & " ORID = " & RNumber2 & " OR ID = " & RNumber3假如你想选出 10条记录(也许是每次页面装载时的 10条链接的列表) , 你可以用 BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这 一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这 里的 ID 是自动生成的号码) :SQL = "SELECT * FROM Customers WHERE ID

15、 BETWEEN " & RNumber &" AND " & RNumber & "+ 9"注意:以上代码的执行目的不是检查数据库内是否有 9 条并发记录。随机读取若干条记录,测试过Access 语法: SELECT top 10 * From 表名 ORDER BY Rnd(id)Sql server:select top n * from 表名 order by newid()mysqlelect * From 表名 Order By rand() Limit nAccess左连接语法(最近开发要用左连接A

16、ccess帮助什么都没有,网上没有Access 的 SQL 说明 ,只有自己测试 , 现在记下以备后查 )语法 elect table1.fd1,table1,fd2,table2.fd2 From table1 leftjoin table2 on table1.fd1,table2.fd1 where .使用 SQL 语句 用 .代替过长的字符串显示语法:SQL 数据库: select case when len(field)>10 then left(field,10) +'.' else field end as news_name,news_id from ta

17、blenameAccess 数据库: SELECT iif(len(field)>2,left(field,2)+'.',field) FROM tablename;Conn.Execute 说明Execute 方法该方法用于执行 SQL 语句。根据 SQL 语句执行后是否返回记录集,该方法 的使用格式分为以下两种:1执行 SQL 查询语句时,将返回查询得到的记录集。用法为:Set 对象变量名 =连接对象 .Execute("SQL 查询语言 ")Execute 方法调用后,会自动创建记录集对象,并将查询结果存储在 该记录对象中,通过 Set 方法,将

18、记录集赋给指定的对象保存,以后对象变 量就代表了该记录集对象。2执行 SQL 的操作性语言时,没有记录集的返回。此时用法为:连接对象 .Execute "SQL 操作性语句 " , RecordAffected,Option RecordAffected为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可 知道 SQL 语句队多少条记录进行了操作。 Option 可选项,该参数的取值通常为 adCMDText ,它用于告诉 ADO ,应该将 Execute 方法之后的第一个字符解释为命令文本。通过指定 该参数,可使执行更高

19、效。 BeginTrans、RollbackTrans 、CommitTrans 方法 这三个方法是连接对象提供的用于事务处理的方法。 BeginTrans 用于开始一个事物; RollbackTrans 用于回滚事务; CommitTrans 用于提交所有的 事务处理结果,即确认事务的处理。事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后, 事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并 恢复到处里前的状态。BeginTrans 和 CommitTrans 用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对

20、 象的 Error 集合来实现,若 Error 集合的成员个数不为 0,则说明有错误发生,事务处理失败。 Error 集合中的每一个 Error 对象,代表一个错误信息。 以下是 MS SQLSQL 分类:DDL 数据定义语言 (CREATE , ALTER , DROP , DECLARE)DML 数据操纵语言 (SELECT , DELETE , UPDATE , INSERT)DCL 数据控制语言 (GRANT ,REVOKE ,COMMIT , ROLLBACK)首先 ,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库

21、drop database dbname3、说明:备份 sql server- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack','c:mssql7backupMyNwind_1.dat'- 开始 备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 not null primary key,col2type2 not null,.) 根据已有的表创建新表:A : crea

22、te table tab_new like tab_old ( 使用旧表创建新表 )B: create table tab_new as select col1,col2 from tab_olddefinition only5、说明:删除新表 drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除。 DB2 中列加上后数据类型也不能改变,唯一能改变的是增加 varchar 类型的长度。7、 说明:添加主键:Alter table tabname add primary key(col)说明:

23、删除主键:Alter table tabname drop primary key(col)8、 说明:创建索引:create unique index idxname on tabname(col)删除索引: drop index idxname 注:索引是不可更改的,想更改必须删除重新建。9、说明:创建视图: create view viewname as select statement 删除视图: drop view viewname10、说明:几个简单的基本的sql 语句选择: select * from table1 where 范围 插入: insert into table1(

24、field1,field2) values(value1,value2) 删除: delete from table1 where 范围更新: update table1 set field1=value1 where 范围查找: select * from table1 where field1 like ' %value1% ' -like 的语法很精妙,查资料 !排序: select * from table1 order by field1,field2 desc 总数: select count * as totalcount from table1 求和: sele

25、ct sum(field1) as sumvalue from table1 平均: select avg(field1) as avgvalue from table1 最大: select max(field1) as maxvalue from table1 最小: select min(field1) as minvalue from table111、说明:几个高级查询运算词 A : UNION 运算符UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2 )并消去 表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即UNION ALL

26、 ),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自 TABLE2 。B: EXCEPT 运算符有重复行而派生出一个结果表。当EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所ALL 随 EXCEPT 一起使用时 (EXCEPTALL) ,不消除重复行。C:INTERSECT 运算符INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时(INTERSECT ALL) ,不消除重复行。 注:使用运算词的几个查询结果行必须是一致的

27、。12、说明:使用外连接A 、 left outer join : 左外连接(左连接) :结果集几包括连接表的匹配行,也包括左连接表的所 有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOINb ON a.a = b.cB: right outer join:右外连接 (右连接 ):结果集既包括连接表的匹配连接行,也包括右连接表的 所有行。C: full outer join :全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录其次,大家来看一些不错的 sql 语句1、说明:复制表 (只复制结构 ,源表名

28、: a 新表名: b) (Access 可用 ) 法一: select * into b from a where 1<>1法二: select top 0 * into b from a2、说明:拷贝表 (拷贝数据 ,源表名: a 目标表名: b) (Access 可用 ) insert into b(a, b, c) select d,e,f from a;3、说明:跨数据库之间表的拷贝 (具体数据使用绝对路径 ) (Access 可用) insert into b(a, b, c) select d,e,f from a in 具体数据库'where 条件例子: .f

29、rom b in '"&Server.MapPath(".")&"data.mdb" &"'where.4、说明:子查询 (表名 1: a 表名 2:b)select a,b,c from a where a IN (select d from b ) 或者 :select a,b,c from a where a IN (1,2,3)5、说明:显示文章、提交人和最后回复时间select a.title,a.username,b.adddate from table a,(selectmax(a

30、dddate) adddate from table where table.title=a.title) b 6、说明:外连接查询 ( 表名 1:a 表名 2: b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ONa.a = b.c 7、说明:在线视图查询 (表名 1:a ) select * from (SELECT a,b,c FROM a) T where t.a > 1;8、说明: between 的用法 ,between 限制查询数据范围时包括了边界值,notbetween 不包括select * f

31、rom table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值 1 and 数值 29、说明: in 的使用方法select * from table1 where a not in ( 值 1','值 2' ,'值 4','值 6' )10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 where not exists ( select * from table2wher

32、e table1.field1=table2.field1 )11、说明:四表联查问题:select * from a left inner join b on a.a=b.b right inner joinc on a.a=c.c inner join d on a.a=d.d where 12、说明:日程安排提前五分钟提醒SQL: select * from 日程安排 where datediff('minute',f 开始时间,getdate()>513、说明:一条 sql 语句搞定数据库分页select top 10 b.* from (select top 2

33、0 主键字段 ,排序字段 from 表名order by排序字段 desc) a表名 b where b.主键字段 =a.主键字段 order by a. 排序字段14、说明:前 10 条记录select top 10 * form table1 where 范围15、说明:选择在每一组b 值相同的数据中对应的 a 最大的记录的所有信息 (类似这样的用法可以用于论坛每月排行榜,每月热销产品分析 ,按科目成绩排名,等等 .)select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b

34、)16、说明:包括所有在TableA 中但不在 TableB 和 TableC 中的行并消除所有重复行而派生出一个结果表(select a from tableA ) except (select a from tableB) except(select a from tableC)17、说明:随机取出 10 条数据select top 10 * from tablename order by newid()18、说明:随机选择记录select newid()19、说明:删除重复记录Delete from tablename where id not in (select max(id) fr

35、omtablename group by col1,col2,.)20、说明:列出数据库里所有的表名select name from sysobjects where type='U'21、说明:列出表里的所有的select name from syscolumns where id=object_id('TableName')22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便 地实现多重选择,类似 select 中的 case。select type,sum(case vender when 'A' the

36、n pcs else 0end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group bytype显示结果:type vender pcs电脑 A 1电脑 A 1光盘 B 2光盘 A 2手机 B 3手机 C 323、说明:初始化表 table1TRUNCATE TABLE table124、说明:选择从 10到 15 的记录select top 5 * from (select top 15

37、 * from table order by idasc) table_别名 order by id desc随机选择数据库记录的方法(使用 Randomize 函数,通过 SQL 语句实现)对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP “找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:RandomizeRNumber = Int(Rnd*499) +1While Not objRec.EOFIf objRec("ID") = RNumber THEN. 这里是执行脚本 .end ifobjRec.Move

38、NextWend这很容易理解。首先,你取出 1 到 500 范围之内的一个随机数(假设 500 就是数据库内记录的总数) 。然后,你遍历每一记录来测试 ID 的值、检查 其是否匹配RNumber。满足条件的话就执行由THEN关键字开始的那一块代码。假如你的 RNumber 等于 495,那么要循环一遍数据库花的时间可就长了。 虽然 500 这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个 小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候 不就死定了?采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:RandomizeRN

39、umber = Int(Rnd*499) + 1SQL = "SELECT * FROM Customers WHERE ID = " & RNumberset objRec = ObjConn.Execute(SQL)Response.WriteRNumber & " = " & objRec("ID") & " " &objRec("c_email")不必写出 RNumber 和 ID ,你只需要检查匹配情况即可。只要你对以上代 码的工作满意,你自可按

40、需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。再谈随机数现在你下定决心要榨干 Random 函数的最后一滴油,那么你可能会一次 取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random示例扩展一下就可以用 SQL 应对上面两种情况了。为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " O

41、RID = " & RNumber2 & " OR ID = " & RNumber3假如你想选出 10条记录(也许是每次页面装载时的 10条链接的列表) , 你可以用 BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这 一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这 里的 ID 是自动生成的号码) :SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber &" AND " &a

42、mp; RNumber & "+ 9"注意:以上代码的执行目的不是检查数据库内是否有 9条并发记录。随机读取若干条记录,测试过Access 语法: SELECT top 10 * From 表名 ORDER BY Rnd(id) Sql server:select top n * from 表名 order by newid() mysqlelect * From 表名 Order By rand() Limit nAccess左连接语法(最近开发要用左连接Access帮助什么都没有,网上没有Access 的 SQL 说明 ,只有自己测试 , 现在记下以备后查 )

43、语法 elect table1.fd1,table1,fd2,table2.fd2 From table1 leftjoin table2 on table1.fd1,table2.fd1 where .使用 SQL 语句 用 .代替过长的字符串显示 语法:SQL 数据库: select case when len(field)>10 then left(field,10)+'.' else field end as news_name,news_id from tablenameAccess 数据库: SELECT iif(len(field)>2,left(fi

44、eld,2)+'.',field) FROM tablename;Conn.Execute 说明 Execute 方法该方法用于执行 SQL 语句。根据 SQL 语句执行后是否返回记录集,该方法的使用格式分为以下两种:1执行 SQL 查询语句时,将返回查询得到的记录集。用法为:Set 对象变量名 =连接对象 .Execute("SQL 查询语言 ")Execute 方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过 Set 方法,将记录集赋给指定的对象保存,以后对象变 量就代表了该记录集对象。2执行 SQL 的操作性语言时,没有记录集的返

45、回。此时用法为: 连接对象 .Execute "SQL 操作性语句 " , RecordAffected,Option RecordAffected为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道 SQL 语句队多少条记录进行了操作。 Option 可选项,该参数的取值通常为 adCMDText ,它用于告诉 ADO ,应该将 Execute 方法之后的第一个字符解释为命令文本。通过指定 该参数,可使执行更高效。 BeginTrans、RollbackTrans、CommitTrans 方法这三个方法是连接对象提供

46、的用于事务处理的方法。 BeginTrans 用于开 始一个事物; RollbackTrans 用于回滚事务; CommitTrans 用于提交所有的 事务处理结果,即确认事务的处理。事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后, 事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并 恢复到处里前的状态。BeginTrans 和 CommitTrans 用于标记事务的开始和结束,在这两个之间 的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对 象的 Error 集合来实现,若 Error 集合的成员个数不为0,则说明有错误发生,事务处理失败。 Er

47、ror 集合中的每一个 Error 对象,代表一个错误信息。Access 基本操作Access 基本操作一、数据库的基本概念和设计方法所谓数据库实际上是关于某一特定主题或目标的信息集合。它把大量数据按一定的结构进行存储,集中管理和统一使用这些数据,实现数据共享。在Access 中,数据库不仅包含用于存放加工过的信息的表, 还包含以表中所存放的信息为操作对象的查询、窗体、报表、 页等 数据库对象。一般地,数据库的设计应遵循以下几个步骤:1、确定创建数据库所要完成的目的。2、确定创建数据库中所需要的表。3、确定表中所需要的字段。4、明确有唯一值的主关键字段。5、确定表之间的关系。6、优化设计。7、

48、输入数据并创建其他数据库对象。二、创建数据库在 Access 中既可以使用人工的方法按照自己的要求来建立数据库,也可以使用软件为用户 提供的各种数据库向导,前者更为自由而后者则显然要方便一些。A、自行创建数据库使用人工的方法按照自己的要求来建立数据库, 首先应创建一个空数据库, 然后再将对象加 入到数据库中。创建空数据库的步骤为:1、在启动 Access 后的 Microsoft Access 对话框中选择“空 Access 数据库”选项。2、在弹出的“文件新建数据库”对话框中选择数据库存放的位置、输入数据库的名称并单 击“创建”按钮,进入 Access 数据库窗口,即完成了空数据库的创建。B

49、、使用数据库向导创建数据库Access 为用户提供了多种数据库向导,使用数据库向导可以方便地完成数据库的创建工作。 具体步骤如下:1在启动Access后的Microsoft Access对话框中选择 “Access数据库向导、数据页和项目” 选项。2、在弹出“新建”对话框后单击“数据库”选项卡,选择一种数据库。3、在弹出的“文件新建数据库”对话框中,选择数据库存放的位置,输入数据库的名称并 单击“创建”按钮。4、依次在数据库向导窗口中为数据库中的各个表选择字段、选择显示样式、确定打印报表 所用的样式、 输入所建数据库的标题、 确定是否在所有报表上加一幅图片, 最后启动该数据 库,至此就完成了使

50、用向导创建数据库的工作。三、表的基本概念表是数据库中存储数据的最基本的对象,常称为“基础表” ,是构成数据库的一个重要组成 部分。 表由若干记录组成,每一行称为一个记录, 对应着一个真实的对象; 每一列称为一个 字段,对应着对象的一个属性信息。每个表的关键字(关键字可以为一个字段或多个字段) 使表中的记录唯一。在表内还可以定义索引,当表内存放大量数据时可以加速数据的查找。Access 中的所有数据都存放在数据表中。表是一个数据库系统的基础,只有建立表后,才 可以建立查询、窗体和报表等其他项目,逐步完善数据库。四、创建表Access 提供了三种创建新表的方法:1、使用数据库向导,在一个操作中创建

51、整个数据库所需的全部表、窗体及报表。2、使用表向导来选择表的字段,这些字段可以从其他已定义好的表中选择。3、使用设计视图创建表。不管使用哪一种方法来创建表, 随时都可以使用表设计试图来进一步自定义表。 由于第一种 方法已包含在使用数据库向导创建数据库的内容之中,这里着重说明后两种方法的实现。A、利用表向导创建表利用表向导创建新表, 一般情况下能满足数据库开发者的要求, 至于多余的字段可以用其他 的方法将其删除。利用表向导创建表的步骤如下:1、在数据库窗口中,单击“对象”列表中的“表” ,双击“使用向导创建表” 。2、在弹出的“表向导”对话框中单击“表向导”并单击“确定”按钮。3、 在弹出的对话

52、框中选择要使用的表并添加所需要的字段(可以重命名)后单击“下一步” 按钮。4、为表指定名称并确认主键,单击“下一步”按钮。5、选择创建完表后的动作,然后单击“完成”按钮。B、利用设计视图创建表使用设计器建立表的方法有两种: 一种方法是直接使用设计器来创建新表, 另一种方法是使 用表向导来构造一个结构相近的表, 然后在设计器中打开修改。 下面介绍使用设计器来创建 新表的步骤:1、在数据库窗口中, 单击对象列表中的 “表”,双击“使用设计器创建表” 的按钮, 进入“新 建表”对话框。2、在各栏中输入字段名称、选择数据类型,然后设置字段属性。3、接着选中要设置为关键字的字段,单击 “编辑”菜单中 “

53、主键”命令,设置“主关键字” , 此时在所选字段左边行选定器上出现钥匙标记。4、保存所设计的表。五、关于主关键字与建立表间关系A、设置主关键字为了提高 Access 在查询、窗体和报表操作中的快速查找能力和组合保存在各个不同表中信 息的性能, 必须为建立的表指定一个主关键字。 主关键字可以包含一个或多个字段, 以保证 每条记录都有唯一的值。设定主关键字的目的就在于保证表中的所有记录都能够被唯一识 别。如果表中没有可以用作唯一识别表中记录的字段, 则可以使用多个字段来组合成主关键 字。其设置步骤如下:1、在表设计器中,单击字段名称左边的字段选择按钮,选择要作为主关键字的字段。单击 字段选择按钮的

54、同时按住 Ctrl 键可以同时选择多个字段。2、单击“编辑”菜单中的“主键”命令,则在该字段的左边显示钥匙标记。B、建立表间关系在表中定义主关键字除了可以保证每条记录可以被唯一识别外, 更重要的作用在于多个表间 的连接。 当数据库中包含多个表时, 需要通过主关键字的连接来建立表间的关系, 使各表协 同工作。要在两个表间建立关系,必须在这两个表中拥有相同数据类型的字段。其设置步骤如下:1、打开表所在的数据库窗口。2、单击“工具”菜单中的“关系”命令,弹出“显示表”对话框。3、选择要建立关系的表,然后单击“添加”按钮,依次添加完所需要的表后,单击“关闭” 按钮。4、在关系对话框中选择其中一表中的主

55、关键字,拖曳到另一表中相同的主关键字,释放鼠 表键后,弹出“编辑关系”对话框。5、若在“编辑关系”对话框中选中“实施参照完整性”和“级联更新相关字段”复选框, 则使在更新主表中记录的同时更新关系表中的相关记录。6、若在“编辑关系”对话框中选中“实施参照完整性”和“级联删除相关字段”复选框, 则使在删除主表中记录的同时删除关系表中的相关记录。7、接着单击“联接类型”按钮,弹出“联接属性”对话框,在此选择联接的方式。8、在“编辑关系”对话框中单击“创建”按钮,即在创建关系的表之间有一条线将其连接 起来,表示已创建好表之间的关系。9、关闭关系对话框,按需要选择是否保存关系的设定。 编辑或修改关联性的

56、操作是直接用鼠标在这一条线上双击, 然后在弹出的 “编辑关系” 对话 框中进行修改。删除关联性的操作是先用鼠标在这一条线上单击,然后再按 Delete 键删除。六、记录的基本操作Access 只允许每次操作一个记录,正在操作的记录在行选定器上显示一个“三角图标”用 于标记当前记录。 当改变当前记录的数据但又没有保存时, 行选定器上显示一个 “笔型图标” 。记录的基本操作包括添加记录、修改记录和删除记录。A 、添加记录打开表的数据视图画面时, 表的最末端有一条空白的记录, 在记录的行选定器上显示一个星 花图标,标示可以从这里开始增加新的记录。单击“插入”菜单中的“新记录”或直接选定 该行即可添加记录。输入完数据后,移到另一个记录时会自动保存该记录。B、修改记录可用 Tab 键或直接用鼠标移到要修改的字段进行修改。C、删除记录选择一条或多条记录后按 Delete 键删除所有选中的记录。七、总结 读过本文之后,相信您应该可以轻松地创建一个小型的数据库了,然而相比于 Access 强大 而繁多的功能, 这篇文章涉

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论