当前位置:文档之家› 文管二级Access数据库SQL语句详解

文管二级Access数据库SQL语句详解

文管二级Access数据库SQL语句详解
文管二级Access数据库SQL语句详解

第一讲

上面是Access数据库中所涉及的两个表

下面我们介绍Access数据库中用于查询数据的语句:

1、SELECT 语句

SELECT语句是数据库中使用频率最高的语句,就是我们通常说的查询语句。

其格式如下:

SELECT+需要查询的对象+FROM+表名+WHERE+条件。

例1、查询上表中所有男性职工的“工号”“姓名”“部门”和“应发工资”。

SELECT 工号,姓名,部门,应发工资FROM rsda where 性别=”男”

注意事项:

1):写查询语句时英文部分不区分字母大小写。

2):除汉字外,所有字符标点和数字都必须使用半角英文状态下输入。

3):SELECT查询语句中如果没有条件限制,“WHERE+条件”部分可以省略。

4):需要查询的项目在表中必须存在。

5):如果要输出表中所有项目可以用“*”代替。

例如:查询上表中所有人员的姓名,出生年月及部门

SELECT 姓名,出生年月,部门FROM rsda;

显示表中的所有信息

Select * from rsda;

显示表中所有女性职工的信息

Select * from rsda where 性别=”女”;

要求:查询表中所有“未婚”男性职工的信息。

Select * from rsda where (性别=”男”)and(婚否=no);

有两个知识点需要掌握:

1):运算符:

A、算术运算符:加(+)、减(-)、乘(*)、除(/)、和取模(%)。算术运算符可以完成对两个表达式的数学运算。

B:赋值运算符:等号(=)

C:比较运算符:等于(=)、大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)、不等于(<>或!=)、不小于(!<)、不大于(!>).

D:逻辑运算符:与(and)、或(or)和非(not)。对于AND运算,只有当运算符两端的表达式的值都为真时,结果才返回真,只要有一股表达式的值为假,结果就是假;对于or 运算,只要运算符两端的表达式的值有一个位真,结果就返回真,只有两个表达式的值都是假,结果才为假;NOT运算是对表达式的值取反。

2):数据类型:文本、备注、数字、日期/时间、货币、自动编号、是/否、超链接等。

本例中“婚否”选项,使用的是“是/否”类型,即我们常说的布尔型,判断的时候“是”用yes表示,“否”用no表示。

Select语句中各个参数:

1)、top

如:查询前3条记录的工号,姓名,性别

Select top 3 工号,姓名,性别from rsda;

显示的结果是前3条记录。

查询数据表中前50%人员的信息

Select top 50 percent * from rsda;

显示的结果是表中前50%人员的信息

2):DISTINCT

如:查询所有记录的“性别”字段,并去掉重复值

Select distinct 性别from rsda;

3):别名

如:查询所有记录的工号(别名为number)、姓名(别名为name)、出生年月(别名为birthday)字段

Select number=工号,姓名as name ,出生年月birthday from rsda;

需要注意的是,在ACCESS中使用“列名AS 列别名”形式。

4):年龄

如:查询表中每个人的年龄。

Select 姓名, (year(now())-year(出生年月)) as 年龄from rsda;

now()函数返回当前日期,year()获取年份。

其他函数有abs(绝对值)、left(从左侧截取字符串)、right(从右侧截取字符串)、len(获取字符串的长度)、ltrim和rtrim(去掉字符串前面或后面的空格)、day(返回日期)、month(返回月份)、year(返回年份)、weekday(返回星期)、hour(返回小时)、date(返回系统日期)、sum(求和)、avg(求平均值)、count(统计个数)、max(求最大值)、min(求最小值)等等。

如:显示表中应发工资的最大值

Select max(应发工资) as 工资from rsda;

如:查询表中各人员工号的前两位

Select left(工号,2)as 工号前两位from rsda;

如:统计所有男性职工的人数

Select count(*) from rsda where 性别=”男”

如:显示表中应发工资最高的人员信息

select * from rsda where 应发工资>=(select max(应发工资) from rsda);

上面是个嵌套查询语句

2、into语句

如:创建一个新表rrr来显示上表中前五名人员的信息。

Select top 5 * into rrr from rsda;

第二讲

一、from语句

from子句用于指定要查询的表。

例如:查询表rsda表和kcm表中的数据。

SELECT rsda.编号,rsda.工号,姓名,性别,出生年月,kcm.课程名from rsda,kcm where rsda.

工号=kcm.工号

注意:本例子是关于表间查询的。表中有共同列的项目必须标注表名,格式为“表名”

+“.”+“列号”。当两个或多个数据表中有共同名称的字段时必须使用上面的格式,否则由于系统不清楚应该使用哪个数据表中的同名字段,将无法执行此查询,会提示错误。

上面例子也可以使用联合查询形式完成,程序如下:

SELECT rsda.编号,rsda.工号,姓名,性别,出生年月,kcm.课程名from rsda inner join kcm on rsda.工号=kcm.工号

练习:显示担任“计算机文化基础”教学人员的工号,姓名,性别,婚否,基本工资及部门。

二、where语句

where子句是条件子句,用来限定查询的内容。

在where语句中是允许使用比较运算符如下:

等于、大于、大于等于、小于、小于等于、不等于、不大于、不小于、不等于。

例如:查询rsda表中应发工资小于1500的人员信息。

SELECT * from rsda where 应发工资<1500

练习:显示表中基本工资不大于1200的工号,姓名,出生年月及基本工资。

逻辑表达式如下:

逻辑反、逻辑与、逻辑或。

例如:查询年龄小于39岁未婚男士的部门信息

SELECT 姓名,部门from rsda where (year(now())-year(出生年月)<39)and (婚否=no)and(性别=”男”)

练习:显示当前未过生日的已婚人员信息。

三、between关键字

例如:查询表rsda中应发工资在1000到1500之间的人员信息

SELECT * from rsda where 应发工资between 1000 and 1500

练习:显示表中基本工资在800到1200之间人员的姓名,部门及基本工资。

四、in 关键字

使用in关键字可以确定给定的值是否与子查询或列表中的值相匹配。

例如:显示教务处、学生处和总务处已婚男士人员的补贴信息

SELECT 姓名,补贴from rsda where (性别="男")and (婚否=-1 )and (部门in ("教务处","

学生处","总务处"))

练习:查询表中总务处和基础部未婚女性职工的人数。

五、like关键字

使用like关键字可以确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。通过模式的匹配,达到模糊查询的效果。

例如:查询表中张姓人员的工号,姓名,性别,部门及出生年月

SELECT 工号,姓名,性别,部门,出生年月from rsda where 姓名like "张*"

练习:查询工号以11开头的所有人员信息。

六、group by语句

在group by语句中在选择列表内定义的列的别名不能用于指定分组列,此外,select后面的每一列数据除了出现在统计函数中的列外,都必须在group by子句中应用。

例如:在表rsda表中按性别进行分组,查询相应的人数。

SELECT 性别,count(性别) as 人数from rsda group by 性别

练习:统计已婚和未婚的人数,并按婚否进行分组。

七、having语句

having语句为分组或集合指定搜索条件,通常与group by语句一起使用,

说明:当having 与group by all一起使用时,having 语句替代了all。在having语句中不能使用text,image,ntext数据类型。

HAVING 子句对GROUP BY 子句设置条件的方式与WHERE 子句和SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与WHERE 语法类似,但HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。

例如:在表中查询部门中有两个以上人员的部门信息

SELECT 部门,count(部门) as 部门人数from rsda group by 部门having count(部门)>=2 练习:显示表中有两个以上补贴相同的人员信息。

八、order by语句

order by语句用于指定对查询结果排序。如果在select中同时指定了top,则order by语句无效。在排序过程中ASC表示按递增顺序排列,即从最低值到最高值对指定列中的值进行排序。是系统默认的排列方式,书写语句时可省略。DESC表示按递减顺序排列,即从最高值到最低值对指定列中的值进行排序。需要注意的是,空值被视为最低值。

例如:显示表中基本工资为1000的人员信息,并按工号降序排列。

SELECT * from rsda where 基本工资=1000 order by 工号desc;

练习:查询补贴为500的工号,姓名,部门,并按工号升序排列。

九、联合查询。

联合查询是指将两个或两个以上的select语句通过union运算符连接起来的查询,联合查询可以将两个或者更多查询的结果组合为单个结果集,该结果集包含联合查询中所有查询的全部行。

使用union组合两个查询的结果集的两个基本规则是:

1、所有查询中的列数和列是顺序必须相同。

2、数据类型必须兼容。

十、嵌套查询

嵌套查询主要用于复杂的查询。在SQL语言中,一个select---from---where语句称为一个查询块,将一个查询块嵌套在另外一个查询块的where子句或having短语的条件中的查询称为嵌套查询。

嵌套查询中上层查询块称为外层查询或父查询,下层查询块称为内查询或子查询。SQL 语言允许多层查询嵌套,但是在子查询中不允许出现order by语句,order by语句只能用在最外层的查询块中。

嵌套查询一般按照由里向外的方法处理,即先处理最内层的子查询,然后处理一层一层的向上处理,直到最外层查询块。

在某些嵌套查询中where之后还可以使用any和all两个关键字。Any表示子查询结果中的某个值,而all表示子查询结果中的所有值。这两个关键字可以和算术运算符在一

起构成各种查询条件,如>all表示大于子查询中的所有值。

例如:查询所授两门以上科目的人员基本信息。

SELECT * from rsda where 工号=any (select 工号from kcm group by 工号having count(工号)>=2)

练习:显示表中应发工资最高的人员信息

十一、插入函数

Insert语句用于向数据库表或者视图中加入一行数据。

例如:向表rsda中插入一行数据,只包含工号,姓名,婚否。

insert into rsda (工号,姓名,婚否) values ("12039","王五","-1")

例如:向rsda表中插入一行数据,所有字段都要给出相应的值。

insert into rsda values ("13","12049","赵六","男","1999-12-12","-1","学生处","2000","850","60","2790","")

例如:向表rsda中插入一批数据,数据来源于另外一个已有的数据表rsda1.

Insert into rsda (工号,姓名,性别,出生年月) select工号,姓名,性别,出生年月from rsda1;

如果所追加的表不存在请用下面的格式:

Select+所要添加的项目+into+新表名+from+需要查询的表名+where+条件例如:要求将所有男性职工的记录追加到名为“追加表”的表中,只需要其中的4个字段:姓名、性别、工资、补贴。

SELECT 工号,姓名,性别,部门into 追加表from rsda where 性别="男"

十二、更新数据

Update语句用于修改数据库表中特定记录或者字段的数据。

例如:修改刘龙强的工号为11027,出生年月为1978年1月3日。

update rsda set 工号="11027",出生年月="1978-1-3" where 姓名="刘龙强"

练习:更新工号为12009的员工教师课程为“数据库”

例如:更新表rsda中所有人员为已婚。

update rsda set 婚否=-1;

十三、delete语句

Delete语句用于删除数据库表中的数据。

例如:删除表中张三的所有信息。

delete from rsda where 姓名="张三"

当不指定条件时,将删除表中的所有行数据。要清除表中的所有数据,只留下数据表的定义还可以使用truncate语句。与delete语句相比,通常truncate执行速度快,因为它是不记录日志的删除表中全部数据的操作。

如:delete from rsda

Truncate table rsda

Truncate table 表名速度快,而且效率高,因为:

TRUNCATE TABLE 在功能上与不带WHERE 子句的DELETE 语句相同:二者均删除表中的全部行。但TRUNCATE TABLE 比DELETE 速度快,且使用的系统和事务日志资源少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用DELETE。如果要删除表定义及其数据,请使用DROP TABLE 语句。

DROP TABLE table_name 表示删除表的全部信息。

表所有者可以除去任何数据库内的表。除去表时,表上的规则或默认值将解除绑定,任何与表关联的约束或触发器将自动除去。如果重新创建表,必须重新绑定适当的规则和默认值,重新创建任何触发器并添加必要的约束。如果删除表内的所有行(DELETE tablename) 或使用TRUNCATE TABLE 语句,则表将一直存在到被除去。

课后练习:

1.要求:列出rsda数据表中部门为“教务处”的女性职工的工号,姓名,性

别和部门。Select 工号,姓名,性别,部门from rsda where (部门=”教务

处”)and( 性别=”女”)

2.显示基本工资的最小值和最大值,并将结果分别赋给变量minjbgz、

maxjbgz。Select min(基本工资)as minjbgz,max(基本工资)as maxjbgz from

rsda

3.显示“基础部”每位老师所讲授的所有课程名。Select 姓名,课程名from

rsda,kcm where (rsda.工号=kcm.工号)and(部门=”基础部”)

4.显示所有姓张的人员信息。Select * from rsda where 姓名like “张*”

5.物理删除rsda数据表中部门为“基础部”的所有男性职工的记录。Delete

from rsda where (部门=”基础部”)and(性别=”男”)

6.统计每位教师讲授的课程数目。SELECT 姓名,count(课程名)as 课程数目

from rsda,kcm where rsda.工号=kcm.工号group by 姓名

7.列出rsda数据表中部门为“总务处”和“学生处”的所有男性职工的信息。

Select * from rsda where (部门in (“总务处”,”学生处”))and(性别=”男”)

8.按照“出生年月”升序形式显示所有人员的信息。Select * from rsda order by

出生年月

9.计算补贴的平均值、公积金的平均值,并将结果分别赋给变量rjbt、rjgjj。

Select avg(补贴)as rjbt,avg(公积金)as rjgjj from rsda

10.显示讲课教师中年龄最大的教师的姓名和性别。Select 姓名,性别from

rsda,kcm where 出生年月=any (select max(出生年月) from rsda)

11.列出rsda数据表中部门为“基础部”的男性职工的工号,姓名,性别和部

门。Select 工号,姓名,性别,部门from rsda where (部门=”基础部”)and(性别

=”男”)

12.按照“基本工资”降序形式显示所有人员的信息。Select * from rsda order by

基本工资desc

13.统计男教工中基本工资超过1000元的人数,并将结果赋给变量num。select

count(基本工资) as num from where (基本工资>1000)and(性别=”男”)

14.统计讲授“计算机文化基础实验”课程的教师中“补贴”一项的最高值,

并将结果赋给变量A57(或者新字段A57)。Select max(补贴) as A57 from

rsda,kcm where (rsda.工号=kcm.工号)and(课程名=”计算机文化基础实验”).

15.要求:显示所有本年度已经过完生日(不含当日)的人员信息。Select * from

rsda where (month(date())>month(出生年月))or((month(date())=month(出生年

月))and(day(date())>day(出生年月)))

16.要求:为部门是“总务处”的职工每人增加15%的补贴(补贴=补贴*1.15)。

update rsda set 补贴=补贴*1.15 where 部门=”总务处”

17.计算部门为“基础部”、补贴不足300元的人员的基本工资的平均值。Select

avg(基本工资) from rsda where (部门=”基础部”)and(补贴<300)

18.计算并替换每一条记录中的“补贴”字段(补贴=基本工资*0.05)。update rsda

set 补贴=基本工资*0.05

19.显示应发工资的最小值和最大值,并将结果分别赋给变量minyfgz、

maxyfgz。Select min(应发工资)as minyfgz,max(应发工资)as maxyfgz from

rsda

20.按照“公积金”升序形式显示所有人员的信息。Select * from rsda order by 公

积金

21.统计30岁(不含30岁)以上的老师各自讲授的课程数目。SELECT 姓

名,COUNT(课程名) as 课程数目FROM kcm INNER JOIN rsda ON Kcm.工

号= Rsda.工号WHERE (year(date())-year(出生年月)) >= 30 GROUP BY

姓名或者SELECT 姓名,COUNT(课程名) as 课程数目FROM rsda, kcm

where((year(date())-year(出生年月)) >= 30)and(Kcm.工号= Rsda.工号)

GROUP BY姓名

第三讲SQL语句的格式总结

一、Select语句

SELECT+需要查询的对象+FROM+表名+WHERE+条件。

Select语句中的参数:

1.Top

显示结果的前几条记录

select+T op+数字+from+表名+WHERE+条件。

显示结果的前百分之几的记录

select+T op+数字+percent+from+表名+WHERE+条件。

2.Distinct

在显示的结果中去掉重复值

3.As

给相应的列名赋予一个新的名字,或者给相应的字段创建一个新名字。

select+原列名+as+新列名+from+表名+WHERE+条件。

函数计算的结果+as+新名称(如:max(基本工资)as 最大工资)4.函数的使用

1)Now()返回当前的系统时间,包含年、月、日、时、分、秒

2)Date()返回当前系统日期,包含年、月、日

3)Abs(参数)取数值的绝对值

4)Left(列名+,+数字)从左侧截取相应长度的字符串(如:left

(工号,2)=11 (工号like “11*”)显示工号的前两位字符)

5)right(列名+,+数字)从右侧截取相应长度的字符串(如:right

(工号,2)显示工号的后两位字符)

6)len(列名)返回满足条件的列中字符串的长度(如:len(工号))

显示工号有几个字符组成

7)day(日期)返回日期中的天(如:day(date())显示当前系统

的日)

8)month(日期)返回日期中的月(如:month(date())显

示当前系统的月)

9)year(日期)返回日期中的年(如:year(出身年月)显示出

生的年份)

10)sum(列名)对列中满足条件的记录进行求和(如:sum(基本

工资)统计满足条件的基本工资的总和)

11)avg(列名)对列中满足条件的记录求平均值(如:avg(应

发工资)统计满足条件的应发工资的平均值)

12)count(列名)统计个数(如count(课程名)统计满足条件

的课程数目)有时候要和group by 及having 一起使用。

13)Max(参数)求满足条件的最大值(如:max(应发工资) 显示应

发工资的最大值)

14)Min(参数)求满足条件的最小值(如:min(应发工资)显

示应发工资的最大值)

5.Into

把数据追加到一个表中,如果没有相应的表,系统会自动创建一个满足条件的表。

在多表之间查询的时候一定要在表中有共同列名的前面加上”表名+.”。格式为“表名”+“.”+“列名”。如果表中独有的列,前面可以不加表名。隐含的条件是必须共同列中的数据相同(如:rsda.工号=kcm.工号)。

在条件中不能直接使用函数。(如:where 基本工资>=max(基本工资))

在条件语句中需要判断多个条件时必须使用逻辑表达式(如:()and())

6.Between关键字

满足条件的某区间的内容

Between+数值1+and+数值2

7.In关键字

使用in关键字可以确定给定的值是否与子查询或列表中的值相匹配。

列名+in+(参数1,参数2…..)

8.Like关键字

使用like关键字可以确定给定的字符串是否与指定的模式匹配。列名+like+”参数”

如:工号like “12*”

9.Group by

对查询的列表中对相应主键(列)进行分组。在group by语句中在选择列表内定义的列的别名不能用于指定分组列,此外,select后面的每一列数据除了出现在统计函数中的列外,都必须在group by 子句中应用。

Group +by+列名

SELECT 姓名,count(课程名) as 人数from rsda,kcm where rsda.

工号=kcm.工号group by 姓名

10.Having

having语句为分组或集合指定搜索条件,通常与group by语句一起使用

SELECT 部门,count(部门) as 部门人数from rsda group by 部门having count(部门)>=2

11.Order by

order by语句用于指定对查询最终结果进行排序。DESC表示按递减顺序排列,ASC表示按递增顺序排列。

SELECT * from rsda where 基本工资=1000 order by 工号desc;

二、Insert

Insert语句用于向数据库已有表中追加一行或者多行。

Insert+into+表名+(列名1,列名2,列名3……)+values+(“数据1”,”数据2”,”数据3”……)

Insert+into+表名+values+(所有字段的相应值)

Insert+into+表名+(列名1,列名2,列名3……)+select+列名1,列名2,列名3…..+from+表名+where+条件

如果所追加的表不存在,请用下面的格式:

Select+所要添加的项目+into+新表名+from+需要查询的表名+where+条件

三、Update

Update语句用于修改数据库表中特定记录或者字段的数据. Update+表名+set+(列名=”数据”, 列名=”数据”……)+where+条件

四、Delete

Delete+from+表名+where+条件

五、Drop

删除表

Drop+ table+表名

课后习题:

1.要求:显示公积金的最小值和最大值,并将结果分别赋给变量mingjj、maxgjj。Select min(公积金)as mingjj,max(公积金)as maxgjj from rsda

2.要求:显示女教师讲授的所有课程名。Select 姓名,课程名from rsda,kcm where (rsda.工号=kcm.工号)and(性别=”女”)

3.要求:彻底删除kcm数据表中工号为12006的人员。Delect from kcm where 工号

=”12006”

4.要求:统计讲授“程序设计”课程的老师的基本工资的平均值,并将结果赋给变量A54(或者新字段A54)。Select avg(基本工资)as A54 from rsda,kcm where (rsda.工号=kcm.工号)and(课程名=”程序设计”)

5.要求:计算教务处人员的基本工资的平均值和最大值。Select avg(基本工资) as 平均值,max(基本工资)as 最大值where 部门=”教务处”

6.要求:显示30岁(含30岁)以下的人员的所有信息。Select * from rsda where (year(date())-year(出生年月))<30

7.要求:按照“公积金”降序形式显示所有人员的信息。Select * from rsda order by 公积金desc

8.要求:显示讲授“英语写作”课程的每位老师的姓名、年龄。Select 姓名,

(year(date())-year(出生年月)) as 年龄from rsda,kcm where (rsda.工号=kcm.工号)and(课程名=”英语写作”)

9.要求:统计每位男老师各自讲授的课程数目。Select 姓名,count(*) as 课程数目from rsda,kcm where (rsda.工号=kcm.工号)and性别=”男”) group by 姓名

10.要求:物理删除rsda数据表中部门为“教务处”的所有女性职工的记录。Delete from rsda

where (部门=”教务处”)and(性别=”女”)

11.要求:按照“应发工资”升序形式显示所有人员的信息。Select * from rsda order by 应发工资asc

12.要求:列出rsda数据表中应发工资大于1500元的男性职工的工号、姓名、性别、部门和应发工资。Select 工号,姓名,性别,部门,应发工资from rsda (应发工资>1500)and(性别=”男”)

13.要求:按照rsda数据表中“部门”升序生成一个名为“人事表1”的新表,其中包含4个字段:工号、姓名、性别和部门。Select 工号,姓名,性别,部门into 人事表1 from rsda order by 部门asc

14.要求:显示讲课教师中年龄最小的教师的姓名和性别。select 姓名,性别from rsda where (Y ear([出生年月]))=any(SELECT Max(Y ear(出生年月)) FROM rsda, kcm where rsda.工号= kcm.工号)and((month([出生年月]))=any(SELECT max(month(出生年月)) FROM rsda, kcm where rsda.工号= kcm.工号))and((day([出生年月]))=any(SELECT max(day(出生年月)) FROM rsda , kcm where rsda.工号= kcm.工号))

15.要求:物理删除rsda数据表中1985年以前(不含1985年)出生的部门为“教务处”的职工记录。Delete from rsda where (year(出生年月)<1985)and(部门=”教务处”)

16.要求:统计“张运生”讲授的课程门数,并将结果赋给变量A57(或者新字段A57)。Select count(课程名) as A57 from rsda,kcm where (rsda.工号=kcm.工号)and(姓名=”张运生”)

17.要求:按照“出生年月”降序形式显示所有人员的信息。Select * from rsda order by 出生年月desc

18.要求:统计讲授“英语写作”课程的老师的应发工资的平均值,并将结果赋给变量A56(或者新字段A56)。Select avg(应发工资)as A56 from rsda,kcm where (rsda.工号=kcm.工号)and(课程名=”英语写作”)

19.要求:统计rsda数据表中女性职工中补贴一项的最低值,并将结果赋给变量A58(或者新字段A58)。Select min(补贴) as A58 from rsda where 性别=”女”

20.要求将所有男性职工的记录追加到名为“追加表”的表中,只需要其中的4个字段:姓名、性别、工资、补贴。Select 姓名,性别,工资,补贴into 追加表from rsda where 性别=”男”

21.要求:显示讲授“英语阅读”课程的每位老师的姓名、年龄。Select 姓名,

(year(date())-year(出生年月)) as 年龄from rsda,kcm where (rsda.工号=kcm.工号)and(课程名=”英语阅读”)

22.要求:统计rsda数据表中部门为“基础部”的女性职工的基本工资的平均值,并将结果赋给变量A53(或者新字段A53)。Select avg(基本工资) as A53 from rsda where (部门=”基础部”)and(性别=”女”)

23.要求:统计男性职工中基本工资超过1500元的人数,并将结果赋给变量A55(或者新字段A55)。Select 基本工资,count(*) as A55 from rsda where (性别=”男”)and(基本工

资>1500)

24.要求:列出rsda数据表中工号前2位等于“10”的男性职工的信息。Select * from rsda where 工号like “10*”;或者是Select * from rsda where left(工号,2 )=10;

25.要求:为rsda数据表中部门是“教务处”的人员每人增加25%的补贴(补贴=补贴*1.35)。update rsda set 补贴=补贴*1.35 where 部门=”教务处”

常用SQL语句大全

常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 DROP database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 DROP table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: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 viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(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 求和:select 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 table1 11、说明:几个高级查询运算词

Access中的SQL语言

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特定查询”子菜单、②视图菜 单中会出现“SQL视图”命令、③同时原来显示在菜单栏下的数据库工 具栏自动被切换为“查询设计”工具栏,其中的左上角会有一个视图切 换按钮。无论用上述三种方法的哪一种,均可在Access窗口中显示供输 入SQL语句的“查询”窗口。 注意:①在该窗口中只能输入一条SQL语句!但可分行输入,系统会把分号“;” 作为命令的结束标志,但一般在输入命令时,不必人为地输入分号。当 需要分行输入时,不能把Sql语言的关键字或字段名分在不同行。 ②Sql语句中所有的标点符号和运算符号均为ASCII字符! ③每两个单词之间至少要有一个空格或有必要的逗号! SQL语句的保存:关闭“SQL语句输入”窗口,命名为一个查询 SQL语句的执行:在“SQL语句输入”窗口中输入一个完整的SQL语句后,按“查询设计工具栏”中的运行按钮“!”,或在数据库窗口中双击已被保存的相应查询。 I.数据表定义语句 前面我们是使用Access窗口中菜单命令的方式建立数据表的。现在,我们开始学习用SQL

SQL常用语法及例子精简——快速入手

sql语言 库表的增删改查常用语及语法 (1)数据记录筛选: sql="select*from 数据表where 字段名=字段值orderby字段名[desc]" sql="select*from 数据表where 字段名like'%字段值%'orderby字段名[desc]" sql="selecttop10*from 数据表where 字段名orderby字段名[desc]" sql="select*from 数据表where 字段名in('值1','值2','值3')" sql="select*from 数据表where 字段名between 值1and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录: sql="de letefrom数据表where 条件表达式" sql="de letefrom数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)" sql="insertinto目标数据表select*from 源数据表"(把源数据表的记录添加到目标数据表) (5)数据记录统计函数: AVG(字段名)得出一个表格栏平均值 COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名)取得一个表格栏最大的值 MIN(字段名)取得一个表格栏最小的值 SUM(字段名)把数据栏的值相加 引用以上函数的方法: sql="selectsum(字段名)as 别名from 数据表where 条件表达式" setrs=conn.excute(sql) 用rs("别名")获取统的计值,其它函数运用同上。 (6)数据表的建立和删除: CREATETABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度)……) 例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ()) DROPTABLE 数据表名称(永久性删除一个数据表) 4.记录集对象的方法: rs.movenext将记录指针从当前的位置向下移一行 rs.moveprevious将记录指针从当前的位置向上移一行 rs.movefirst将记录指针移到数据表第一行 rs.movelast将记录指针移到数据表最后一行 rs.absoluteposition=N 将记录指针移到数据表第N 行 rs.absolutepage=N 将记录指针移到第N 页的第一行 rs.pagesize=N 设置每页为N 条记录 rs.pagecount根据pagesize的设置返回总页数 rs.recordcount返回记录总数 rs.bof返回记录指针是否超出数据表首端,true 表示是,false 为否

ACCESS数据库中常见的SQL语句汇总教程

ACCESS数据库的SQL语句教学 1、查询所有记录:Select *通常用于快速查看表中的记录。当对表的结构无法确切记忆时,或要快速查看表中的记录时,使用Select *是很方便的。 use 企业销售管理系统 Select * from 职工 2、投影查询:很多时候并不需要将所有列的数据都显示出来。投影查询就是允许用户显示所需要的列。假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。 Select 职工号,姓名,工资 from 职工 在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把姓名放到第一列,则代码如下: Select 姓名, 职工号,工资 from 职工 3、条件查询:显示wh1或wh2仓库、性别不为女、工资在1300~2100之间的职工信息。具体操作如下: Select * from 职工号 where(仓库号='wh1' or 仓库号='wh2') And not 性别='女' and 工资>=1300 and 工资<=2100 在这里一定要注意,(仓库号='wh1' or仓库号='wh2')一定要加括号,否则就不是原题的意思。 4、谓词In查询:在查找特定条件的数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条的记录。但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。另外,在后面讲解的嵌套查询中,也必须使用In查询。下面以显示zg1、zg2、zg11、zg15的订购单信息为例具体讲解一下。

使用Or运算符 Select * from 订购单 where 职工号='zg1' or 职工号='zg2' Or 职工号='zg11' or 职工号='zg15' 使用谓词In Use 企业销售管理系统 Select * from 订购单 where 职工号 in('zg1', 'zg2', 'zg11', 'zg15') 在Select语句中,还支持In与Not结合使用。假设显示职工号不为zg1, zg2, zg11, zg15的订购单信息,具体代码如下: 使用Or运算符 Select * from 订购单 where 职工号!='zg1' or 职工号!='zg2' Or 职工号!='zg11' or 职工号!='zg15' 使用谓词In Use 企业销售管理系统 Select * from 订购单 where 职工号 not in('zg1', 'zg2', 'zg11', 'zg15') 5、模糊Like查询:有的时候,我们不清楚所要查询的信息,如显示职工信息,但不能确定该职工的姓名,只知道他姓名中含有“王”字,那该如何查找呢?SQL中提供了Like关键字,使用Like进行了查询时,还要指定通配符。 通配符及其含义

SQL语句实例

表操作 例1 对于表的教学管理数据库中的表STUDENTS,可以定义如下:CREATE TABLE STUDENTS, ( SNO NUMERIC (6, 0) NOT NULL, SNAME CHAR (8) NOT NULL, AGE NUMERIC(3,0), SEX CHAR(2), BPLACE CHAR(20), PRIMARY KEY(SNO) ) 例2 对于表的教学管理数据库中的表ENROLLS,可以定义如下:CREATE TABLE ENROLLS ( SNO NUMERIC(6,0) NOT NULL, CNO CHAR(4) NOT NULL, GRADE INT, PRIMARY KEY(SNO,CNO), FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO), FOREIGN KEY(CNO) REFERENCES COURSES(CNO), CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)) ) 例3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX='女'; 例4 删除教师表TEACHER。 DROP TABLE TEACHER 例5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50))

例6 把STUDENTS表中的BPLACE列删除,并且把引用BPLACE列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO); 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY。(在视图定义中不能包含ORDER BY子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO=ENROLLS.SNO AND https://www.doczj.com/doc/4118554505.html,O=https://www.doczj.com/doc/4118554505.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作 例14 创建一个简易教学数据库的数据库模式TEACHING_DB,属主为ZHANG。 CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG 例15 删除简易教学数据库模式TEACHING_DB。((1)选用CASCADE,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.doczj.com/doc/4118554505.html,O=https://www.doczj.com/doc/4118554505.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

Access中使用SQL语句应掌握的几点技巧

Access中使用SQL语句应掌握的几点技巧 今天为大家详细讲述了Access中使用SQL语句应掌握的几点技巧。以下SQL语句在ACCESS XP的查询中测试通一、建表:Create Table Tab1 (ID Counter, Name string, Age integer, [Date] DateTime);技巧:自增字段用Counter 声明。字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行。 ?二、建立索引: ?1、下面的语句在Tab1的Date列上建立可重复索引:Create Index iDate ON Tab1 ([Date]);完成后ACCESS中字段Date索引属性显示为- 有(有重复)。 2、下面的语句在Tab1的Name列上建立不可重复索引:Create Unique Index iName ON Tab1 (Name);完成后ACCESS中字段Name索引属性显示为- 有(无重复)。 3、下面的语句删除刚才建立的两个索引:Drop Index iDate ON Tab1; Drop Index iName ON Tab1; ?三、Access与SQL Server中的Update语句对比 ?SQL Server中更新多表的Update语句:Update Tab1 SET https://www.doczj.com/doc/4118554505.html, = https://www.doczj.com/doc/4118554505.html, FROM Tab1 a,Tab2 b Where a.ID = b.ID; ?同样功能的SQL语句在Access中应该是:Update Tab1 a,Tab2 b SET https://www.doczj.com/doc/4118554505.html, = https://www.doczj.com/doc/4118554505.html, Where a.ID = b.ID; ?即:ACCESS中的Update语句没有FROM子句,所有引用的表都列在Update关键字后。 ?上例中如果Tab2可以不是一个表,而是一个查询,例: ?Update Tab1 a,(Select ID,Name From Tab2) b SET https://www.doczj.com/doc/4118554505.html, = https://www.doczj.com/doc/4118554505.html, Where a.ID = b.ID;访问多个不同的ACCESS数据库-在SQL中使用In子句:Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;上面的

SQL常用语句+举例

SQL 常用语句+举例 相关表: 1. distinct: 剔除重复记录 例:select distinct stroe_name from Store_information 结果: 2. And / or: 并且/或 例:在表中选出所有sales 高于$1000或是sales 在$275及$500之间的记录 Select store_name ,sales from Store_information Where sales>1000 Or (sales>275 and sales <500) 3. 例:在表中查找store_name 包含 Los Angeles 或San Diego 的记录 Select * from Store_information where store_name in (‘Los Angeles ’,’San Diego ’) 结果: 4. Between : 可以运用一个范围抓出表中的值

与in 的区别:in 依照一个或数个不连续的值的限制抓出表中的值 例:查找表中介于Jan-06-1999 及Jan-10-1999 中的记录 Select * from Store_information where date between ‘Jan-06-1999’ and ‘Jan-10-1999’ 结果: 5. Like : 让我们依据一个套式来找出我们要的记录 套式通常包含: ’A_Z ’: 所有以A 开头,中间包含一个字符,以Z 结尾的字串 ’ABC%’: 所有以ABC 起头的字串 ’%XYZ ’: 所有以XYZ 结尾的字串 ’%AN%’: 所有包含AN 的字串 例:Select * from Store_information where store_name like ‘%An%’ 结果: 6. Order by: 排序,通常与ASC (从小到大,升序)、DESC (从大到小,降序)结合使用 当排序字段不止一个时,先依据字段1排序,当字段1有几个值相同时,再依据字段2排序 例:表中sales 由大到小列出Store_information 的所有记录 Select Store_name, sales,date from Store_information order by sales desc 结果: 7. 函数:AVG (平均值)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM(求和) 语句:select 函数名(字段名) from 表名 例:求出sales 的总和 Select sum(sales) from Store_information 结果 8. COUNT (计数) 例:找出Store_information 表中 有几个store_name 值不是空的记录

Microsoft Access数据库中SQL语句大全

ACCESS数据库的SQL语句教学 引子:如何找到ACCESS数据库的SQL视图: 1) 单击下图左侧的: 2)单击上图顶部的,弹出如下图对话框: 5)单击“关闭”,此时在菜单中的文件菜单下面出现一个SQL的下拉框;6)

在“SQL”下拉框中选择如下图所示中的“SQL视图即可”。 1、查询所有记录:Select *通常用于快速查瞧表中的记录。当对表的结构无法确切记忆时,或要快速查瞧表中的记录时,使用Select *就是很方便的。 use 企业销售管理系统 Select * from 职工 2、投影查询:很多时候并不需要将所有列的数据都显示出来。投影查询就就是允许用户显示所需要的列。假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。 Select 职工号,姓名,工资from 职工 在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把姓名放到第一列,则代码如下: Select姓名, 职工号,工资from 职工 3、条件查询:显示wh1或wh2仓库、性别不为女、工资在1300~2100之间的职工信息。具体操作如下: Select * from职工号where(仓库号=’wh1’ or仓库号=’wh2’) And not 性别=’女’ and 工资>=1300 and 工资工资<=2100 在这里一定要注意,(仓库号=’wh1’ or仓库号=’wh2’)一定要加括号,否则就不就是原题的意思。 4、谓词In查询:在查找特定条件的数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条的记录。但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。另外,在后面讲解的嵌套查询中,也必须使用In查询。下面以显示zg1、zg2、zg11、zg15的订购单信息为例具体讲解一下。使用Or运算符 Select * from订购单where 职工号=’zg1’ or职工号=’zg2’’) Or职工号=’zg11’ or职工号=’zg15’

50个常用sql语句实例(学生表 课程表 成绩表 教师表)

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号: if exists(select table_name from information_schema.tables where table_name='Temp_Table') drop table Temp_Table go select 排名=identity(int,1,1),* INTO Temp_Table from Student go select * from Temp_Table go drop database [ ] --删除空的没有名字的数据库 问题: 1、查询“”课程比“”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student

SQL查询语句例子

数据表的查询(select) select 字段列表[as 别名], * from 数据表名 [where 条件语句] [group by 分组字段] [order by 排序字段列表desc] [LIMIT startrow,rownumber] 1、Select 字段列表From 数据表 例:①、select id,gsmc,add,tel from haf (* 表示数据表中所有字段) ②、select 单价,数量,单价*数量as 合计金额from haf (As 设置字段的别名) 2、Select …from …Where 筛选条件式 筛选条件式:①、字符串数据:select * from 成绩单Where 姓名='李明' ②、万用字符:select * from 成绩单Where 姓名like '李%' select * from 成绩单Where 姓名like '%李%' select * from 成绩单Where 姓名like '%李_' ③、特殊的条件式: ⑴= / > / < / <> / >= / <= ⑵AND(逻辑与) OR(逻辑或) NOT(逻辑非) ⑶Where 字段名称in(值一,值二) ⑷Where 字段名称Is Null / Where 字段名称Is Not Null 3、Select …from …group by 字段 SQL函数: SELECT sex,count(id) as women from `user` group by 'sex'; 函数名描述函数名描述 AVG平均值Count计数 MAX最大值MIN最小值 Sum求和

ACCESS执行SQL语句

请问大家: 如何用一个按钮执行写出来的SQL语句? 我的目的是用一个按钮执行sql语句生成一个新表,执行完了之后给个提示信息(已经生成新表).下面是我的SQL语句. SELECT id AS 序号, part AS partNo, (select qty from b where part=a.part) AS QTY INTO 新表 FROM a WHERE ID BETWEEN 1 AND 170; 那位老大给个详细点的步骤,因为俺是菜鸟!!! 还有一个问题,我现在做了一个查询窗体,打印的时候他把整个窗口都打印出来,请问只如何打印查询的结果(也就是子窗体中的数据). docmd.runsql "SELECT id AS 序号, part AS partNo, (select qty from b where part=a.part) AS QTY INTO 新表 FROM a WHERE ID BETWEEN 1 AND 170" CurrentDb.Execute "SELECT id AS 序号, part AS partNo, (select qty from b where part=a.part) AS QTY INTO 新表 FROM a WHERE ID BETWEEN 1 AND 170;" 做一个报表用以下命令打开报表 DoCmd.OpenReport strReport, acViewPreview, , FiltStr 'strreport 报表名称 'acViewPreview 打印报表 'FiltStr 不带where的where语句.即你查询出来的数据的依据.

ACCESS数据库常用SQL语句

ACCESS 数据库常用SQL 语句 SELECT 语句 指示 Microsoft Jet 数据库引擎从数据库返回一组记录信息。 语法 SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]} FROM tableexpression [, ...] [IN externaldatabase] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION] SELECT 语句包含以下部分: 部分 说明 predicate 这些谓词之一:ALL 、DISTINCT 、DISTINCTROW 或 TOP 。可以使用谓词来限定返回记录的数量。如果没有指定谓词,默认值为 ALL 。 * 指定选择所指定的表的所有字段。 table 表的名称,该表包含了其记录被选择的字段。 field1,field2 字段名,这些字段包含了要检索的数据。如果包括多个字段,将按它们的排列顺序对其进行检索。 alias1, alias2 用作列标题的名称,不是 table 中的原始列名。 tableexpression 其中包含要检索的数据的表的名称。 externaldatabase 如果 tableexpression 中的表不在当前数据库中,则使用该 参数指定该数据库名。 说明 若要执行此项操作,Microsoft? Jet 数据库引擎会搜索指定的表,并提取出选定的列,再选择出符合条件的列,然后按指定的顺序对得到的行进行排序或分组。 SELECT 语句不会更改数据库中的数据。 SELECT 通常是 SQL 语句中的第一个词。大多数 SQL 语句是 SELECT 或 SELECT...INTO 语句。

sql基础语句

掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。 练掌握SQL是数据库用户的宝贵财富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。 在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。 SQL中有四种基本的DML操作:INSERT,SELECT,UPDA TE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。 INSERT语句 用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句: INSERT INTO EMPLOYEES V ALUES ('Smith','John','1980-06-10', 'Los Angles',16,45000); 通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。 我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。 如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。 回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。 同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。 对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近,请你最好还是使用四位来表示年份。

50个常用的SQL语句练习

基本信息Student(`S#`,Sname,Sage,Ssex) 学生表 Course(`C#`,Cname,`T#`) 课程表 SC(`S#`,`C#`,score) 成绩表 Teacher(`T#`,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.`S#` from (select `S#`,score from SC where `C#`='001') a,(select `S#`,score from SC where `C#`='002') b where a.score>b.score and a.`S#`=b.`S#`; ↑一张表中存在多对多情况的 2、查询平均成绩大于60分的同学的学号和平均成绩; 答案一:select `S#`,avg(score) from sc group by `S#` having avg(score) >60; ↑一对多,对组进行筛选 答案二:SELECT s ,scr FROM (SELECT sc.`S#` s,AVG(sc.`score`) scr FROM sc GROUP BY sc.`S#`) rs WHERE rs.scr>60 ORDER BY rs.scr DESC ↑嵌套查询可能影响效率 3、查询所有同学的学号、姓名、选课数、总成绩; 答案一:select Student.`S#`,Student.Sname,count(`C#`),sum(score) from Student left Outer join SC on Student.`S#`=SC.`S#` group by Student.`S#`,Sname ↑如果学生没有选课,仍然能查出,显示总分null(边界情况) 答案二:SELECT student.`S#`,student.`Sname`,COUNT(sc.`score`) 选课数,SUM(sc.`score`) 总分FROM Student,sc WHERE student.`S#`=sc.`S#` GROUP BY sc.`S#` ↑如果学生没有选课,sc表中没有他的学号,就查不出该学生,有缺陷! 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.`S#`,Student.Sname from Student where `S#` not in (select distinct(SC.`S#`) from SC,Course,Teacher where SC.`C#`=Course.`C#` and Teacher.`T#`=Course.`T#` and Teacher.Tname='叶平'); ↑反面思考Step1:先找学过叶平老师课的学生学号,三表联合查询 Step2:在用not in 选出没学过的 Step3:distinct以防叶平老师教多节课;否则若某同学的几节课都由叶平教,学号就会出现重复 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select Student.`S#`,Student.Sname from Student,SC where Student.`S#`=SC.`S#` and SC.`C#`='001'and exists( Select * from SC as SC_2 where SC_2.`S#`=SC.`S#` and SC_2.`C#`='002' ); ↑注意目标字段`S#`关联 exists subquery 可以用in subquery代替,如下 select Student.`S#`,Student.Sname from Student,Sc where Student.`S#`=SC.`S#` and SC.`C#`='001'and sc.`s#` in ( select sc_2.`s#` from sc as sc_2 where sc_2.`c#`='002' ); ↑不同之处,in subquery此处就不需要关联了

Microsoft Access数据库中SQL语句大全

ACCESS数据库的SQL语句教学引子:如何找到ACCESS数据库的SQL视图: 1)单击下图左侧的 : 2)单击上图顶部的 ,弹出如下图对话框: 5)单击“关闭”,此时在菜单中的文件菜单下面出现一个SQL的下拉框

;6)在“SQL”下拉框中选择如下图所示中的“SQL视图即可”。 1、查询所有记录:Select *通常用于快速查看表中的记录。当对表的结构无法确切记忆时,或要快速查看表中的记录时,使用Select *是很方便的。 use 企业销售管理系统 Select * from 职工 2、投影查询:很多时候并不需要将所有列的数据都显示出来。投影查询就是允许用户显示所需要的列。假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。 Select 职工号,姓名,工资 from 职工 在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把姓名放到第一列,则代码如下: Select姓名, 职工号,工资 from 职工 3、条件查询:显示wh1或wh2仓库、性别不为女、工资在1300~2100之间的职工信息。具体操作如下: Select * from职工号 where(仓库号=’wh1’ or仓库号=’wh2’) And not 性别=’女’ and 工资>=1300 and 工资工资<=2100 在这里一定要注意,(仓库号=’wh1’ or仓库号=’wh2’)一定要加括号,否则就不是原题的意思。

4、谓词In查询:在查找特定条件的数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条的记录。但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。另外,在后面讲解的嵌套查询中,也必须使用In查询。下面以显示zg1、zg2、zg11、zg15的订购单信息为例具体讲解一下。 使用Or运算符 Select * from订购单 where 职工号=’zg1’ or职工号=’zg2’’) Or职工号=’zg11’ or职工号=’zg15’ 使用谓词In Use 企业销售管理系统 Select * from订购单 where 职工号 in(’zg1’, ’zg2’, ’zg11’, ’zg15’)在Select语句中,还支持In与Not结合使用。假设显示职工号不为zg1, zg2, zg11, zg15的订购单信息,具体代码如下: 使用Or运算符 Select * from订购单 where 职工号!=’zg1’ or职工号!=’zg2’’) Or职工号!=’zg11’ or职工号!=’zg15’ 使用谓词In Use 企业销售管理系统 Select * from订购单 where 职工号 not in(’zg1’, ’zg2’, ’zg11’, ’zg15’) 5、模糊Like查询:有的时候,我们不清楚所要查询的信息,如显示职工信息,但不能确定该职工的姓名,只知道他姓名中含有“王”字,那该如何查找呢?SQL中提供了Like关键字,使用Like进行了查询时,还要指定通配符。 通配符及其含义 通配符含义 %包含0个或多个字符 _(下画 包含一个字符 线) []指定范围(如[a-z] [^]不属于指定范围([^a-z]) 在SQL语句中,还支持Like与Not结合使用。假设显示姓名中不含 有“王”字的职工信息,具体代码如下:

相关主题
文本预览
相关文档 最新文档