多语言展示
当前在线:156今日阅读:84今日分享:32

Access中怎么做CRUD增删查改?

Access中怎么做CRUD增删查改?怎么使用GROUP BY, HAVING, LIKE , between and ? 这篇经验将告诉你。
工具/原料
1

Access

2

SQL基础知识

往数据表中新增一条记录INSERT
1

所有的CURD操作,都可以在SQL View中进行。如果不知道怎么在Access中写SQL语句,可以参看我的另一篇经验:Access中如何写SQL语句?比如,我要往students表中添加一条新的记录,S_ID为6。添加该记录前,数据表中的记录如图所示:

2

添加记录的INSERT语句为: INSERT INTO StudentsVALUES (6, 'AAAA', 'BBBBB', '11 ChenHui Rd', '', '03/03/2003', 'M');  写完INSERT语句后,点击Run执行。然后,双击该数据表,可以看到新增了一条S_ID为6的记录。

修改数据表中的记录UPDATE
1

比如,students表中S_ID为1的记录,Phone为。我想修改该列的值。那么可以用 UPDATE来实现。对应的SQL语句为:UPDATE students SET Phone = '0111222'WHERE S_Id=1

2

点击Run执行该Update语句,然后去查看数据表中的记录,发现数据没有被更改。怎么回事?再次执行该Update语句,仔细观察发现,执行后出现了错误提示‘The action or event has been blocked by Disabled Mode’。解决方法为:找到 External Data,如图所示,提示信息为“Security warning: Some active content has been disabled.”。我们点击其后的”Enable content'按钮,再次执行该Update语句,发现数据更改成功了。

数据表中删除一条记录DELETE
1

比如我们想删除 Students表中S_ID为6的那条记录。对应的DELETE语句为:DELETE *FROM studentsWHERE s_id = 6;点击Run执行该DELETE语句

2

到数据表中查看数据,发现S_ID为6的那条记录被删除了。有意思的是,该记录对应位置的每个列的内容全部更改为Deleted了,但是,这种更改是暂时的。当你退出该数据库,再次查看该数据表的时候,这条特殊记录就不显示了。S_ID为6的那条记录被彻底删除了。

数据表中的查询操作- SELECT
1

SELECT操作示例1:简单的SELECT语句,查看students表中 S_ID为2的记录的LastName 和 FirstName。SELECT LastName, FirstNameFROM students WHERE S_id = 2;点击Run执行该SELECT语句,结果如图所示:S_ID为2的那条记录的LastName, FirstName显示出来了。当然,如果你想显示该条记录的所有列,可以用SELECT * 。

2

SELECT操作示例2:WHERE条件中使用<= ,查询students表中BirthDate在11/01/2008之前的记录。SELECT *FROM studentsWHERE BirthDate <= #11/01/2008#;注意:日期要用#括起来标识是日期数据。SQL语句和查询结果如图所示:

3

SELECT操作示例3:WHERE条件中使用IN 和NOT,查询students表中Gender不是F,FirstName是Brain和UUU的记录。SELECT *FROM studentsWHERE not Gender = 'F'and FirstName in ('Brain','UUU');SQL语句和查询结果如图所示:

4

SELECT操作示例4:使用BETWEEN AND查询BirthDate在01/01/2008和01/01/2009之间的记录。SELECT *FROM studentsWHERE BirthDate between #01/01/2008# and #01/01/2009#;SQL语句和查询结果如图所示:

5

SELECT操作示例5:使用LIKE查询FirstName以Y开头的记录。SELECT *FROM studentsWHERE (((students.[FirstName]) Like 'Y*'));SQL语句和查询结果如图所示:

6

SELECT操作示例6:使用GROUP BY,查询不同性别student的人数。SELECT Gender, count(*)FROM studentsGROUP BY Gender;注意:GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。所以,使用GROUP BY必须使用count(), sum(), MAX,MIN 这类的合计函数。SQL语句和查询结果如图所示:

7

SELECT操作示例7:使用GROUP BY,查询不同性别的student中年龄最大为多少。SELECT Gender, Max( int((Date()-BirthDate)/365)) AS Max_AgeFROM StudentsGROUP BY Gender;SQL语句和查询结果如图所示:

8

SELECT操作示例8:使用HAVING和GROUP BY,对性别进行分组,并且只显示最大年龄大于15的那一组。SELECT gender, max( int(( Date() - BirthDate)/365) ) AS max_ageFROM studentsGROUP BY genderHAVING max( int(( Date() - BirthDate)/365) )>=15;

9

SELECT操作示例9:查询students表中的数据,并且结果根据FirstName进行倒序排列。SELECT LastName, FirstNameFROM studentsORDER BY 2 DESC;注意:这个地方ORDER BY后面可以使用列名,也可以直接使用SELECT 后面的列名的位置。此处,FirstName位于SELECT后面的第2位,所以,ORDER BY的时候可以直接用2.

10

后续的几个SELECT操作需要用到3张表:students,Enrollment, subjects。这三张表的记录如图所示:students中保存学生的基本信息,主键为S_ID;subjects中保存课程信息,包含subject_ID, subject_name,以及教授课程的老师的名字subject_teacher,主键为subject_id;enrollment中保存学生的选课情况,为了避免冗余,student用 student_ID标识, subject用subject_id标识。

11

SELECT操作示例10:使用子查询,查询所有学习Smith老师课程的学生。这个查询涉及到3张表:students,Enrollment, subjects。第一步: 在 subjects表中查询'Smith'老师所教授课程的subject_idselect subject_id from subjects where subject_teacher = 'Smith'第二步:在 enrollment表中查询学习该课程的student的student_idselect Student_ID from Enrollment where Subject_ID in (第一步的结果)第三步:在students表中根据 student_id查询出对应的记录SELECT *FROM studentsWHERE S_Id in (第二步的结果)所以,最终的SQL语句为:SELECT *FROM studentsWHERE S_Id in ( select Student_ID from Enrollment where Subject_ID in (                             select subject_id from subjects where subject_teacher = 'Smith'));

12

SELECT操作示例11:使用JOIN,查询所有学习Smith老师课程的学生。这个查询涉及到3张表:students,Enrollment, subjects。SQL语句相比子查询更简洁些,而且不仅仅可以查询出students表中的记录,还可以查询出subjects表中的记录。SELECT U.*, S.subject_name, S.subject_teacherFROM enrollment AS E, subjects AS S, students AS UWHERE E.subject_id = S.subject_id    AND  E.student_id = U.s_id    AND  s.subject_teacher = 'Smith'

13

SELECT操作示例12:使用子查询查询年龄最大的学生的记录。SELECT LastName, FirstName, int( (Date()-BirthDate)/365 ) AS AgeFROM studentsWHERE int( (Date()-BirthDate)/365 ) in (  select max( int( (Date()-BirthDate)/365 ) ) from students);

推荐信息