SQL查询
在Access中我们创建查询的最方便的方法使用设计视图,但是在创建,查询时并不是所有的查询都可以在系统提供的查询设计视图中进行的,有的查询只能通过SQL语句来实现。例如:同时显示“90分以上学生情况”和“学生选课成绩”查询中80分以下的所有记录。 1、概念:
SQL(Structured Query Language)是一种结构化查询语言,是标准的关系型数据库语言,具有数据定义、查询、操纵和控制功能,可完成数据库活动的全部工作。
SQL查询是使用SQL语句创建的一种查询。 2、SQL视图:
打开方法 查询“设计”视图 “视图”菜单 SQL视图 工具栏“视图”按钮 SQL视图 注:在Access中,任何一个查询都对应一个SQL语句 即查询对象的实质是一条SQL语句 3、SQL的动词(P99) SQL功能 数据定义 数据操作 数据查询 动词 Create(定义表),drop(删除表、字段),alter(修改表、字段) Insert(插入新纪录),update(更新纪录),delete(删除记录) Select(实现数据的筛选、投影、连接)
数据控制 Crant, Revote 3、数据定义:(定义的都是表的结构) (1)Create 语句:创建一张表
格式:Create table<表名>(<字段名> <数据类型> <字段约束条件>) integer:整型;long:长整型;signed:单精度;double:双精度;text:文本;date:日期/时间;memo:备注;primary key:建立“主键”。Check:限制条件
例如:创建一个雇员表: create table 雇员
( 雇员号 smallint primary key, 姓名 char(4) not null, 性别 char(1), 出生日期 date , 部门 char(20), 备注 memo)
(2)Alter语句: 修改表的结构
格式:Alter table<表名>
Add<新字段名> <数据类型> <字段约束条件> 增加新字段
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:插入添加一条完整新纪录
Insert into 雇员 values (?0001?,?张三?,?男?,#1997-1-1#,?办公室?)
例2:插入添加部分的新纪录
Insert into 雇员(雇员号,姓名,性别)values(?0002?,?李四?,?女?)
(2)Update语句:实现对全部记录或指定条件数据记录的更新
Upadate <表名> Set <字段名=新数据>Where<条件> 修改时,对满足条件表达式的记录,将用表达式的值替换相应字段的值。
注:Where字句的使用,用则需要记录更新否全部记录更新 例1:将张三的出生日期改为?1996-1-1?
Update 雇员 set 出生日期=#1996-1-1# where姓名=?张三? (3)delete语句:实现删除指定条件的记录的功能。 Delete from <表名>[Where<条件>]
说明:无WHERE子句时,表示删除表中的全部数据. WHERE子句中可以带子查询.
例:将?雇员?表中雇员号为?0002?的记录删除。 Delete from 雇员 where 雇员号=?0002? 5、Select查询基本语句
(1)Select(查询)语句的基本格式:
…… 此处隐藏201字 ……
WHERE 成绩 BETWEEN 70 AND 80 例1、从学生表中查找所有的信息。 select * from 学生表;
例2、从学生表中查找学生的姓名,性别,年龄。 select 姓名,性别,年龄 from 学生表;
例3、从学生表中查找所有年龄大于22的学生信息。 select * from 学生表 where 年龄>22;
例4、从学生表中查找所有年龄大于22的女学生的信息。 select * from 学生表 where 年龄>22 and 性别=女例5、从教师表中查找所有1969年工作的教师的信息。 select * from 教师表 where year([工作时间])=1969; 例:查找出所有姓李的学生的情况 SELECT * FROM 学生表
WHERE SNAME LIKE ‘李%’ ;
注意:在SQL语言中字符?%?代表任意一串字符,?_? 代表任意一个字符。在Access2003中用?*? 代表任意一串字符, ??? 代表任意一个字符。