SQL-语法参考手册(SQL)》.doc

上传人:豆**** 文档编号:23958244 上传时间:2022-07-02 格式:DOC 页数:45 大小:153.50KB
返回 下载 相关 举报
SQL-语法参考手册(SQL)》.doc_第1页
第1页 / 共45页
SQL-语法参考手册(SQL)》.doc_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《SQL-语法参考手册(SQL)》.doc》由会员分享,可在线阅读,更多相关《SQL-语法参考手册(SQL)》.doc(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateSQL-语法参考手册(SQL)SQL-语法参考手册(SQL)语法参考手册(SQL)DB2提供了关连式资料库的查询语言(StructuredQueryLanguage),是一种非常口语化、既易学又易懂的语法。此一语言几乎是每个资料库系统都必须提供的,用以表示关连式的*作,包含了资料的定义()以及资料的处理()。SQL原来拼成SEQUEL,这语言的原型以“系统R“的名字在

2、IBM圣荷西实验室完成,经过IBM内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统R的技术基础发展出来IBM的产品。而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在1987遵循一个几乎是以IBMSQL为基础的标准关连式资料语言定义。一、资料定义(DataDefinitionLanguage)资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。、建表格:CREATETABLEtable_name(column1DATAT

3、YPENOTNULLNOTNULLPRIMARYKEY,column2DATATYPENOTNULL,.)说明:DATATYPE-是资料的格式,详见表。NUTNULL-可不可以允许资料有空的(尚未有资料填入)。PRIMARYKEY-是本表的主键。、更改表格ALTERTABLEtable_nameADDCOLUMNcolumn_nameDATATYPE说明:增加一个栏位(没有删除某个栏位的语法。ALTERTABLEtable_nameADDPRIMARYKEY(column_name)说明:更改表得的定义把某个栏位设为主键。ALTERTABLEtable_nameDROPPRIMARYKEY(c

4、olumn_name)说明:把主键的定义删除。、建立索引CREATEINDEXindex_nameONtable_name(column_name)说明:对某个表格的栏位建立索引以增加查询时的速度。、删除DROPtable_nameDROPindex_name二、的资料形态DATATYPEssmallint16位元的整数。interger32位元的整数。decimal(p,s)p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为p=5;s=0。float32位元的实数。double64位元的实数。char(n)n长

5、度的字串,n不能超过254。varchar(n)长度不固定且其最大长度为n的字串,n不能超过4000。graphic(n)和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。vargraphic(n)可变长度且其最大长度为n的双字元字串,n不能超过2000。date包含了年份、月份、日期。time包含了小时、分钟、秒。timestamp包含了年、月、日、时、分、秒、千分之一秒。三、资料*作(DataManipulationLanguage)资料定义好之後接下来的就是资料的*作。资料的*作不外乎增加资料(inse

6、rt)、查询资料(query)、更改资料(update)、删除资料(delete)四种模式,以下分别介绍他们的语法:、增加资料:INSERTINTOtable_name(column1,column2,.)valueS(value1,value2,.)说明:1.若没有指定column系统则会按表格内的栏位顺序填入资料。2.栏位的资料形态和所填入的资料必须吻合。3.table_name也可以是景观view_name。INSERTINTOtable_name(column1,column2,.)SELECTcolumnx,columny,.FROManother_table说明:也可以经过一个子查

7、询(subquery)把别的表格的资料填入。、查询资料:基本查询SELECTcolumn1,columns2,.FROMtable_name说明:把table_name的特定栏位资料全部列出来SELECT*FROMtable_nameWHEREcolumn1=xxxANDcolumn2yyyORcolumn3zzz说明:1.*表示全部的栏位都列出来。2.WHERE之後是接条件式,把符合条件的资料列出来。SELECTcolumn1,column2FROMtable_nameORDERBYcolumn2DESC说明:ORDERBY是指定以某个栏位做排序,DESC是指从大到小排列,若没有指明,则是从

8、小到大排列组合查询组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。SELECT*FROMtable1,table2WHEREtable1.colum1=table2.column1说明:1.查询两个表格中其中column1值相同的资料。2.当然两个表格相互比较的栏位,其资料形态必须相同。3.一个复杂的查询其动用到的表格可能会很多个。整合性的查询:SELECTCOUNT(*)FROMtable_nameWHEREcolumn_name=xxx说明:查询符合条件的资料共有几笔。SELECTSUM(column1)FROMtable_name说明:1.计算出总

9、和,所选的栏位必须是可数的数字形态。2.除此以外还有AVG()是计算平均、MAX()、MIN()计算最大最小值的整合性查询。SELECTcolumn1,AVG(column2)FROMtable_nameGROUPBYcolumn1HAVINGAVG(column2)xxx说明:1.GROUPBY:以column1为一组计算column2的平均值必须和AVG、SUM等整合性查询的关键字一起使用。2.HAVING:必须和GROUPBY一起使用作为整合性的限制。复合性的查询SELECT*FROMtable_name1WHEREEXISTS(SELECT*FROMtable_name2WHEREco

10、nditions)说明:1.WHERE的conditions可以是另外一个的query。2.EXISTS在此是指存在与否。SELECT*FROMtable_name1WHEREcolumn1IN(SELECTcolumn1FROMtable_name2WHEREconditions)说明:1.IN後面接的是一个集合,表示column1存在集合里面。2.SELECT出来的资料形态必须符合column1。其他查询SELECT*FROMtable_name1WHEREcolumn1LIKEx%说明:LIKE必须和後面的x%相呼应表示以x为开头的字串。SELECT*FROMtable_name1WHE

11、REcolumn1IN(xxx,yyy,.)说明:IN後面接的是一个集合,表示column1存在集合里面。SELECT*FROMtable_name1WHEREcolumn1BETWEENxxANDyy说明:BETWEEN表示column1的值介於xx和yy之间。、更改资料:UPDATEtable_nameSETcolumn1=xxxWHEREconditoins说明:1.更改某个栏位设定其值为xxx。2.conditions是所要符合的条件、若没有WHERE则整个table的那个栏位都会全部被更改。、删除资料:DELETEFROMtable_nameWHEREconditions说明:删除符

12、合条件的资料。说明:关于WHERE条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:(1)如果是ACCESS数据库,则为:WHEREmydate#2000-01-01#(2)如果是ORACLE数据库,则为:WHEREmydatecast(2000-01-01asdate)或:WHEREmydateto_date(2000-01-01,yyyy-mm-dd)在Delphi中写成:thedate=2000-01-01;query1.SQL.add(select*fromabcwheremydatecast(+thedate+asdate);如果比较日期时间型,则为:WHEREmyd

13、atetimeto_date(2000-01-0110:00:01,yyyy-mm-ddhh24:mi:ss)SQLSERVER的数据类型1.SQLSERVER的数据类型数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQLServer提供了25种数据类型:Binary(n)Varbinary(n)Char(n)Varchar(n)Nchar(n)Nvarchar(n)DatetimeSmalldatetimeDecimal(p,s)Numeric(p,s)Flo

14、at(n)RealIntSmallintTinyintMoneySmallmoneyBitCursorSysnameTimestampUniqueidentifierTextImageNtext(1)二进制数据类型二进制数据包括Binary、Varbinary和ImageBinary数据类型既可以是固定长度的(Binary),也可以是变长度的。Binary(n)是n位固定的二进制数据。其中,n的取值范围是从1到8000。其存储窨的大小是n+4个字节。Varbinary(n)是n位变长度的二进制数据。其中,n的取值范围是从1到8000。其存储窨的大小是n+4个字节,不是n个字节。在Image数据

15、类型中存储的数据是以位字符串存储的,不是由SQLServer解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF和JPEG格式把数据存储在Image数据类型中。(2)字符数据类型字符数据的类型包括Char,Varchar和Text字符数据是由任何字母、符号和数字任意组合而成的数据。Varchar是变长字符数据,其长度不超过8KB。Char是定长字符数据,其长度最多为8KB。超过8KB的ASCII数据可以使用Text数据类型存储。例如,因为Html文档全部都是ASCII字符,并且在一般情况下长度超过8KB,所以这些文档可以Text数据类型存储在SQLServer中。(3)

16、Unicode数据类型Unicode数据类型包括Nchar,Nvarchar和Ntext在 MicrosoftSQLServer中,传统的非Unicode数据类型允许使用由特定字符集定义的字符。在SQLServer安装过程中,允许选择一种字符集。使用Unicode数据类型,列中可以存储任何由Unicode标准定义的字符。在Unicode标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所战胜的窨是使用非Unicode数据类型所占用的窨大小的两倍。在SQLServer中,Unicode数据以Nchar、Nvarchar和Ntext数据类型存储。使用这种字符类型存储的列可以存储

17、多个字符集中的字符。当列的长度变化时,应该使用Nvarchar字符类型,这时最多可以存储4000个字符。当列的长度固定不变时,应该使用Nchar字符类型,同样,这时最多可以存储4000个字符。当使用Ntext数据类型时,该列可以存储多于4000个字符。(4)日期和时间数据类型日期和时间数据类型包括Datetime和Smalldatetime两种类型日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/9812:15:00:00:00PM”和“1:28:29:15:01AM8/17/98”。前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。在 M

18、icrosoftSQLServer中,日期和时间数据类型包括Datetime和Smalldatetime两种类型时,所存储的日期范围是从1753年1月1日开始,到9999年12月31日结束(每一个值要求8个存储字节)。使用Smalldatetime数据类型时,所存储的日期范围是1900年1月1日开始,到2079年12月31日结束(每一个值要求4个存储字节)。日期的格式可以设定。设置日期格式的命令如下:SetDateFormatformat|format_var|其中,format|format_var是日期的顺序。有效的参数包括MDY、DMY、YMD、YDM、MYD和DYM。在默认情况下,日期

19、格式为MDY。例如,当执行SetDateFormatYMD之后,日期的格式为年月日形式;当执行SetDateFormatDMY之后,日期的格式为日月有年形式(5)数字数据类型数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数整数由正整数和负整数组成,例如39、25、0-2和33967。在MicrsoftSQLServer中,整数存储的数据类型是Int,Smallint和Tinyint。Int数据类型存储数据的范围大于Smallint数据类型存储数据的范围,而Smallint据类型存储数据的范围大于Tinyint数据类型存储数据的范围。使用Int数据狗昔存储数据的范围是从-21

20、47483648到2147483647(每一个值要求4个字节存储空间)。使用Smallint数据类型时,存储数据的范围从-32768到32767(每一个值要求2个字节存储空间)。使用Tinyint数据类型时,存储数据的范围是从0到255(每一个值要求1个字节存储空间)。精确小娄数据在SQLServer中的数据类型是Decimal和Numeric。这种数据所占的存储空间根据该数据的位数后的位数来确定。在SQLServer中,近似小数数据的数据类型是Float和Real。例如,三分之一这个分数记作。3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完

21、全一样。(6)货币数据表示正的或者负的货币数量。在 MicrosoftSQLServer中,货币数据的数据类型是Money和SmallmoneyMoney数据类型要求8个存储字节,Smallmoney数据类型要求4个存储字节。(7)特殊数据类型特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即Timestamp、Bit和Uniqueidentifier。Timestamp用于表示SQLServer活动的先后顺序,以二进投影的格式表示。Timestamp数据与插入数据或者日期和时间没有关系。Bit由1或者0组成。当表示真或者假、ON或者OFF时,使用Bit数据类型。例如,询问是否是

22、每一次访问的客户机请求可以存储在这种数据类型的列中。Uniqueidentifier由16字节的十六进制数字组成,表示一个全局唯一的。当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。2.用户定义的数据类型用户定义的数据类型基于在 MicrosoftSQLServer中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。例如,可定义一种称为postal_code的数据类型,它基于Char数据类型。当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统

23、数据类型和数据类型的可空性。(1)创建用户定义的数据类型创建用户定义的数据类型可以使用Transact-SQL语句。系统存储过程sp_addtype可以来创建用户定义的数据类型。其语法形式如下:sp_addtypetype,system_data_bype,null_type其中,type是用户定义的数据类型的名称。system_data_type是系统提供的数据类型,例如Decimal、Int、Char等等。null_type表示该数据类型是如何处理空值的,必须使用单引号引起来,例如NULL、NOTNULL或者NONULL。例子:UsecustExecsp_addtypessn,Varcha

24、r(11),NotNull创建一个用户定义的数据类型ssn,其基于的系统数据类型是变长为11的字符,不允许空。例子:UsecustExecsp_addtypebirthday,datetime,Null创建一个用户定义的数据类型birthday,其基于的系统数据类型是DateTime,允许空。例子:UsemasterExecsp_addtypetelephone,varchar(24),NotNullEexcsp_addtypefax,varchar(24),Null创建两个数据类型,即telephone和fax(2)删除用户定义的数据类型当用户定义的数据类型不需要时,可删除。删除用户定义的数

25、据类型的命令是sp_droptypetype。例子:UsemasterExecsp_droptypessn注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。以下为SQLSERVER7.0以上版本的字段类型说明。SQLSERVER6.5的字段类型说明请参考SQLSERVER提供的说明。字段类型描述bit0或1的整型数字int从-231(-2,147,483,648)到231(2,147,483,647)的整型数字smallint从-215(-32,768)到215(32,767)的整型数字tinyint从0到255的整型数字dec

26、imal从-1038到1038-1的定精度与有效位数的数字numericdecimal的同义词money从-263(-922,337,203,685,477.5808)到263-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十smallmoney从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十float从-1.79E+308到1.79E+308可变精度的数字real从-3.04E+38到3.04E+38可变精度的数字datetime从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3

27、.33毫秒smalldatetime从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟timestamp时间戳,一个数据库宽度的唯一数字uniqueidentifier全球唯一标识符GUIDchar定长非Unicode的字符型数据,最大长度为8000varchar变长非Unicode的字符型数据,最大长度为8000text变长非Unicode的字符型数据,最大长度为231-1(2G)nchar定长Unicode的字符型数据,最大长度为8000nvarchar变长Unicode的字符型数据,最大长度为8000ntext变长Unicode的字符型数据,最大长度为231-1(2G)binary定长二进制数据,最大长度为8000varbinary变长二进制数据,最大长度为8000image变长二进制数据,最大长度为231-1(2G)-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com