仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 764|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:ACCESS中利用SQL语句应注重的中央及几点...

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:46:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。access|技能|语句ACCESS中利用SQL语句应注重的中央及几点技能
援用:Fred

以下SQL语句在ACCESSXP的查询中测试经由过程
建表:
CreateTableTab1(
IDCounter,
Namestring,
Ageinteger,
[Date]DateTime);
技能:
自增字段用Counter声明.
字段名为关头字的字段用方括号[]括起来,数字作为字段名也可行.

创建索引:
上面的语句在Tab1的Date列上创建可反复索引
CreateIndexiDateONTab1([Date]);
完成后ACCESS中字段Date索引属性显现为-有(有反复).
上面的语句在Tab1的Name列上创建不成反复索引
CreateUniqueIndexiNameONTab1(Name);
完成后ACCESS中字段Name索引属性显现为-有(无反复).
上面的语句删除方才创建的两个索引
DropIndexiDateONTab1;
DropIndexiNameONTab1;

ACCESS与SQLSERVER中的UPDATE语句对照:
SQLSERVER中更新多表的UPDATE语句:
UPDATETab1
SETa.Name=b.Name
FROMTab1a,Tab2b
WHEREa.ID=b.ID;
一样功效的SQL语句在ACCESS中应当是
UPDATETab1a,Tab2b
SETa.Name=b.Name
WHEREa.ID=b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,一切援用的表都列在UPDATE关头字后.
上例中假如Tab2能够不是一个表,而是一个查询,例:
UPDATETab1a,(SelectID,NameFromTab2)b
SETa.Name=b.Name
WHEREa.ID=b.ID;

会见多个分歧的ACCESS数据库-在SQL中利用In子句:
Selecta.*,b.*FromTab1a,Tab2bIndb2.mdbWherea.ID=b.ID;
下面的SQL语句查询出以后数据库中Tab1和db2.mdb(以后文件夹中)中Tab2以ID为联系关系的一切纪录.
弱点-内部数据库不克不及带暗码.
增补:看到ugvanxk在一贴中的回复,能够用
Select*from[c:aaa.mdb;pwd=1111].table1;
ACCESSXP测试经由过程

在ACCESS中会见别的ODBC数据源
下例在ACCESS中查询SQLSERVER中的数据
SELECT*FROMTab1IN[ODBC]
[ODBC;Driver=SQLServer;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
内部数据源毗连属性的完全参数是:
[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]
个中的DRIVER=driver能够在注册表中的
HKEY_LOCAL_MACHINEOFTWAREODBCODBCINST.INI
中找到

ACCESS撑持子查询

ACCESS撑持外毗连,但不包含完全内部连接,如撑持
LEFTJOIN或RIGHTJOIN
但不撑持
FULLOUTERJOIN或FULLJOIN

ACCESS中的日期查询
注重:ACCESS中的日期工夫分开符是#而不是引号
Select*FromTab1Where[Date]>#2002-1-1#;
在DELPHI中我如许用
SQL.Add(Format(
Select*FromTab1Where[Date]>#%s#;,
[DateToStr(Date)]));

ACCESS中的字符串能够用双引号分开,但SQLSERVER不认,以是为了迁徙便利和兼容,
倡议用单引号作为字符串分开符.


ACCESS的束缚

在JETSQL参考中关于束缚的内容不敷具体,能够参考SQLServer的联机丛书

上面的SQL为a表的Name字段增添非空束缚
ALTERTABLEaADDCONSTRAINTa_checknameCHECK(Not[Name]isNull)
注重:每个束缚都是一个工具,都有一个名字

上面的语句把id列设置为主键
AlterTable[表]AddPrimaryKey(Id)
上面的语句把id列改成主动编号范例,而且设置为主键
AlterTable[表]Alter[id]CounterConstraint[表_p]PrimaryKey

增加复合主键
上面的SQL为tb_demo表增加复合主键(id,id2).
AlterTabletb_demo
AddConstrainttb_demo_pk
PrimaryKey(id,id2)
你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb??而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的路径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 23:09:48 来自手机 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-28 15:18:56 来自手机 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
若相依 该用户已被删除
地板
发表于 2015-2-5 16:57:54 | 只看该作者
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
乐观 该用户已被删除
5#
发表于 2015-2-12 23:08:45 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
分手快乐 该用户已被删除
6#
发表于 2015-3-3 11:01:33 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-11 10:16:18 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
小魔女 该用户已被删除
8#
发表于 2015-3-18 04:47:09 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
因胸联盟 该用户已被删除
9#
发表于 2015-3-25 12:08:23 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 15:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表