数据库基础+计算机板卡基础知识

数据库基础+计算机板卡基础知识
数据库基础+计算机板卡基础知识

计算机板卡基础部分

一、PCI(Peripheral Component Interconnect)

一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准。此标准允许在计算机内安装多达10个遵从PCI标准的扩展卡。最早提出的PCI总线工作在33MHz频率之下,传输带宽达到133MB/s(33MHz * 32bit/s),基本上满足了当时处理器的发展需要。随着对更高性能的要求,后来又提出把PCI 总线的频率提升到66MHz,传输带宽能达到266MB/s。1993年又提出了64bit的PCI总线,称为PCI-X,目前广泛采用的是32-bit、33MHz或者32-bit、66MHz的PCI 总线,64bit的PCI-X插槽更多是应用于服务器产品。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供信号缓冲,能在高时钟频率下保持高性能,适合为显卡,声卡,网卡,MODEM等设备提供连接接口,工作频率为33MHz/66MHz。

PCI总线系统要求有一个PCI控制卡,它必须安装在一个PCI插槽内。这种插槽是目前主板带有最多数量的插槽类型,在当前流行的台式机主板上,ATX结构的主板一般带有5~6个PCI插槽,而小一点的MATX主板也都带有2~3个PCI插槽。根据实现方式不同,PCI控制器可以与CPU一次交换32位或64位数据,它允许智能PCI辅助适配器利用一种总线主控技术与CPU并行地执行任务。PCI允许多路复用技术,即允许一个以上的电子信号同时存在于总线之上。

普通PCI总线带宽一般为133MB/s(在32bit/33Mhz下)或者266MB/s(在32bit/66M hz下)。对于普通的声卡、百兆网卡、Modem卡等扩展设备一般使用的是133MB/s的传输速率,这种设备的金手指特征一般是与PCI插槽对应(长-短),而对于部分PCI显卡、千兆网卡、磁盘阵列卡、USB2.0或者火线卡等需要较高带宽的PCI设备一般可以使用2 66MB/s的带宽,这种设备的特征是金手指一般是三段式(短-长-短)。至于设备是否工作在66Mhz下可以通过软件e verest查看,在PCI设备栏中选中需要观察设备并查看“66M hz操作”是否为“已支持”,如果显示为“不支持”则表示这个设备最多只能使用133MB/s的带宽。

PCI总线是一种不依附于某个具体处理器的局部总线。从结构上看,PCI是在CPU

和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权,以加速数据传送。

PCI板卡特点

即插即用:是指当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序。而不象旧的ISA板卡,需要进行复杂的手动配置。

实际的实现远比说起来要复杂。在PCI板卡中,有一组寄存器,叫"配置空间"(Confi guration Space),用来存放基地址与内存地址,以及中断等信息。

以内存地址为例。当上电时,板卡从ROM里读取固定的值放到寄存器中,对应内存的地方放置的是需要分配的内存字节数等信息。操作系统要跟据这个信息分配内存,并在

分配成功后把相应的寄存器中填入内存的起始地址。这样就不必手工设置开关来分配内存或基地址了。对于中断的分配也与此类似。

中断共享:ISA卡的一个重要局限在于中断是独占的,而我们知道计算机的中断号只有16个,系统又用掉了一些,这样当有多块ISA卡要用中断时就会有问题了。

PCI总线的中断共享由硬件与软件两部分组成。

硬件上,采用电平触发的办法:中断信号在系统一侧用电阻接高,而要产生中断的板卡上利用三极管的集电极将信号拉低。这样不管有几块板产生中断,中断信号都是低;而只有当所有板卡的中断都得到处理后,中断信号才会回复高电平。

软件上,采用中断链的方法:假设系统启动时,发现板卡A用了中断7,就会将中断7对应的内存区指向A卡对应的中断服务程序入口ISR_A;然后系统发现板卡B也用中断7,这时就会将中断7对应的内存区指向ISR_B,同时将ISR_B的结束指向ISR_A。以此类推,就会形成一个中断链。而当有中断发生时,系统跳转到中断7对应的内存,也就是ISR_B。ISR_B就要检查是不是B卡的中断,如果是,要处理,并将板卡上的拉低电路放开;如果不是,则呼叫ISR_A。这样就完成了中断的共享。

优缺点

优点是总线结构简单、成本低、设计简单。缺点也比较明显,并行总线无法连接太多设备,总线扩展性比较差,线间干扰将导致系统无法正常工作;当连接多个设备时,总线有效带宽将大幅降低,传输速率变慢;为了降低成本和尽可能减少相互间的干扰,需要减少总线带宽,或者地址总线和数据总线采用复用方式设计,这样降低了带宽利用率二、pci Express

PCI E xpress插槽(黄和绿色)

PCI Express是新一代的总线接口。早在2001年的春季,英特尔公司就提出了要用新一代的技术取代PCI总线和多种芯片的内部连接,并称之为第三代I/O总线技术。随后在2001年底,包括Intel、AMD、DELL、IBM在内的20多家业界主导公司开始起草新技术的规范,并在2002年完成,对其正式命名为PCI Express。它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。基本概念

PCI Express的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16(X 2模式将用于内部接口而非插槽模式)。较短的PCI Express卡可以插入较长的PCI Ex

press插槽中使用。PCI Express接口能够支持热拔插,这也是个不小的飞跃。PCI Expr ess卡支持的三种电压分别为+3.3V、3.3Vaux以及+12V。用于取代AGP接口的PCI Ex press接口位宽为X16,将能够提供5GB/s的带宽,即便有编码上的损耗但仍能够提4GB /s左右的实际带宽,远远超过AGP 8X的2.1GB/s的带宽。

PCI Express规格从1条通道连接到32条通道连接,有非常强的伸缩性,以满足不同系统设备对数据传输带宽不同的需求。例如,PCI Express X1已经可以满足主流声效芯片、网卡芯片和存储设备对数据传输带宽的需求。PCI Express X16也支持双向数据传输,每向数据传输带宽高达4GB/s,双向数据传输带宽有8GB/s之多,相比之下,目前广泛采用的AGP 8X数据传输只提供2.1GB/s的数据传输带宽。

尽管PCI Express技术规格允许实现X1(250MB/秒),X2,X4,X8,X12,X16和X32通道规格,但从目前形式看,PCI Express X1和PCI Express X16将成为PCI Express主流规格。除去提供极高数据传输带宽之外,PCI Express因为采用串行数据包方式传递数据,所以PCI Express接口每个针脚可以获得比传统I/O标准更多的带宽,这样就可以降低PCI Express设备生产成本和体积。另外,PCI Express也支持高阶电源管理,支持热插拔,支持数据同步传输,为优先传输数据进行带宽优化。

在兼容性方面,PCI Express在软件层面上兼容目前的PCI技术和设备,支持PCI

设备和内存模组的初始化。PCI Express可以为带宽渴求型应用分配相应的带宽,大幅提高中央处理器(CPU)和图形处理器(GPU)之间的带宽。对最终用户而言,他们可以感受影院级图象效果,并获得无缝多媒体体验。

PCI Express采用串行方式传输Data。它和原有的ISA、PCI和AGP总线不同。这种传输方式,不必因为某个硬件的频率而影响到整个系统性能的发挥。当然,整个系统依然是一个整体,但是我们可以方便的提高某一频率低的硬件的频率,以便系统在没有瓶颈的环境下使用。以串行方式提升频率增进效能,关键的限制在于采用什么样的物理传输介质。目前人们普遍采用铜线路,而理论上铜这个材质可以提供的传输极限是10 Gbps。这也就是为什么PCI Express的极限传输速度的答案。

因为PCI Express工作模式是一种称之为“电压差式传输”的方式。两条铜线,通过相互间的电压差来表示逻辑符号0和1。以这种方式进行资料传输,可以支持极高的运行频率。所以在速度达到10Gbps后,只需换用光纤(Fibre Channel)就可以使之效能倍增。

PCI Express的提出,并非是总线形式的一个结束。恰恰相反,其技术的成熟仍旧需要这个时间。至今依然被看好的AGP8X的性能与PCI Express在性能上的差距虽然不是太明显,但随着PCI Express的完善,其差距将是不言而喻的。

PCI Express与其他传输规格比较

PCIe的规范主要是为了提升电脑内部所有总线的速度,因此频宽有多种不同规格标准,其中PCIe x16是专为显卡所设计的部分。AGP的资料传输效率最高为2.1GB/s,不过对上PCIe x16的8GB/s,很明显的就分出胜负,但8GB/s只有指资料传输的理想值,并不是使用PCIe接口的显示卡,就能够有突飞猛进的效能表现,实际的测试数据上并不会有这么大的差异存在。

PCI Express的硬件协议

PCIe的连接是建立在一个双向的序列的(1-bit)点对点连接基础之上,这称之为“传输通道”。与PCI 连接形成鲜明对比的是PCI是基于总线控制,所有设备共同分享的单向32位并行总线。PCIe是一个多层协议,由一个对话层,一个数据交换层和一个物理层构

成。物理层又可进一步分为逻辑子层和电气子层。逻辑子层又可分为物理代码子层(PCS)和介质接入控制子层(MAC)。

PCI Express总线的诞生和概念

虽然,除了3D显示卡以外,直到现在还没有哪个计算机配件脱离PCI总线的束缚另起炉灶,诸如千兆网卡、声卡、RAID卡等都还在循规蹈矩的奉行着PCI规范,但,PC

技术的快速发展已经让PCI总线越来越显现出不足,尤其是最近的千兆网络以及视频应用等外设,会使PCI的133MB/s带宽难以承受,当几个类似外设同时满负荷运转,PCI总线几近瘫痪。不但如此,随着技术的不断进步,PCI电压难以降低的缺陷越来越凸出出来,PCI规范已经成为现在PC系统的发展桎梏,彻底升级换代迫在眉睫。

2001年,在Intel春季的IDF上,Intel正式公布旨在取代PCI总线的第三代I/O技术,该规范由Intel 支持的AWG(Arapahoe W orking Group)负责制定,称为第三代I/O总线技术。不过在公布之初,应用环境、配套设备还不是很完善,不为人们所关注。到了200 2年4月17日,AWG正式宣布3GIO 1.0规范草稿制定完毕,并移交PCI-SIG进行审核,该规范最终却被命名为PCI Express,2003年Intel春季IDF上,Intel正式公布了PCI Express的产品开发计划,PCI Express最终走向应用。

PCI Express总线的特点和长处

PCI Express总线是一种完全不同于过去PCI总线的一种全新总线规范,与PCI总线共享并行架构相比,PCI Express总线是一种点对点串行连接的设备连接方式,点对点意味着每一个PCI Express设备都拥有自己独立的数据连接,各个设备之间并发的数据传输互不影响,而对于过去PCI那种共享总线方式,PCI总线上只能有一个设备进行通信,一旦PCI总线上挂接的设备增多,每个设备的实际传输速率就会下降,性能得不到保证。现在,PCI Express以点对点的方式处理通信,每个设备在要求传输数据的时候各自建立自己的传输通道,对于其他设备这个通道是封闭的,这样的操作保证了通道的专有性,避免其他设备的干扰。

在传输速率方面,PCI Express总线利用串行的连接特点将能轻松将数据传输速度提到一个很高的频率,达到远超出PCI总线的传输速率。PCI Express的接口根据总线位宽不同而有所差异,包括x1、x4、x8以及x16(x2模式将用于内部接口而非插槽模式),其中X1的传输速度为250MB/s,而X16就是等于16倍于X1的速度,即是4GB/s。与此同时,PCI Express总线支持双向传输模式,还可以运行全双工模式,它的双单工连接能提供更高的传输速率和质量,它们之间的差异跟半双工和全双工类似。因此连接的每个装置都可以使用最大带宽,PCI Express接口设备将有着比PCI设备优越的多的资源可用。

除了这些,PCI Express设备能够支持热拔插以及热交换特性,支持的三种电压分别为+3.3V、3.3Vaux以及+12V。考虑到现在显卡功耗的日益上涨,PCI Express而后在规范中改善了直接从插槽中取电的功率限制,16x的最大提供功率达到了70W,比AGP 8 X接口有了很大的提高。基本可以满足未来中高端显卡的需求。这一点可以从AGP、PCI Express两个不同版本的6600GT上就能明显地看到,后者并不需要外接电源。

可以看到PCI Express只是南桥的扩展总线,它与操作系统无关,所以也保证了它与原有PCI的兼容性,也就是说在很长一段时间内在主板上PCI Express接口将和PCI接口共存,这也给用户的升级带来了方便。由此可见,PCI Express最大的意义在于它的通用性,不仅可让它用于南桥和其他设备的连接,也可以延伸到芯片组间的连接,甚至也可

以用于连接图形芯片,这样,整个I/O系统将重新统一起来,将更进一步简化计算机系统,增加计算机的可移植性和模块化。PCI Express已经为PC的未来发展重新铺设好了路基。

三、什么是PCI-X?

PCI-X接口是并连的PCI总线(Peripheral Components Interconnect)的更新版本,仍采用传统的总线技术,不过有更多数量的接线针脚,同时,如前所述的所有的连接装置会共享所有可用的频宽。

与原先PCI接口所不同的是:一改过去的32位,PCI-X采用64位宽度来传送数据,所以频宽自动就倍增两倍,而扩充槽的长度当然就不可避免的加大了,除此之外,其余的包含传输通讯协议、讯号和标准的接头格式都一并兼容,好处是3.3伏特的32位PCI 适配卡可以用在PCI-X扩充槽上,当然如果你愿意,也可以将64位PCI-X适配卡接在3 2位PCI扩充槽上,不过,频宽速度将会大减。

这个总线宽度倍增的改良版本对一些专业储存控制器,例如SCSI、iSCSI、光纤信道(Fibre Channel)、10GBit以太网络和InfiniBand等其它传输装置,仍然无法提供足

够的频宽,因此引进PCI-SIG(Special Interest Group)接口以提供数个不同速度等级,可以从PCI-X 66(Re v. 1.0b)一路上到PCI-X 533(Re v. 2.0)规格,以下表列这些技术细节:

总线宽度频率速度功能频宽

PCI-X 66 64位66MHz Hot Plugging, 3.3 V 533MB/s

PCI-X 133 64位133MHz Hot Plugging, 3.3 V 1.06GB/s

PCI-X 266 64位/16位选项133MHzDouble Data Rate Hot Plugging, 3.3 & 1.5 V, ECC supported 2.13GB/s

PCI-X 533 64/16位选项133MHzQuad Data Rate Hot Plugging, 3.3 & 1.5 V,

ECC supported 4.26GB

你可以看到当频率速度到达了PCI-X 133的133MHz时候,就再也升不上去,为了让频宽能够倍增,于是不惜将主存储器及前端总线上已经行之有年而且路人皆知的技术搬过来,因此,PCI-X 266用上Double Data Rate技术,让每一个时钟脉冲的上升与下降边缘都可以传输数据,所以有多出了一倍的机会来传输数据,而PCI-X 533规格更进一步采用每一个时钟脉冲可以传送四次(Quad Data Rate)的技术,英特尔早在所有的Pentium 4和Xeon处理器的前端总线就用上这些技术了。

四、FPGA:

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

FPGA简介

背景

目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简

单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。FPGA工作原理

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Bloc k)和内部连线(Interconnect)三个部分。

FPGA的基本特点

1)采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。

2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

3)FPGA内部有丰富的触发器和I/O引脚。

4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA 进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

FPGA配置模式

FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。

例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。

幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度帮助地系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。

最近FPGA的配置方式已经多元化!

FPGA设计的注意事项

(https://www.360docs.net/doc/df18578751.html,/view/51371.htm?fr=ala0_1_1)

不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。FPGA的应用

1.电路设计中FPGA的应用

连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石.事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识.在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗.

2.产品设计

把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建"首发团队"的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!产品设计领域会造就大量的企业和企业家,是一个近期的发展热点和机遇

3.系统级应用

系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用Xilinx V-4, V-5系列的FPGA,实现内嵌POWER PC CPU, 然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINU X等系统这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成FPGA大型系统来讲是很有帮助的。这种"山寨"味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发,希望能帮助想学FPGA 但很茫然无措的人理一理思路。这是一个不错的行业,有很好的个人成功机会。但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然还有市场适应能力。

五、DSP:

Dsp:数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。德州仪器(TI)、Freescale等半导体厂商在这一领域拥有很强的实力。

DSP微处理器

DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

DSP微处理器(芯片)一般具有如下主要特点:

(1)在一个指令周期内可完成一次乘法和一次加法;

(2)程序和数据空间分开,可以同时访问指令和数据;

(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;

(4)具有低开销或无开销循环及跳转的硬件支持;

(5)快速的中断处理和硬件I/O支持;

(6)具有在单周期内操作的多个硬件地址产生器;

(7)可以并行执行多个操作;

(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

当然,与通用微处理器相比,DSP微处理器(芯片)的其他通用功能相对较弱些。DSP优点:

对元件值的容限不敏感,受温度、环境等外部参与影响小;

容易实现集成;VLSI

可以时分复用,共享处理器;

方便调整处理器的系数实现自适应滤波;

可实现模拟处理不能实现的功能:线性相位、多抽样率处理、级联、易于存储等;

可用于频率非常低的信号。

DSP缺点:

需要模数转换;

受采样频率的限制,处理频率范围有限;

数字系统由耗电的有源器件构成,没有无源设备可靠。

但是其优点远远超过缺点。

DSP技术的应用

语音处理:语音编码、语音合成、语音识别、语音增强、语音邮件、语音储存等。

图像/图形:二维和三维图形处理、图像压缩与传输、图像识别、动画、机器人视觉、多媒体、电子地图、图像增强等。

军事;保密通信、雷达处理、声呐处理、导航、全球定位、跳频电台、搜索和反搜索等。

仪器仪表:频谱分析、函数发生、数据采集、地震处理等。

自动控制:控制、深空作业、自动驾驶、机器人控制、磁盘控制等。

医疗:助听、超声设备、诊断工具、病人监护、心电图等。

家用电器:数字音响、数字电视、可视电话、音乐合成、音调控制、玩具与游戏等

基于DSP的智能视频监控系统

传统的视频监视系统是简单的非智能闭路电视(C CTV)系统,其缺点十分明显。这样的系统或者需要安保人员实时监视画面以捕捉关键事件,或者需要在事后对视频记录进行回放并进行人工分析,耗时耗力,成本高而效率低。近几年,DSP在智能视频监控系统方面的应用不断完善,正在逐渐取代传统的模拟非智能系统。

iSuppli公司2006年的一份分析报告曾指出,IP视频监控系统市场到2010年将增长近十倍。IP监控的创新技术之一是“智能摄像机”,它拥有强大的数字信号处理器,能探测威胁并触发自动响应。可见,DSP芯片是智能监控的核心。

基于DSP的语音实时变速系统

在外语多媒体教学中,要求对语速进行快慢控制,以适应不同程度学生的需求。然而,传统的语音变速产品往往在教师改变语速的同时,也改变了原说话者的语调,不能达到教学的真正目的。因此,语音变速系统应当具备调整语速的同时,还需要保证原说话者语调保持不变的特点。基于DSP(TMS320C5409)的语音实时变速系统能够任意调整语音语速,达到外语多媒体教学的需求。

DSP未来发展

1、数字信号处理器的内核结构进一步改善,多通道结构和单指令多重数据(SIMD)、特大指令字组(VLIM)将在新的高性能处理器中将占主导地位,如Analog Devices的AD SP-2116x。

2、DSP 和微处理器的融合:

微处理器是低成本的,主要执行智能定向控制任务的通用处理器能很好执行智能控制任务,但是数字信号处理功能很差。而DSP的功能正好与之相反。在许多应用中均需要同时具有智能控制和数字信号处理两种功能,如数字蜂窝电话就需要监测和声音处理功

能。因此,把DSP和微处理器结合起来,用单一芯片的处理器实现这两种功能,将加速个人通信机、智能电话、无线网络产品的开发,同时简化设计,减小PCB体积,降低功耗和整个系统的成本。例如,有多个处理器的Motorola公司的DSP5665x,有协处理器功能的Massan公司FILU-200,把MCU功能扩展成DSP和MCU功能的TI公司的TMS 320C27xx以及Hitachi公司的SH-DSP,都是DSP和MCU融合在一起的产品。互联网和多媒体的应用需要将进一步加速这一融合过程。

3、DSP 和高档CPU的融合:

大多数高档GPP如Pentium 和PowerPC都是SIMD指令组的超标量结构,速度很快。LSI Logic 公司的LSI401Z采用高档CPU的分支预示和动态缓冲技术,结构规范,利于编程,不用担心指令排队,使得性能大幅度提高。Intel公司涉足数字信号处理器领域将会加速这种融合。

4、DSP 和SOC的融合:

SOC(System-On-Chip)是指把一个系统集成在一块芯片上。这个系统包括DSP 和系统接口软件等。比如Virata公司购买了LSI Logic公司的ZSP400处理器内核使用许可证,将其与系统软件如USB、10BASET、以太网、UART、GPIO、HDLC等一起集成在芯片上,应用在xDSL上,得到了很好的经济效益。因此,SOC芯片近几年销售很好,由1998年的1.6亿片猛增至1999年的3.45亿片。1999年,约39%的SOC产品应用于通讯系统。今后几年,SOC将以每年31%的平均速度增长,到2004年将达到13亿片。毋庸置疑,SOC将成为市场中越来越耀眼的明星。

5、DSP 和FPGA的融合:

FPGA是现场编程门阵列器件。它和DSP集成在一块芯片上,可实现宽带信号处理,大大提高信号处理速度。据报道,Xilinx 公司的Virtex-II FPGA对快速傅立叶变换(FFT)的处理可提高30倍以上。它的芯片中有自由的FPGA可供编程。Xilinx公司开发出一种称作Turbo卷积编译码器的高性能内核。设计者可以在FPGA中集成一个或多个Turbo

内核,它支持多路大数据流,以满足第三代(3G)W CDMA无线基站和手机的需要,同时大大节省开发时间,使功能的增加或性能的改善非常容易。因此在无线通信、多媒体等领域将有广泛应用。

数据库基础部分

一、SQL

(https://www.360docs.net/doc/df18578751.html,/zh-cn/SQL)(https://www.360docs.net/doc/df18578751.html,/sql/sql_intro.asp)

百科名片

SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。

复杂SQL语句:带有嵌套子查询的SQL语句。

简介

SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的

SQL

接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。

结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQ L语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。

美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和In ternational Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关

系数据库使用的SQL版本有一些差异,但大多数都遵循ANSI SQL 标准。SQL Server 使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的SQL-92标准。

SQL语言包含4个部分:

※数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。

※数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。

※数据查询语言(DQL),例如:SELECT语句。

※数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。

SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。

SQL 是用于访问和处理数据库的标准的计算机语言。

SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种ANSI 的标

准计算机语言编者注:ANSI,美国国家标准化组织

功能介绍

SQL 面向数据库执行查询;SQL 可从数据库取回数据;SQL 可在数据库中插入新的记录;SQL 可更新数据库中的数据;SQL 可从数据库删除记录;SQL 可创建新数据库;SQL 可在数据库中创建新表;SQL 可在数据库中创建存储过程;SQL 可在数据库中创建视图;SQL 可以设置表、存储过程和视图的权限。

SQL 是一种标准

SQL 是一门ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如MS Access、DB 2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

SQL语句结构

不幸地是,存在着很多不同版本的SQL 语言,但是为了与ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELE TE、INSERT、W HERE 等等)。

注释:除了SQL 标准之外,大部分SQL 数据库程序都拥有它们自己的私有扩展!在您的网站中使用SQL

要创建发布数据库中数据的网站,您需要以下要素:

RDBMS 数据库程序(比如MS Access, SQL Ser ver, MySQL);

服务器端脚本语言(比如PHP 或ASP);

SQL;

HTML / CSS。

RDBMS

RDBMS 指的是关系型数据库管理系统。

RDBMS 是SQL 的基础,同样也是所有现代数据库系统的基础,比如MS SQL S erver, IBM DB2, Oracle, MySQL 以及Microsoft Access。

RDBMS 中的数据存储在被称为表(tables)的数据库对象中。

表是相关的数据项的集合,它由列和行组成。

SQL发展历史

1970: E.J. Codd 发表了关系数据库理论(relational database theory);

1974-79:IBM 以Codd的理论为基础开发了“Sequel”,并重命名为"SQL";

1979:Oracle 发布了商业版SQL

1981-84:出现了其他商业版本,分别来自IBM(DB2),Data General(DG/SQL),Rel ational Technology(INGRES);

SQL/86:ANSI 跟ISO的第一个标准;

SQL/89:增加了引用完整性(referential integrity);

SQL/92(aka SQL2):被数据库管理系统(DBMS)生产商广发接受;

1997+:成为动态网站(Dynamic web content)的后台支持;

SQL/99:Core level跟其他8种相应的le vel,包括递归查询,程序跟流程控制,基本的对象(object)支持包括oids;

SQL/2003:包含了XML相关内容,自动生成列值(column values);

2005-09-30:“Data is the next generation inside...SQL is the new HTML”! Ti

m O'eilly提出了W eb 2.0理念,称数据将是核心,SQL将成为“新的HTML";

SQL/2006:定义了SQL与XML(包含XQuery)的关联应用;

2006:Sun公司将以SQL基础的数据库管理系统嵌入Ja va V6

DDL

DDL 用于定义和管理对象,例如数据库、数据表以及视图。DDL 语句通常包括每个对象的CREATE、ALTER 以及DROP 命令。举例来说,CREATE TABLE、ALTER T ABLE 以及DROP TABLE 这些语句便可以用来建立新数据表、修改其属性(如新增或删除资料行)、删除数据表等,下面我们会一一介绍。

CREATE TABLE 语句

使用DDL 在MyDB 资料库建立一个名为Customer_Data 的范例数据表(注:以下语句都必须在Sql Server数据库中执行),本章后面的例子我们会使用到这个数据表。如前所述,CREATE TABLE 语句可以用来建立数据表。这个范例数据表被定义成四个数据行,如下所示:

Use MyDB

CREATE TABLE Customer_Data

(customer_id smallint,

first_name char(20),

last_name char(20),

phone char(10))

GO

这个语句能产生Customer_Data 数据表,这个数据表会一直是空的直到数据被填入数据表内。

ALTER TABLE 语句

ALTER TABLE 语句用来修改数据表的定义与属性。在下面的例子中,我们利用AL TER TABLE 在已经存在的Customer_Data 数据表中新增middle_initial 数据行。

ALTER TABLE Customer_Data

ADD middle_initial char(1)

GO

DROP TABLE 语句

DROP TABLE 语句用来删除数据表定义以及所有的数据、索引、触发程序、条件约束以及数据表的权限。要删除我们的Customer_Data 数据表,可利用下列命令:DROP TABLE Customer_Data

GO

DML

DML 利用INSERT、SELECT、UPDATE 及DELETE 等语句来操作数据库对象所包含的数据。

INSERT 语句

INSERT 语句用来在数据表或视图中插入一行数据。例如,如果要在Customer_Dat a 数据表中新增一个客户,可使用类似以下的INSERT 语句:

INSERT INTO Customer_Data

(customer_id, first_name, last_name, phone)

VALUES (777, 'Frankie', 'Stein', '4895873900')

请注意SQL 语句中第二行的数据列名称列表,列表上数据行名称的次序决定了数据数值将被放在哪个数据列。举例来说,第一个数据数值将被放在列表列出的第一个数据列customer_id、第二个数据数值放在第二个数据列,依此类推。由于我们在建立数据表时,定义数据行填入数值的次序与现在相同,因此我们不必特意指定列名称。我们可以用以下的INSERT 语句代替:

INSERT INTO Customer_Data

VALUES (777, 'Frankie', 'Stein', '4895873900')

注意

如果使用这种形式的INSERT 语句,但被插入的数值次序上与建立数据表时不同,数值将被放入错误的数据列。如果数据的类型与定义不符,则会收到一个错误讯息。UPDATE 语句

UPDATE 语句用来更新或修改一行或多行中的值。例如,一位名称为Frankie St ei n 的客户想要在记录中改变他的姓氏为Franklin,可使用以下UPDATE 陈述式:UPDATE Customer_Data

SET first_name = …Franklin?

W HERE last_name = …Stein? and customer_id= 777

我们在W HERE 子句中加入customer_id 的项目来确定其他名称不为Stein 的客户不会被影响----只有customer_id为777的客户,姓氏会有所改变。

说明

当您使用UPDATE 语句时,要确定在W HERE 子句提供充分的筛选条件,如此才不会不经意地改变了一些不该改变的数据。

--------------------------------------------------------------------------------

DELETE 语句

DELETE 语句用来删除数据表中一行或多行的数据,您也可以删除资料表中的所有数据行。要从Customer_Data 数据表中删除所有的行,您可以利用下列语句:DELETE FROM Customer_Data

DELETE Customer_Data

数据表名称前的FROM 关键字在DELETE 语句中是选择性的。除此之外,这两个语句完全相同。

要从Customer_Data 数据表中删除customer_id 数据行的值小于100的行,可利用下语句:

DELETE FROM Customer_Data

W HERE customer_id < 100

现在我们已经快速浏览了SQL 提供的DDL 与DML 语句,接著,下面将介绍DC L。

DCL

DCL,即Data Control Language,数据控制语言。

DCL用于控制对数据库对象操作的权限,它使用GRANT和REVOKE语句对用户或用户组授予或回收数据库对象的权限。

--------------------------------------------------------------------------------

SELECT 语句

SELECT 语句用来检索数据表中的数据,而哪些数据被检索由列出的数据行与语句中的W HERE 子句决定。例如,要从之前建立的Customer_Data数据表中检索custo mer_id 以及first_name 数据行的数据,并且只想取出每行中first_name 数据值为Fr ankie 的数据,那麼可以利用以下的SELECT 语句:

SELECT customer_id, first_name FROM Customer_D ata

W HERE first_name = …Frankie?

如果有一行符合SELECT 语句中的标准,则结果将显示如下:

customer_id first_name

------------- ------------

777 Frankie

SQL中的五种数据类型

简要描述一下SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型字符型

VARCHAR VS CHAR

VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符(?sql server中varchar类型最大长度可以到8000,o racle中可以到4000)。

假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。

当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。

VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和

硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要但是VARCHAR型字段在读取得效率上却比不上CHAR,对于已经限定字符长度的

字段来说用char则优于varchar,因为可以获得更快的读取速度。例如日期字段固定格式为yyyy-MM-dd型的字段,固定长度是10了,那么用CHAR则读取速度会更快。

文本型

TE XT(Sql Server)

使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。

注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。

当你从H TML fORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不使用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。

一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。

数值型

SQL支持许多种不同的数值型数据。你可以存储整数IN T 、小数NUMERIC、和钱数MONEY。

INT VS SMALLINT VS TINYINT

他们的区别只是字符长度:

INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数

SMALLINT 型数据可以存储从-32768到32768的整数

TINYIN T 型的字段只能存储从0到255的整数,不能用来储存负数

通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测一下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。

NUMERIC

为能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-1038到1038范围内的数。N UMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。

当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:NUMERIC(23,0)

一个NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。

MONEY VS SMALLMONEY

你可以使用INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203, 685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。

SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。

逻辑型

BIT

如果你使用复选框( CHECKBO X)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。

当心,在你创建好一个表之后,你不能向表中添加BIT型字段。如果你打算在一个

表中包含BIT型字段,你必须在创建表时完成。

日期型

DATETIME VS SMALLDATETIME(Sql Server)

一个DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到99 99年12月31日最后一毫秒。

如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1 900年1月1日到2079年6月6日的日期,它只能精确到秒。

DATETIME型字段在你输入日期和时间前并不包含实际数据,认识这一点是重要的。安全问题

由于SQL 指令在部份进阶使用时,语法会依照特定条件来变换,而且若是表格中的字段过多时,许多开发人员都会习惯以字串组立的方式建立SQL 指令,而且又使用系统管理员级的帐户连到数据库,因此让黑客有机会利用SQL 的组立方式进行攻击,像是在指令中添加部份刺探性或破坏性的指令(例如DROP TABLE、DROP DATABASE 或是DELETE * FROM myTable 等具破坏性的指令),让数据库的资料或实体服务器被破坏,导致服务中断或是系统瘫痪等后果,此种攻击手法称为SQL注入(SQL Injection)。目前实务上较有效的防御方法,就是全面改用参数化查询,或是检查输入数据,过滤掉可能的危险指令或数据来防范。

SQL查询语句精华使用简要

简单的Transact-SQL查询只包括选择列表、FROM子句和W HERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。

(一) 选择列表

选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

2、选择部分列并指定它们的显示次序

查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

3、更改列标题

在选择列表中,可重新指定列标题。定义格式为:

列标题=列名(Sql Server)

列名列标题

如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:

SELECT 昵称=nickname,电子邮件=email

FROM testtable

4、删除重复行

SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在SELE CT返回的结果集合中只保留一行。

5、限制返回的行数

使用TOP n [PERCENT]选项限制返回的数据行数(Sql Server),TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。

例如:

SELECT TOP 2 *

FROM testtable

SELECT TOP 20 PERCENT *

FROM testtable

(二) FROM子句

FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:

SELECT username,citytable.cityid

FROM usertable,citytable

W HERE usertable.cityid=citytable.cityid

在FROM子句中可用以下两种格式为表或视图指定别名:

表名as 别名

表名别名

例如上面语句可用表的别名格式表示为:

SELECT username,b.cityid

FROM usertable a,citytabl e b

W HERE a.cityid=b.cityid

FROM不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。

例如:

SELECT a.au_fname+a.au_lname

FROM authors a,titleauthor ta

(SELECT title_id,title

FROM titles

W HERE ytd_sales>10000

) AS t

W HERE a.au_id=ta.au_id

AND ta.title_id=t.title_id

此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。

(三) 使用W HERE子句设置查询条件

W HERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于2 0的数据:

SELECT *

FROM usertable

W HERE age>20

W HERE子句可包括各种条件运算符:

比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<

范围运算符(表达式值是否在指定的范围):BETWEEN…AND…

NOT BETWEEN…AND…

列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……)

NOT IN (项1,项2……)

模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE

空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL

逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR

1、范围运算符例:age BETW EEN 10 AND 30相当于age>=10 AND age<=30

2、列表运算符例:country IN ('Germany','China')

3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。

可使用以下通配字符:

百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。

下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。

方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

例如:

限制以Publishing结尾,使用LIKE '%Publishing'

限制以A开头:LIKE '[A]%'

限制以A开头外:LIKE '[^A]%'

4、空值判断符例W HERE age IS NULL

5、逻辑运算符:优先级为NO T、AND、OR

(四)查询结果排序

使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:

ORDER BY {column_name [ASC|DESC]} [,…n]

其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和i mage数据类型进行排序。

例如:

SELECT *

FROM usertable

ORDER BY age desc,userid ASC

另外,可以根据表达式进行排序。

二、联合查询

UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:

select_statement

UNION [ALL] selectstatement

[UNION [ALL] selectstatement][…n]

其中selectstatement为待联合的SELECT查询语句。

ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。

联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的U NION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:

查询1 UNION (查询2 UNION 查询3)

三、连接查询

通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。

在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。

连接可以在SELECT 语句的FROM子句或W HERE子句中建立,似是而非在FRO M子句中指出连接时有助于将连接操作与W HERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。

SQL-92标准所定义的FROM子句的连接语法格式为:

FROM join_table join_type join_table

[ON (join_condition)]

其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。

相关文档
最新文档