文档视界 最新最全的文档下载
当前位置:文档视界 › (完整版)ACCESS数据库中常见的SQL语句汇总教程

(完整版)ACCESS数据库中常见的SQL语句汇总教程

(完整版)ACCESS数据库中常见的SQL语句汇总教程
(完整版)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语句中,还支持Like与Not结合使用。假设显示姓名中不含有“王”字的职工信息,具体代码如下:

Select * from 职工 where 姓名 not like'王%'

在该例中,如果你知道姓名中含有“王”字,并且姓名只有两个字,那么可以进一步缩小查找范围,具体代码如下:

Select * from 职工 where 姓名 not like'王_'

这样就可以查找到姓名中只有两个字,并且姓为“王”的职工信息。

6、空值NULL查询:在SQL语句中使用IS NULL来进行是否为空的判断。下面以显示性别为空的职工信息为例具体讲解一下。

Select * from 职工 where 性别 is null

假设显示性别不为空的职工信息,具体代码如下:

Select * from 职工 where 性别 is not null

7、限制范围Between…And查询:在数据医疗队引擎查询中,限制范围也是经常使用的一个条件。当然可以使用大于等于号、小于等于号和And运算符三者来完成范围的限制,但使用Between…And结构,会使SQL更清楚。下面以显示工资在1300~1900之间的职工信息为例具体讲解一下。

Between…And语句

Select * from 职工 where 工资 Between 1300 And 1900

大于等于号、小于等于号与And运算符

Select * from 职工 where 工资>=1300 And 工资<=1900

在SQL语句中,还支持Between…And与Not结合使用。假设显示工资不在1300~1900之间的职工信息,具体代码如下:

Between…And语句

Select * from 职工 where 工资 not Between 1300 And 1900

大于等于号、小于等于号与And运算符

Select * from 职工 where 工资<=1300 And 工资>=1900

8、消除重复字段数据Distinct查询:在SQL投影查询中,可能会有许多重复的数据,使用关键字Distinct就可以从结果集中除去重复的数据。下面以显示职工的工资信息为例具体讲解一下:

显示有重复的数据

Select 工资 from 职工

显示无重复的数据

Select Distinct工资 from 职工

9、单表嵌套查询:就是外层Select语句与内层Select语句都来源于同一张表。下面以显示仓库面积大于wh1仓库面积的仓库信息为例来讲解一下。

首先利用Select语句求出wh1仓库的仓库面积,然后再显示面积大于该值的仓库信息。

Select * from 仓库 where 面积>(select 面积 from 仓库 where 仓库号='wh1')

嵌套查询中也可以带有逻辑运算符、谓词In、Like、Between…And结构。假设显示wh1或wh2仓库的工资不大于职工zg16工资的职工信息,并要求职工姓名不含有“平”字。

首先利用Select语句求出职工zg16的工资,然后再对姓名进行模糊查询。

Select * from 职工 where 工资<=(select 工资 from 职工 where 职工号='zg16') and 姓名 not like '%平%' and 仓库号 in('wh1', 'wh2')

10、多表嵌套查询:多表嵌套查询就是外层Select语句与内层Select语句来源于不同的表,但表之间要存在关系。这也是SQL语句中最重要的查询。下面以显示北京地区的职工信息为例来讲解一下。

首先利用Select语句求出北京地区的仓库号,然后利用仓库号再显示职工信息。

use 企业销售管理系统

Select * from 职工 where 仓库号 in(select 仓库号 from where 城市='北京')

不仅可以实现两个表的嵌套,还可以实现多个表的嵌套,假设显示北京地区的职工的订购单信息。

首先利用Select语句得到北京地区的仓库号,然后利用得到的仓库号得到该仓库中的职工号,再利用得到的职工号得到职工的订购单信息。

Select * from 订购单 where 职工号 in(Select 职工号 from 职工 where 仓库号 in (select 仓库号 from 仓库 where 城市='北京'))

多表嵌套查询中也可以带有逻辑运算符、谓词In、Like、Between、And结构。假设显示北京地区的职工的订购单信息,并且职工的工资大于1200,订购日期为2003年9月3日~2006年1月1日。

Select * from 订购单 where 职工号 in(Select 职工号 from 职工 where 工资>1200 a nd 仓库号 in(select 仓库号 from 仓库 where 城市='北京')) and 订购日期 between '200 3-09-03' and '2006-01-01'

11、单级排序查询:排序的关键字是Order by,默认状态下是升序,关键字是Asc。降序排列的关键字是Desc。排序字段可以是数值型,也可以是字符型、日期时间型。下面以按工资从高到低显示职工信息为例来讲解一下。

Select * from 职工Order by 工资 desc

在排序查询中还可以带有逻辑运算符、谓词In、Like、Between、And结构。假设显示wh1或wh2仓库的,工资不大于职工zg16工资的职工信息,并要求职工姓名不含有“平”字,按工资从低到高显示。

首先利用Select语句求出职工zg16的工资,然后再对姓名进行模糊查询,最后再排序。

Select * from 职工 where 工资<=(Select 工资 from 职工 where 职工号='zg16') and 姓名 not like '%平%' and仓库号 in ('wh1','wh2') order by 工资

12、多级排序查询:按照一列进行排序后,如果该列有重复的记录值,则重复记录值这部分就没有进行有效的排序,这就需要再附加一个字段,作为第二次排序的标准,对没有排开的记录进行再排列。下面以按工资从高到低显示职工信息为例来讲解一下。单级排序,按工资降序。

Select * from 职工Order by 工资 desc

多级排序,先按工资降序,再按职工ID升序。

Select * from 职工Order by 工资 desc,职工 ID asc

13、与别名一起使用的统计函数:在实际编程中,有时候需要知道所有记录某项值的总和、平均值、最大值等,这时就要用到统计函数查询。常用的统计函数共有6个。

统计函数及其意义

在使用统计函数时,还要注意COUNT()、SUM()、AVG()可以使用DISTINCT关键字,以在计算机中不包含重复的行。而对于MAX()、MIN()、COUNT(*),由于不会改变其结果,因此没有必要使用DISTINCT。

利用Select语句显示统计值是没有列名的,下面以显示职工的最大值、最小值、工资总和、平均工资、职工人数为例来讲解一下。

Select max(工资),min(工资), SUM(工资),avg(工资),count(*) from 职工

这时会发现统计值没有列名,现在来给统计字段添加列名。

Select max(工资)as 最大工资,min(工资) as最小工资, SUM(工资)as 工资总和,avg(工资)as 平均工资,count(*) as 职工人数 from 职工

在统计函数中还可以加条件,假设显示工资大于1500的职工的最大值、最小值、工资总和、平均工资、职工人数信息。

Select max(工资)as 最大工资,min(工资) as最小工资, SUM(工资)as 工资总和,avg(工资)as 平均工资,count(*) as 职工人数 from 职工 where 工资>1500

14、带有统计函数的嵌套查询:还可以利用统计函数得到的数据作为Select查询语句的条件进行查询。下面以显示工资大于所有职工平均值的职工信息为例来讲解一下。

Select * from 职工where 工资>(select avg(工资) from 职工)

在统计函数查询中可以带有比较运算符、逻辑运算符、In、Between…And等。假设显示工资大于wh1或wh2仓库中职工平均工资,并且职工姓名不含有“亮”字的职工信息。

Select * from 职工where 工资>(select avg(工资) from 职工 where 仓库号='wh1' o r 仓库号='wh2') and 姓名 not like '%亮%'

15、统计函数字段显示在表字段中及运算字段:如果在职工表中添加一个职工平均工资值字段,这就对实际编程有很大的意义,即可以利用平均字段进行运算,大大提高编程速度。下面以在职工表中添加平均工资为例为讲解一下。

Select 职工.*,(select avg(工资) from 职工) as 平均工资 from 职工

在职工表中添加了一个平均工资字段,即在Select查询字段中添加了一个Select子查询。

在Select查询中,还可以计算出每名职工的工资与所有职工平均工资之差,具体操作如下:Select 职工.*,(select avg(工资) from 职工) as 平均工资,工资-(select avg(工资) from 职工) as 平均工资的差 from 职工

16、分组查询:使用GROUPBY分组查询,要注意分组的标准一定要有意义,如显示不同仓库的平均工资,显示不同职工的最大订单金额等。如果显示不同职工的平均工资那就没有意义了。下面显示不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息为例来讲解一下。

Select 仓库号,max(工资)as 最大工资, min(工资)as 最小工资, sum(工资)as 工资总和, avg(工资)as 平均工资, count(*)as 职工人数 from 职工 group by 仓库号

在分组查询中还可以带有逻辑运算符、谓词In、Like、Between…And结构。假设显示工资大于zg1职工工资的不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息。

首先利用Select语句求出职工zg1的工资,然后再分组显示统计信息。

Select 仓库号,max(工资)as 最大工资, min(工资)as 最小工资, sum(工资)as 工资总和, avg(工资)as 平均工资, count(*)as 职工人数 from 职工 where 工资>(Select 工资 from 职工 where 职工号='zg1') group by 仓库号

17、带有Having的分组查询:分组以前的条件,要用Where关键字,而分组之后的条件则要使用Having关键字。下面以显示不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息,但要求该仓库平均工资大于1760为例来讲解一下。

Select 仓库号,max(工资)as 最大工资, min(工资)as 最小工资, sum(工资)as 工资总和, avg(工资)as 平均工资, count(*)as 职工人数 from 职工 group by 仓库号 ha ving avg(工资)>1760

在分组查询的Having条件中还可以带有逻辑运算符、谓词In、Like、Between…And结构。假设显示不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息,但要求该仓库的平均工资大于1760,最大工资与最小工资之差在380~800之间。

Select 仓库号,max(工资)as 最大工资, min(工资)as 最小工资, sum(工资)as 工资总和, avg(工资)as 平均工资, count(*)as 职工人数 from 职工 group by 仓库号 ha ving avg(工资)>1760 and max(工资)-min(工资) between 380 and 800

18、带有分组的嵌套查询:还可以利用分组得到的数据作为Select查询语句的条件进行查询。下面以显示职工所在仓库的最大工资与最小工资之差在380~800之间的职工所在仓库信息为例为讲解一下。

先求出职工所在仓库的最大工资与最小工资之差在380~800之间的职工所在的仓库号,再利用这个仓库号显示仓库信息。

Select * from 仓库,where 仓库号 in(Select 仓库号 from 职工 group by 仓库号 hav ing d max(工资)-min(工资) between 380 and 800

19、内外层嵌套实现分组功能:利用group by分组显示统计字段信息,有很多字段不能显示。如显示不同仓库的平均工资信息,在这个查询中只能显示仓库号,不能显示职工号及职工的工资。因为不同仓库的平均工资,有几个仓库就显示几条平均工资,而每个仓库中的职工则有很多。

下面以显示不同职工经手订购单金额最大的订单信息为例来讲解一下。

在这里应该边求出每名职工订购单金额的最大值,边显示该职工所对应的这条订购单信息。具体代码如下:

Select a.* from 订购单 a where 金额=( select max(金额) from 订购单 where 职工

号=a.职工号)

注意:上面语句中的订购单 a是给这个订购单起的一个别名,大家可以把它看成就其实就是订购单的一张复制的表,在这里运用它只是为了使内外层的嵌套更清晰、更容易理解。

20、分组查询字段显示在表字段中及运算字段:如果在职工表中添加职工所在仓库的平均工资值字段,这就对实际编程有很大的意义,即可以利用平均字段进行运算,大大提高编程速度。下面以在职工表中添加职工所在的仓库的平均工资字段为例来讲解一下。

Select a.* ,(Select avg(工资) from 职工 where 仓库号=a.仓库号) as 所在仓库的平均工资 from 职工 a

在Select查询中,还可以计算出每名职工的工资与职工所在仓库的平均工资之差,具体操作如下:

Select a.* ,(Select avg(工资) from 职工 where 仓库号=a.仓库号) as 所在仓库的平均工资,工资-(Select avg(工资) from 职工 where 仓库号=a.仓库号) as 所在仓库的平均工资之差 from 职工 a

21、Exists谓词查询:其实In就是谓词查询,还有谓词Exists与Exists,这两个谓词实现的功能是相同的,只是写法不同。In多用于嵌套子查询语句中,而Exists多用于判断Sele ct语句是否返回查询结果。常用量词有Any、All和Some是同义词。在进行比较运算时,只要子查询中有一行能使结果为真,结果就为真。而All则要求子查询中所有行都使结果为真时,结果才为真。下面以显示那些仓库中还没有职工的仓库信息为例,讲解一下In谓词与Exists 谓词在代码上的不同。

用Exists谓词实现:

Select * from 仓库 where not Exists(Select * from职工 where 仓库号=仓库.仓库号)

用In谓词实现:

Select * from 仓库 where 仓库号 not in(Select 仓库号 from 职工)

22、Any量词查询:Any量词查询,在进行比较运算时,只要子查询中有一行能使结果为真,则结果即为真。下面就以显示工资大于等于wh2仓库中任一名职工工资的职工信息为例,讲解一下Any量词的应用。

用Any量词实现:

Select * from 职工 where 工资>=any(Select 工资 from 职工 where 仓库号='wh2')使用统计函数实现:

Select * from 职工 where 工资>=(Select min(工资) from 职工 where 仓库号='wh2')

23、All量词查询:All量词查询,要求子查询中所有行都使结果为真时,结果才为真。下面就以显示工资大于等于wh1仓库中所有职工工资的职工信息为例,讲解一下All量词的应用。

用Any量词实现:

Select * from 职工 where 工资>=All(Select 工资 from 职工 where 仓库号='wh1')使用统计函数实现:

Select * from 职工 where 工资>=(Select MAX(工资)from 职工 where 仓库号='wh1')前面讲解的量词查询都可以用统计函数代替,但有些查询是不能用统计函数代替的。下面以显示工资大于所有不同仓库的平均工资的职工信息为例为讲解一下。

Select * from 职工 where 工资>all(Select avg(工资)from 职工 group by 仓库号)该题用统计函数就无法解决。

24、显示部分记录的Top查询:在编程中,有时只需显示满足条件的前几条记录,这时就可以使用Top关键字。可以直接使用Top数字,显示指定条数记录;也可以使用Top数字Perc ent,显示所有满足条件记录的前百分之几条记录。

下面以显示工资最高的前三条职工信息为例来讲解一下。

Select top3 * from 职工 order by 工资 desc

25、保存查询:利用Into语句可以把查询的结果保存成一张新表。下面就以备份“职工”表为例讲解一下保存查询。

Use 企业销售管理系统

Select * into 职工备份 from 职工

这样就生成一张新表,表名为“职工备份”。

26、集合的并运算:SQL支持集合的并运算(Union),即可以将两个Selec语句的查询结果通过并运算合并成一个查询结果。为了进行并运算,要求这样的两个查询结果具有相同的字段个数,并且对应的字段的值要出自同一个值域,即具有相同的数据类型和取值范围。

Select * from 仓库 where 城市='北京'

Union

Select * from 仓库 where 城市='上海'

27、集合的交运算:SQL支持集合的交运算(Intersect),即可以将两个Selec语句的查询结果通过交运算合并成一个查询结果。为了进行交运算,要求这样的两个查询结果具有相同的字段个数,并且对应的字段的值要出自同一个值域,即具有相同的数据类型和取值范围。

Select 仓库号 from 仓库

Intersect

Select 仓库号 from 职工

注意它们对集合的差运算不支持。

28、多表连接查询:多表连接查询就是将多个表中的数据结合到一起的查询,即连接操作可以在一个Select语句中完成从我个表中查找和处理数据。使用连接的列必须是可连接的,即它们具有相同的数据类型、相同的意义。使用连接的列,列名可以相同,也可以不同。

29、笛卡儿积:有的时候,如果连接条件没有设置好,或者没有设置连接条件,则结果将包含太多的行,这就是由笛卡儿积造成的。从原理上来讲,连接首先将形成表的笛卡儿积,即形成用于连接的表中所有的行的组合。下面以仓库表与职工表连接为例为讲解一下。

Select * from 职工, 仓库

这是从两张表中显示所有字段,所以字段有重复,并且产生了90条记录,原因是仓库表中有5条记录,职工表有18条记录,所以连接的结果是18×5=90条记录。用于连接的表越多,则笛卡儿积的结果将越大。

30、多表连接:在进行多表连接时,一定要注意连接条件,下面以仓库表与职工表连接为例来讲解一下多表连接。

Select * from 职工,仓库 where 职工.仓库号=仓库.仓库号

这时显示的记录就没有那么多了,只显示18条记录,并且发现两张表的仓库号是相对应的。

假设显示工资大于1500,面积大于600的城市与姓名信息。

Select 城市,姓名 * from 职工,仓库 where 职工.仓库号=仓库.仓库号 and 工资>1500 and 面积>600

31、超连接查询:超连接查询也是连接查询,所以必须有两张或两张以上的表。超连接查询共有4种:内连接查询、左连接查询、右连接查询、全连接查询。使用超连接查询不仅可以把满足条件的记录显示出来,还可以把一部分不满足条件的记录以NULL显示出来。

1)内连接查询:只有满足连接条件的记录才出现在查询结果集中。下面以显示面积大于6 00的仓库号、职工号、城市、面积、工资信息为例为讲解一下内连接:

超连接:

Select 仓库.仓库号,职工号,城市,面积,工资 from 仓库 inner join 职工 on 职工.仓

库号=仓库.仓库号 and 面积>600

普通连接:

Select 仓库.仓库号,职工号,城市,面积,工资 from 职工,仓库 where 职工.仓库号=仓库.仓库号 and 面积>600

2)左连接查询:除满足连接条件的记录显示外,第一张表中不满足条件的记录也出现在查询结果集中。下面以显示面积大于600的仓库号、职工号、城市、面积、工资信息为例为讲解一下左连接。

Select 仓库.仓库号,职工号,城市,面积,工资 from 仓库 left join 职工 on 职工.仓库号=仓库.仓库号 and 面积>600

3)右连接查询:除满足连接条件的记录显示外,第二张表中不满足条件的记录也出现

在查询结果集中。下面以显示面积大于600的仓库号、职工号、城市、面积、工资信息为例为讲解一下右连接。

Select 仓库.仓库号,职工号,城市,面积,工资 from 仓库 right join 职工 on 职工.仓

库号=仓库.仓库号 and 面积>600

4)全连接查询:除满足连接条件的记录显示外,两张表中不满足条件的记录也出现

在查询结果集中。下面以显示面积大于600的仓库号、职工号、城市、面积、工资信息为例为讲解一下全连接。

Select 仓库.仓库号,职工号,城市,面积,工资 from 仓库 full join 职工 on 职工.仓库号=仓库.仓库号 and 面积>600

5)多表超连接查询:前面讲解了两个表的超连接,那么如果是3张表或更多张表该如何实现超链接呢?下面以显示面积大于600的仓库号、职工号、城市、面积、工资、金额信息为例为讲解一下多表超连接。要显示的字段信息来源于3张表,仓库表、职工表、订购单表,这里实现仓库表与职工表的左连接,职工表与订购单表的右连接。

Select 仓库.仓库号,职工号,城市,面积,工资,金额 from 仓库 left join 职工 on 职工.仓库号=仓库.仓库号 right join 订购单 on 职工.职工号=订购单.职工号 and 面积>600

32、Insert插入语句:向数据库表中插入数据是最常用的功能:

1)指定所有列:

Insert into 仓库(仓库号,城市,面积,创建时间) values ('wh6','郑州','800','2005-1 2-01')

按下键盘上的F5键,会显示(1行受影响),这表示已成功地插入一条记录。再在数据库引擎查询文档中输入“Select * from 仓库”,然后按下键盘上的F5键,就可以执行该SQL语句,这样就可以在查询结果上看到你插入的记录。在这里要注意,仓库ID是自动编号,所以不能插入。其实上面的代码还可以省略表后面的字段,这样也可以成功地插入记录。

Insert into 仓库 values ('wh6','郑州','800','2005-12-01')

2)指定部分列:

下面以向仓库表中添加一条记录为例来讲解一下指定部分列。

Insert into 仓库(仓库号,面积) values ('wh7',800)

上述代码也可以这样来写:

Insert into 仓库 values ('wh7',null,800,null)

Insert into 仓库(仓库号,城市,面积,创建时间) values ('wh7',null,800,nul)

3)带有子查询的插入语句:使用带有子查询的插入语句,首先要注意两个表的结构相同。下面还是用一个实例来讲解一下。

首先创建一张与仓库表结构相同的空表,然后在数据库引擎查询文档中输入如下代码:

Select * into 仓库 blank from 仓库 where 面积<0

按下键盘上的F5键,会显示(0行受影响),这表示已成功地插入一条记录。再在数据库引擎查询文档中输入“Select * from 仓库blank”,然后按下键盘上的F5键,就可以执行该S QL语句,这样就产生了一张与仓库表结构相同的空表。

下面就可以利用带有子查询的插入语句向仓库blank中插入记录了。

Insert into 仓库 blank(仓库号,城市,面积,创建时间) select 仓库号,城市,面积,创建时间 from 仓库 where 面积>600

按下键盘上的F5键,会显示(6行受影响),这表示已成功地插入6行记录。再在数据库引擎查询文档中输入“Select * from 仓库blank”,然后按下键盘上的F5键,就可以执行该S QL语句,这样就可以利用Insert语句一次向表中插入多条记录。

33、Update更新语句:向数据库表中添加记录后,可能需要对数据库进行修改。

1)修改所有记录:

下面以为所有仓库的面积都增加100为例为讲解一个修改所有记录。

Update 仓库 set 面积=面积+100

2)指定条件的更新语句:

下面以把城市在上海或北京的仓库的面积增加100为例,来讲解一下指定条件的更新语句。

Use 企业销售管理系统

Update 仓库 set 面积=面积+100 where 城市='上海' or 城市='北京'

34、Delete删除语句:与添加记录一样,删除记录也是数据库中一个重要的功能。

Delete语句仅仅删除数据库表中的记录,不会删除表。

Delete语句不能删除单个列的值,而是删除整个记录。

关键字Where可以有,也可以没有。如果不加条件,则删除整张表的所有记录;如果有条件,则删除表中满足条件的记录。

1)指定条件的删除语句:

下面以删除仓库blank表中仓库面积大于900的记录为例,来讲解一下指定条件的删除语句。

Delete from 仓库 blank 面积>900

2)删除表中所有记录:

下面以删除仓库blank表中所有记录为例,来讲解一下删除表中所有记录。

Delete from 仓库 blank

truncate from 仓库 blank

truncate语句与Delete语句之间是有区别的,Delete语句实际上是对表中每一个记录执行删除操作,而数据库执行随之可能产生的所有任务,如触发器;truncate语句仅仅把所有记录一次删除,将会忽略定义的触发器,因此执行速度比Delete语句要快。由于truncate语句不处理删除引起的其他事件,因此使用它可能产生数据库完整性问题,所以对于有依赖关系的表,最好使用Delete语句删除。

常用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.docsj.com/doc/9b9615076.html,O=https://www.docsj.com/doc/9b9615076.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.docsj.com/doc/9b9615076.html,O=https://www.docsj.com/doc/9b9615076.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.docsj.com/doc/9b9615076.html, = https://www.docsj.com/doc/9b9615076.html, FROM Tab1 a,Tab2 b Where a.ID = b.ID; ?同样功能的SQL语句在Access中应该是:Update Tab1 a,Tab2 b SET https://www.docsj.com/doc/9b9615076.html, = https://www.docsj.com/doc/9b9615076.html, Where a.ID = b.ID; ?即:ACCESS中的Update语句没有FROM子句,所有引用的表都列在Update关键字后。 ?上例中如果Tab2可以不是一个表,而是一个查询,例: ?Update Tab1 a,(Select ID,Name From Tab2) b SET https://www.docsj.com/doc/9b9615076.html, = https://www.docsj.com/doc/9b9615076.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结合使用。假设显示姓名中不含 有“王”字的职工信息,具体代码如下:

相关文档
相关文档 最新文档