accesssql查询
SQL 查询 在 Access 中我们创建查询的最方便的方法使用设计视图,但是 在创建,查询时并不是所有的查询都可以在系统提供的查询设计视 图中进行的,有的查询只能通过 SQL 语句来实现。例如:同时显示 “90分以上学生情况”和“学生选课成绩”查询中 80分以下的所 有记录。 1、概念: SQL(Structured Query Language)是一种结构化查询语言,是标 准的关系型数据库语言,具有数据定义、查询、操纵和控制功能, 可完成数据库活动的全部工作。 SQL 查询是使用 SQL 语句创建的一种查询。 2、SQL 视图: 打开方法:查询“设计”视图->功能区“视图”按钮->SQL 视 图 注:在 Access 中,任何一个查询都对应一个 SQL 语句,即查 询对象的实质是一条 SQL 语句 3、SQL 的动词 SQL 功能 动词 数据定义 Create(定义表) ,drop(删除表、字段) ,alter(修改表、 字段) 数据操作 Insert(插入新纪录) ,update(更新纪录) ,delete(删除记 录) 数据查询 Select(实现数据的筛选、投影、连接)数据控制 Crant, Revote 3、数据定义:(定义的都是表的结构) (1)Create 语句:创建一张表格式:Create Table( [字段约束条 件],[字段约束条件],[字段约束条件], ……), [表级约束条件] integer:整型;long:长整型;single:单精度;double:双精度;char:文 本;date:日期/时间;memo:备注;primary key:建立“主键” 。 Check:限制条件 例如:创建一个雇员表: Create Table 雇员 ( 雇员号 smallint Primary key,姓名 char(4) not null,性别 char(1),出生日期 date ,部门 char(20),备注 memo) (2)Alter语句: 修改表的结构 格式:Alter TableAdd [字段约束条件] 增加新字段Drop 删除字段 Alter 修改字段 例1:在雇员表中增加一个名为“职务”字段,数据类型为“文本” 。 Alter table 雇员 add 职务 char(10) 例2:删除备注字段的语句 Alter table 雇员 drop 备注 例3:修改“雇员号”的字段属性语句 Alter table 雇员Alter 雇员号 char(8) 注意:使用 Alter 语句对表的结构进行修改时,不能一次删除或添加 多个字段 (3)drop语句:删除表格式:Drop table 注意: 删除基本表后,基本表的定义、表中数据、索引都被删除 例:删除雇员表 Drop Table 雇员 4、数据操作:(操作的都为表的记录) (1)insert 语句: Insert into values(新数据) 该语句一次完成一个记录的插 入 Insert into values(字段 1,字段 2,字段 3,……) Insert into [字段名列表] values(新数据) 插入表的部分记 录Insert into (字段名 1,字段名 2,……) values(字段值 1,字段值 2,……) 例1:插入添加一条完整新纪录 Insert into 雇员 values (“0001” , “张三” , “男” ,#1997-1- 1#, “办公室”) 例2:插入添加部分的新纪录 Insert into 雇员(雇员号,姓名,性别)values(“0002” , “李 四” , “女” ) (2)Update 语句:实现对全部记录或指定条件数据记录的更新 Upadate Set , , …… Where 修改时,对满足条件表达式的记录,将用表达式的值替换相应字段的值。 注:Where子句的使用,否则需要更新全部记录 例1:将张磊的出生日期改为“1996-1-11” Update 雇员 set 出生日期=#1996-1-11# where姓名=“张磊” (3)delete 语句:实现删除指定条件的记录的功能。 Delete from [Where] 说明:无 WHERE 子句时,表示删除表中的全部数据.WHERE 子句中可以带子查询. 例:将“雇员”表中雇员号为“002”的记录删除。 Delete from 雇员 where 雇员号=“002”5、Select 查询基本语句 (1)Select(查询)语句的基本格式: Select [Distinct|All] */字段名 查询的结果的目标字段表 From 要操作的关系表或查询名 [Where ] 查询结果应满足选择或联接条件 [Group by [Having]] 对查询结果分 组及分组的条 件 [Order by Asc/Desc] 对查询结果排序 说明:All(全部的记录) Distinct(去掉重复的记录) *(全部的字段) (2)SQL 例题。 例1 查找教师表中所有字段 SELECT * FROM 教师表; 例2 查找教师表中姓名,性别,工作时间和系别四个字段 SELECT 姓名,性别,工作时间,系别 FROM 教师表; 例3 查找1992年以后参加工作的男教师,并使显示姓名,性别,学历,职 称,系别和联系电话 SELECT 姓名,性别,学历,职称,系别,联系电话 FROM 教师表 WHERE 性别=“男“ AND 工作时间>=#1992-1-1#;例4 按职称分组统计教师人数,显示职称和人数 SELECT 职称,Count(编号) AS 人数 FROM 教师表 GROUP BY 职称; 例5 计算每名学生的平均成绩,显示学生编号和平均成绩,并按平均成 绩降序排序 SELECT 学生编号,Avg(成绩) AS 平均成绩 FROM 选课表 GROUP BY 学生编号 ORDER BY Avg(成绩) DESC; (3)连接查询一个查询同时涉及两个以上的表时,称其为连接查询。例:在学生表,课程表和选课表中查找编号,姓名,课程名称 和成绩。 SELECT 学生表.编号,学生表.姓名,课程表.课程名称,选课表.成绩 FROM 学生表,课程表,选课表 WHERE 课程表.课程编号=选课表.课程编号 AND 学生表.编号=选课 表.学生编号; 二、创建 SQL 特定查询 1、联合查询(用“union”将两个查询的结果放到一起,P103) select * from 表 1 union select * from 表 2;