爱飞 发表于 2015-1-16 22:39:45

MSSQL教程之关于ODBC数据源毗连文本

“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。odbc|数据|数据源关于ODBC数据源毗连文本

  在《内部数据库的毗连道理》一讲中我们说过,ODBC供应对多种数据库的撑持,如dBase、Access、MSSQLServer及Oracle,也就是说使用ODBC数据源中所供应的毗连代码,我们能够完成对多种数据库的毗连。以毗连Access数据库为例,ODBC数据源毗连文本的格局是:
  “Driver={数据库驱动程序};Dbq=数据库文件;”

  在以上毗连文本中,假如数据库跟程序在统一目次下,大概用变量DefaultDir指定了数据库地点目次,则数据库文件能够不必全路径名,以下便可:

  “ODBC;DBQ=MSAccess.mdb;Driver={MicrosoftAccessDriver(*.mdb)};”

  以下也可:

  “ODBC;DBQ=MSAccess.mdb;DefaultDir=d:Downloadse21;Driver={MicrosoftAccessDriver(*.mdb)};”

  假如数据库跟程序不在统一目次下,大概没有效变量DefaultDir指定命据库地点目次,则数据库文件必要用全路径名,以下:

  “ODBC;DBQ=E:QuakeIIIArenaMSAccess.mdb;Driver={MicrosoftAccessDriver(*.mdb)};”

  以上所说的是毗连Access数据库的格局,那末毗连其他数据库的ODBC数据源毗连文本又是如何的?毗连分歧范例的数据库要利用分歧的对应驱动程序,没健忘吧!分歧的驱动程序固然它们的参数组合也就分歧了,每种分歧驱动程序都有其特定的的参数情势:

  ⑴、MSAccessODBCDSNless毗连:

  ☆、参数:Driver设置值:{MicrosoftAccessDriver(*.mdb)}
  ☆、参数:Dbq设置值:实践路径文件称号
  ☆、例句:
  “Driver={MicrosoftAccessDriver(*.mdb)};Dbq=c:omepathdbname.mdb;Uid=Admin;Pwd=pass;”

  ⑵、dBaseODBCDSNless毗连:

  ☆、参数:Driver设置值:{MicrosoftdBASEDriver(*.dbf)}
  ☆、参数:Dbq设置值:实践路径文件称号
  ☆、例句:
  “Driver={MicrosoftdBASEDriver(*.dbf)};DriverID=277;Dbq=c:omepathdbname.dbf;”

  ⑶、OracleODBCDSNless毗连:

  ☆、参数:Driver设置值:{MicrosoftODBCforOracle}
  ☆、参数:Dbq设置值:实践路径文件称号
  ☆、例句:
  “Driver={MicrosoftODBCforOracle};Server=OracleServer.world;Uid=admin;Pwd=pass;”

  ⑷、MSSQLServerDSNless毗连:

  ☆、参数:Driver设置值:{SQLServer};
  ☆、参数:Server设置值:服务器称号
  ☆、参数:Database设置值:数据表称号
  ☆、参数:Uid设置值:用户称号
  ☆、参数:Pwd设置值:暗码
  ☆、例句:
  “Driver={SQLServer};Server=servername;Database=dbname;Uid=sa;Pwd=pass;”

  ⑸、MSTextDriverDSNless毗连:

  ☆、参数:Driver设置值:{MicrosoftTextDriver(*.txt;*.csv)}
  ☆、参数:Dbq设置值:实践路径文件称号
  ☆、例句:
  “Driver={MicrosoftTextDriver(*.txt;*.csv)};Dbq=c:omepath;Extensions=asc,csv,tab,txt;PersistSecurityInfo=False;”

  ⑹、VisualFoxproDSNless毗连:

  ☆、参数:Driver设置值:{MicrosoftVisualFoxProDriver}
  ☆、参数:SourceType设置值:DBC
  ☆、参数:SourceDB设置值:实践路径文件称号
  ☆、例句:
  “Driver={MicrosoftVisualFoxProDriver};SourceType=DBC;SourceDB=c:omepathdbname.dbc;Exclusive=No;”

  ⑺、MySQLDSNless毗连:

  ☆、参数:Driver设置值:{mysql}
  ☆、参数:database设置值:数据表称号
  ☆、参数:uid设置值:用户称号
  ☆、参数:pwd设置值:暗码
  ☆、例句:
  “driver={mysql};database=yourdatabase;uid=username;pwd=password;option=16386”



*******************************************************************

SQL言语简介


  在上一讲中我们先容了毗连内部数据库的办法,那末毗连以后如何对内部数据库举行读取、显现、增删、更新、查询等操纵呢?这些操纵必要经由过程内部数据库等工具挪用SQL指令才干完成。
  ㈠、甚么是SQL言语

  SQL(StructureQueryLanguge,布局化查询言语)是一种数据库公用的盘算机言语,不论是Oracle、MSSQL、Access、MySQL或其他公司的数据库,也不论数据库创建在年夜型主机或团体盘算机上,都可使用SQL言语来会见和修正数据库的内容。固然分歧公司的数据库软件多几少会增添一些专属的SQL语法,但大致上,它们仍是遵守ASNI(美国国度尺度协会)制订的SQL尺度。由于SQL言语具有易进修及浏览等特征,以是SQL渐渐被各类数据库厂商接纳,而成为一种共通的尺度查询言语。只需你学会SQL,便可操纵各类数据库如VisualFoxpro、Access、dBase等等。总之,SQL言语是各类数据库都可使用的数据库查询言语。
  SQL言语不单单具有查询数据库的功效,并且能够对数据库完成拔取、增删、更新与跳转等各类操纵。

  ㈡、SQL言语的构成

  SQL言语是由命令(函数)、子句、运算符、加总函数及通配符等构成,分述以下:

  1、命令
  SQL的命令可分红数据界说言语与数据操纵言语,数据界说言语可用来创建新的数据库、数据表、字段及索引等,本教程不予先容;另外一为数据操纵言语,可用来创建查询表、排序、选择数据、修正、增删等举措。数据界说言语命令经常使用的有选择、增加、删除和修正这四种:

  ⑴、命令:SELECT
  中辞意思:选择
  申明:用于找出符合前提的纪录
  ⑵、命令:INSERT
  中辞意思:拔出
  申明:用于增添一条记录或兼并两个数据表
  ⑶、命令:UPDATE
  中辞意思:更新
  申明:用于改正符合前提的纪录
  ⑷、命令:DELETE
  中辞意思:删除
  申明:用于删除符合前提的纪录

  2、子句
  子句是用于设天命令要操纵的工具(即参数),SQL所用的子句以下:

  ⑴、子句:FROM
  中辞意思:数据表
  申明:用于指定命据表
  ⑵、子句:WHERE
  中辞意思:前提
  申明:用于设定前提
  ⑶、GROUPBY
  中辞意思:分组(兼并)
  申明:用于设定分组
  ⑷、ORDERBY
  中辞意思:排序
  申明:用于设定输入的按次及字段

  3、运算符
  子句参数中的运算符使子句组成分歧的语法格局,如“字段1=100”、“字段1>100”等。运算符又分逻辑运算符与对照运算符。
  ◇逻辑运算符以下:

  ⑴、运算符:AND
  中辞意思:而且
  申明:逻辑且
  ⑵、运算符:OR
  中辞意思:大概
  申明:逻辑非
  ⑶、运算符:NOT
  中辞意思:取反
  申明:逻辑非或逻辑反

  ◇对照运算符以下:

  ⑴、运算符:<申明:小于
  ⑵、运算符:≤申明:小于即是
  ⑶、运算符:≥申明:年夜于即是
  ⑷、运算符:>申明:年夜于
  ⑸、运算符:=申明:即是
  ⑹、运算符:申明:不即是
  ⑺、运算符:BETWEEN申明:用于设定局限中辞意思:在...之间
  ⑻、运算符:LIKE申明:用于通配设定中辞意思:好像
  ⑼、运算符:IN申明:用于汇合设定中辞意思:在...以内

  4、加总函数
  加总函数经常使用在命令的参数中,如:“SELECTSUM(数学),AVG(数学)FROM成就单”。
  ⑴、加总函数:AVG
  中辞意思:均匀
  申明:用于求指定前提的均匀
  ⑵、加总函数:COUNT
  中辞意思:数目
  申明:用于求指定的数目
  ⑶、加总函数:SUM
  中辞意思:和
  申明:用于求指定前提的和
  ⑷、加总函数:MAX
  中辞意思:最年夜值
  申明:用于求指定前提的最年夜值
  ⑸、加总函数:MIN
  中辞意思:最小值
  申明:用于求指定前提的最小值

  5、通配符

  ⑴、通配符:%意义:任何长度的字符串(包含0)
  ⑵、通配符:_意义:下划线暗示任何一个字符
  ⑶、通配符:[]意义:中括号暗示某个局限内的一个字符

  鄙人一讲将申明SQL言语是如何把命令(函数)、子句、运算符、及加总函数等组合在一同的。


*************************************************************************


嵌进式SQL的使用


  SQL语句能够独自在数据库体系自己中实行,但假如使用在其他编程工具所体例的程序中,一样平常不克不及独自实行,而要把SQL语句嵌进到初级言语(如易言语)中利用,经由过程初级言语的命令和办法来挪用之,此时SQL称为嵌进式SQL。挪用SQL语句的程序称为宿主程序,在易言语中通常为把SQL语句作为宿主程序的独一参数来间接处置。嵌进式SQL在利用上有一些划定,在易言语中今朝的版本划定以下:
  ⑴、在程序中要辨别SQL语句和宿主言语的语句。在易言语中好辨别,由于SQL语句情势是英文的,而易言语是中文的,但在实践使用时仍旧有大概会凌乱,以是易言语要把SQL语句转化为文本型才干挪用,即嵌进式SQL语句双方要用双引号来标示。

  ⑵、同意SQL语句利用宿主程序的变量,但利用时要将宿主程序的变量跟内部数据库中表格的字段名区分开来,区分办法以下:
  ①、在易言语中要将变量范例转化为文本型变量才干被SQL文原形加利用,好比上面的例子中有一个叫“数字1”的整数范例变量,拔出到SQL文本中是如许表达:

  内部数据库1.查询(“select*fromchjwhere”+组合框1.内容+“=”+到文本(数字1))

  ②、包括字段名的SQL文本双方加双引号,变量名不克不及在双引号内,如上例。

  ⑶、要将字段名跟字段值区分开来,区分办法以下:
  ①、关于文本范例的字段,在其字段值双方要加上“”号标示其文本值,代表语法是:字段称号=‘文本值’。以下:

  内部数据库1.查询(“select*fromchjwhere姓名=山年夜王”)

  又以下面“查找编纂框.内容”中的字段值是文本型,嵌进式SQL语句以下:

  内部数据库1.查询(“select*fromchjwhere姓名==”+“”+查找编纂框.内容+“”)

  ②、关于数字范例的字段,在SQL语句中暗示其字段值,双方不加标记标示,代表语法是:字段称号=数字值。以下两例:

  内部数据库1.查询(“select*fromchjwhere”+组合框1.内容+“=”+查找编纂框.内容)

  内部数据库1.查询(“select*fromchjwhere学号=17”)

  ③、关于日期工夫范例的字段,在其字段值双方要加上“#”号标示当时间值,代表语法是:字段称号=#工夫值#。以下两例:

  内部数据库1.查询(“select*fromchjwhere退学工夫BETWEEN#2001-01-01#and#2002-01-01#”)

  内部数据库1.查询(“select*fromchjwhere”+组合框1.内容+“=”+“#”+查找编纂框.内容+“#”)

  ④、也能够将SQL语句中的字段名(特别是中文名)可用中括号括住,如:[字段名]。

  
  ⑷、SQL语句要用半角输出法输出,不然大概会堕落。

  那末在易言语中如何挪用SQL语句呢?通常为在内部数据库工具(控件)的办法中挪用,试归纳综合以下:
  ⑴、对内部数据库举行查询的办法。
  对内部数据库的查询就是在对内部数据库不加编纂修改的条件下,只经由过程纪录集来对数据库举行显现、查询、选择、排序和纪录集的兼并等操纵。
  一切查询类的办法劈头于上面这个语句,其他查询类语句是对这个语句的挪用(将此语句作为独一的参数),该语句以下:

  内部数据库.查询(查询类SQL语句)

  也可如许表达:

  内部数据库.查询(“SELECT...FROM............”)

  该办法是对以后被翻开数据库举行数据查询,前往的了局称为“纪录集句柄”(即纪录集的标志)。注重当不再利用此纪录集时,必需利用“封闭纪录集”将其封闭,假如失利,前往0。在易言语中,将以上语句同等于纪录集句柄以作为其他查询类语句的参数。为了使该参数在一切子程序中都能使用,我们一样平常把它设置为整数型全局变量,并将其值设置以下:

  纪录集句柄=内部数据库.查询(查询类SQL语句)

  因为易言语要把SQL语句转化为文本型才干挪用,以是嵌进式SQL语句双方要有双引号,例句:
  纪录集句柄=内部数据库1.查询(“select*fromchj”)
  ※“chj”是内部数据库中一个表的称号

  又如,欲失掉排序的纪录集,应象上面如许赋值:

  纪录集句柄=内部数据库1.查询(“SELECT*FROMchjORDERBY语文DESC”)

  现将内部数据库控件中其他的查询类办法枚举以下:

  ①、内部数据库.从头查询(纪录集句柄)即:
  内部数据库.从头查询(内部数据库.查询(查询类SQL语句))

  例句:内部数据库1.从头查询(内部数据库1.查询(“select*fromchj”))

  ②、内部数据库.首纪录前(纪录集句柄)即:
  内部数据库.首纪录前(内部数据库.查询(查询类SQL语句))

  例句:内部数据库1.首纪录前(纪录集句柄)

  ③、内部数据库.尾纪录后(纪录集句柄)
  ④、内部数据库.到首纪录(纪录集句柄)
  ⑤、内部数据库.到尾纪录(纪录集句柄)
  ⑥、内部数据库.到前一纪录(纪录集句柄)
  ⑦、内部数据库.到后一纪录(纪录集句柄)
  ⑧、内部数据库.读(纪录集句柄,字段称号或地位)

  例句:语文编纂框.内容=到文本(内部数据库1.读(纪录集句柄,“语文”))

  ⑵、对内部数据库举行编纂的办法。
  所谓对内部数据库的编纂,就是变动修改内部数据库自己,包含增加、更新、删除等,对数据库举行编纂不用经由过程纪录集。一切非查询类SQL语句都嵌进上面这个语句来实行:

  内部数据库.实行(非查询类SQL语句)

  ①、增加纪录,其语法以下:

  内部数据库.实行(“insertinto表称号(字段1,字段2...)values(字段值1,字段值2...)”)

  例句:
  内部数据库1.实行(“INSERTINTOchj”+“(学号,姓名,语文,数学,英语)”+“valueS”+“(”+学号编纂框.内容+“,”+姓名编纂框.内容+“,”+语文编纂框.内容+“,”+数学编纂框.内容+“,”+英语编纂框.内容+“)”)

  ②、更新纪录,其语法以下:

  内部数据库.实行(“UPDATE表称号SET字段1=字段值1,字段2=字段值2...WHERE前提式”)

  例句:
  内部数据库1.实行(“UPDATEchjSET学号=”+“”+学号编纂框.内容+“,”+“姓名=”+“”+姓名编纂框.内容+“,”+“语文=”+“”+语文编纂框.内容+“,”+“数学=”+“”+数学编纂框.内容+“,”+“英语=”+“”+英语编纂框.内容+“”+“WHERE姓名=”+“”+姓名1+“”+“AND语文=”+语文1+“AND数学=”+数学1+“AND英语=”+英语1+“AND学号=”+学号1)

  ③、删除纪录,其语法以下:

  内部数据库.实行(“DELETE*FROM表称号WHERE前提式”)

  例句:
  内部数据库.实行(“内部数据库1.实行(“DELETE*FROMchj”+“WHERE姓名=”+“”+姓名1+“”+“AND语文=”+语文1+“AND数学=”+数学1+“AND英语=”+英语1+“AND学号=”+学号1)”)
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。

冷月葬花魂 发表于 2015-1-19 20:51:12

连做梦都在想页面结构是怎么样的,绝非虚言

蒙在股里 发表于 2015-1-28 10:31:37

原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。

变相怪杰 发表于 2015-2-5 20:39:55

比如日志传送、比如集群。。。

精灵巫婆 发表于 2015-3-3 21:59:46

原来公司用过MYSQL自己也只是建个表写个SQL

仓酷云 发表于 2015-3-11 14:13:31

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

深爱那片海 发表于 2015-3-18 22:50:57

对于微软系列的东西除了一遍遍尝试还真没有太好的办法
页: [1]
查看完整版本: MSSQL教程之关于ODBC数据源毗连文本