如何在Access中使用SQL语句

作者&投稿:雕依 (若有异议请与网页底部的电邮联系)
如何在R语言中使用SQL语句?~

R中还有一个有趣的sqldf包,它可以让你用SQL来操作dataframe,这种功能能让会R的人能练习SQL,会SQL的人能练习R,不得不感叹R语言的强大技能和神奇魅力。
当然也可以将R与外部数据库连接,直接在R中操作数据库,并生成最终结果,这也是一种可行的方法。在R中连接数据库需要安装其它的扩展包,根据连接方式不同我们有两种选择:一种是ODBC方式,需要安装RODBC包并安装ODBC驱动。另一种是DBI方式,可以根据已经安装的数据库类型来安装相应的驱动。因为后者保留了各数据库原本的特性,所以个人比较偏好用DBI连接方式。有下面这几种主要的包提供了DBI连接:RMySQL,RSQLite,ROracle,RPostgreSQL。由名字看得出它们分别对应了几种主流的数据库。
注:以上文字来自R-blogger—–《在R语言中使用SQL》
值得一提的是在运用sqldf包时可能要对R软件升级到3.1.0版以上,否则安装不会成功,这里简单介绍一种在Windows环境下对R软件自动升级的方法。
Windows上升级R语言:
install.packages("installr");
library(installr) #加载包
updateR()

之后选择“确定”就可以自动更新了
虽然在R语言中有很多优秀的函数如aggregate()和daply()可以对数据框统计,但sql功能强大,不仅能实现数据的清洗、统计、运算,还可以实现数据存储、控制、定义和调用。越来越多的公司在招聘的时候都要求数据分析师除了要掌握统计建模和数据挖掘的理论方法和编程能力外,还要求其具备使用sql的能力,楼主也在积极学习sql当中。
下面是我利用sqldf()完成的一些程序,虽然简单,但这是学习的第一步
> name<-c(rep('张三',1,3),rep('李四',3))
> subject<-c('数学','语文','英语','数学','语文','英语')
> score<-c(89,80,70,90,70,80)
> stuid<-c(1,1,1,2,2,2)
> stuscore<-data.frame(name,subject,score,stuid)
> library(sqldf)

1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
> sqldf('select name,sum(score) as allscore from stuscore group by name order by allscore')
name allscore
1 张三 239
2 李四 240

2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)
> sqldf('select name,stuid,sum(score) as allscore from stuscore group by name order by allscore')
name stuid allscore
1 张三 1 239
2 李四 2 240

3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)
> sqldf('select stuid,name,subject, max(score) as maxscore from stuscore group by stuid')
stuid name subject maxscore
1 1 张三 数学 89
2 2 李四 数学 90

4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
> sqldf('select stuid,name,subject, avg(score) as avgscore from stuscore group by stuid')
stuid name subject avgscore
1 1 张三 英语 79.66667
2 2 李四 英语 80.00000

5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)
> sqldf('select stuid,name,subject,max(score) as maxscore from stuscore group by subject order by stuid')
stuid name subject maxscore
1 1 张三 语文 80
2 2 李四 数学 90
3 2 李四 英语 80

8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)
> sqldf('select subject,avg(score) as avgscore from stuscore group by subject')
subject avgscore
1 数学 89.5
2 英语 75.0
3 语文 75.0

一、如何在Access中使用SQL语句
1、OFFICE 2000(及其后版本)的组件中的 Access支持使用简单的SQL语句对数据进行查询与更改。以OFFICE 2007为例(其它版本的具体操作稍有不同,操作思路基本一样)。
2、打开或新建一个Access文件,建立好一个表后,在切换“软件工具栏”,点【创建】进入创建工具栏,在工具栏中点击【查询设计】。
3、弹出【显示表】窗口,点击【关闭】将该窗口关掉。这时软件会进入【设计】工具栏,我们点击工具栏左侧的【SQL视图】。
4、【SQL视图】默认选择的是【设计视图】,我们在下拉菜单中选择【SQL视图】。在工具栏下方会自动打开一个查询窗口,在这里就可以输入查询用的SQL语句了。
5、我们输入一行标准的SQL查询语句,然后点击【运行】,SQL语句执行完成后,查询窗口会自动转换为表视图,以表格方式显示查询到的数据。
6、可以保存设计好的SQL查询,下回使用时可直接调用(双击对应的视图)。


二、备注提醒:
到目前为止,Access仅支持使用简单的SQL语句对数据进行查询与更改。
很多高级的SQL查询是不能完成的,比如定时任务、存储过程等等。

Sql语句用法如下代码:

  • Private Sub Command1_Click()

  • Dim sql As String

  • Dim l As Integer

  • Dim i As Integer

  • Dim fieldName() As String

  • sql = "select gyh_riqi,sum(shuju1) as hj from jishijilu where gyh_riqi='" & "1000-061210" & "' group by gyh_riqi"

  • cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\wd.mdb;Persist Security Info=False"

  • cn.Open

  • rs.CursorLocation = adUseClient

  • rs.Open sql, cn, adOpenDynamic, adLockOptimistic

  • Set DataGrid1.DataSource = rs

  • End Sub

    也可赋值给ADO数据控件的RecordSource属性:

  • Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\wd.mdb;Persist Security Info=False"

  • Adodc1.RecordSource = "select * from jishijilu where shijian like'%81120%' And gyh_riqi like'%10%'"

  • Adodc1.Refresh

  • Set DataCombo1.RowSource = Adodc1



在ACCESS中运用查询增加数据(SQ)L求助
答:INSERT INTO [总览]([字段二名 数值],[字段三名 文本] ) VALUES (123, "文本内容")ALTER TABLE [总览] ALTER COLUMN [编号] COUNTER(2411, 1)说明:按上面格式 添加其他字段内容 如果出错,关了重新打开再执行就行了 好象不要第三个查询命令 我的测试例[ACCESS 2003]:表名:tab1 字段:tid 自...

access数据库在sq视图中如何模糊查询数据表中的数据
答:应该是 select {字段名} from {数据表名} where 字段名 like '%上海%'条件中应该是某个字段内的值中包含上海,你写的是数据表名

从access导入MSSQL时总是出错的问题,急急急!!!
答:可以用sqlserver的数据导入工具导入数据,但要做必要的处理。access中的自动编号,不会自动转换SQL中的自动编号,只能转换为int型,要把它手工改成标识字段,种子为 1,把所有导入被sqlserver转化成的以n开头的字段类型的n去掉,如nvarchar->varchar.把需要有秒类型的日期字段 改成datatime类型(SQL会把所有...

各位大侠如何删除ACCESS表中重复记录,数据如图片所示,需要的是SQL语句...
答:1、对于第一种重复,比较容易解决,使用 select distinct * from tableName 就可以得到无重复记录的结果集。如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 复制代码 代码如下:select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp...

access数据库在sq视图中如何模糊查询数据表中的数据
答:应该是 select {字段名} from {数据表名} where 字段名 like '%上海%'条件中应该是某个字段内的值中包含上海,你写的是数据表名

access数据库随机显示问题
答:sq="SELECT TOP 10 [content] FROM [T1] ORDER BY rnd(-(id+" & rnd() & "))")用这个就可以实现用一条SQL得到Access数据库中的随机记录集!一定要记的在sql语句前加Randomize 楼主的问题:Randomize sql="select top 30 * from [web_list] order by rnd(-(web_id+" & rnd() & ")...

access查询表中的某个字段是否含有某个值
答:查询只能显示包含或不包含 1、你可以读取所有字段、然后判断值是否包含 王某某 2、写两个sql语句 一个 like '王%'另一个 not like '王%'建议你新增一个表,大概格式如下 问题id 员工id 是否阅读 当用户点击或标记已读的时候 向这个表写入一条记录 显示问题的时候去这个表里判断 ...

access 数据库怎样用UPDATA从一张表更新数据到另一张表?
答:贴出的更新语句有点小毛病,请更改如下:strSQ = "update A ,B set A.关机记录=B.关机记录,A.关机=B.关机 where A.序号 = B.序号;"更新多个字段,请遵循下面写法:update 目标表,源表 where 目标表.字段1=源表.源字段1,目标表.字段2=源表.源字段2,...目标表.字段n=源表.源字段n ...

请问asp 怎样调用access数据表中的某一段数据
答:< Set Conn = Server.CreateObject("ADODB.Connection")StrCnn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("yiguang.mdb") & ";"Conn.Open StrCnn > yiguang.mdb //你要调的表 < set rs=server.CreateObject("adodb.recordset")sq="select * from edu_c"r...

数据库 – 开发指南 – 如何使用SQL和SQ
答:1、打开sql2008,使用windows身份登录 2、登录后,右键选择“属性”。左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证模式”以启用混合登录模式 3、选择“连接”,勾选“允许远程连接此服务器”,然后点“确定”4、展开“安全性”,“登录名”;“sa”,右键选择“属性”5、左侧选择“...