|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。数据用SQL创立新表
注重:
假如你还没有创建本人的数据库,如今就跳回到第三章创立这个库。你毫不能向master,tempdb或任何其他任何体系数据库中增加数据。
从SQLSever程序组(在义务栏中)中启动ISQL/w程序。呈现查询窗口后,从窗口顶部的下拉列表当选择你在第三章所创立的数据库。下一步,在查询窗口中键进上面的SQL语句,单击实行查询按钮,实行这个语句:
CREATETABLEguestbook(visitorVARCHAR(40),commentsTEXT,entrydate
DATETIME)
假如统统一般,你会在了局窗口中看到以下的笔墨(假如呈现非常,请参阅第三章):
Thiscommandditnotreturndata,anditdidnotreturnanyrows
庆祝你,你已创建了你的第一个表!
你所创立的表名为guestbook,你可使用这个表来存储来字你站点会见者的信息。你是用REEATETABLE语句创立的这个表,这个语句有两部分:第一部分指定表的名子;第二部分是括在括号中的各字段的称号和属性,互相之间用逗号离隔。
表guestbook有三个字段:visitor,comments和entrydate。visitor字段存储会见者的名字,comments字段存储会见者对你站点的定见,entrydate字段存储会见者会见你站点的日期和工夫。
注重每一个字段名前面都跟有一个专门的表达式。比方,字段名comments前面跟有表达式TEXT。这个表达式指定了字段的数据范例。数据范例决意了一个字段能够存储甚么样的数据。由于字段comments包括文本信息,其数据范例界说为文本型。
字段有很多分歧的数据范例。下一大节报告SQL所撑持的一些主要的数据范例。
字段范例
分歧的字段范例用来寄存分歧范例的数据。创立和利用表时,更你应当了解五种经常使用的字段范例:字符型,文本型,数值型,逻辑性和日期型。
字符型数据
字符型数据十分有效。当你必要存储短的字符串信息时,你老是要用到字符型数据。比方,你能够把从HTMLform的文本框中汇集到的信息放在字符型字段中。
要创建一个字段用来寄存可变长度的字符串信息,你可使用表达式VARCHAR。思索你后面创立的表guestbook:
CREATETABLEguestbook(visitorVARCHAR(40),commentsTEXT,entrydate
DATETIME)
在这个例子中,字段visitor的数据范例为VARCHAR。注重跟在数据范例前面的括号中的数字。这个数字指定了这个字段所同意寄存的字符串的最年夜长度。在这个例子中,字段visitor能寄存的字符串最长为四十个字符。假如名字太长,字符串会被截断,只保存四十个字符。
VARCHAR范例能够存储的字符串最长为255个字符。要存储更长的字符串数据,可使用文本型数据(下一节中报告)。
另外一种字符型数据用来存储流动长度的字符数据。上面是一个利用这类数据范例的例子:
CREATETABLEguestbook(visitorCHAR(40),commentsTEXT,entrydate
DATETIME)
在这个例子中,字段visitor被用来存储四十个字符的流动长度字符串。表达式CHAR指定了这个字段应当是流动长度的字符串。
VARCHAR型和CHAR型数据的这个不同是渺小的,可是十分主要。假设你向一个长度为四十个字符的VARCHAR型字段中输出数据BillGates。当你今后从这个字段中掏出此数据时,你掏出的数据其长度为十个字符――字符串BillGates的长度。
如今假设你把字符串输出一个长度为四十个字符的CHAR型字段中,那末当你掏出数据时,所掏出的数据长度将是四十个字符。字符串的前面会被附加过剩的空格。
当你创建本人的站点时,你会发明利用VARCHAR型字段要比CHAR型字段便利的多。利用VARCHAR型字段时,你不必要为剪失落你数据中过剩的空格而费心。
VARCHAR型字段的另外一个凸起的优点是它能够比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很年夜时,这类内存和磁盘空间的节俭会变得十分主要。
文本型数据
字符型数据限定了字符串的长度不克不及凌驾255个字符。而利用文本型数据,你能够寄存凌驾二十亿个字符的字符串。当你必要存储年夜串的字符时,应当利用文本型数据。
这里有一个利用文本型数据的例子:
CREATETABLEguestbook(visitorVARCHAR(40),commentsTEXT,entrydate
DATETIME)
在这个例子中,字段comments被用来寄存会见者对你站点的定见。注重文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据一般要末为空,要末很年夜。
当你从HTMLform的多行文本编纂框(TEXTAREA)中搜集数据时,你应当把搜集的信息存储于文本型字段中。可是,不管什么时候,只需你能制止利用文本型字段,你就应当不合用它。文本型字段既年夜且慢,滥用文本型字段会使服务器速率变慢。文本型字段还会吃失落大批的磁盘空间。
告诫:
一旦你向文本型字段中输出了任何数据(乃至是空值),就会有2K的空间被主动分派给该数据。除非删除该纪录,不然你没法发出这部分存储空间。
数值型数据
SQLSever撑持很多种分歧的数值型数据。你能够存储整数、小数、和钱数。
一般,当你必要在表中的寄存数字时,你要利用整型(INT)数据。INT型数据的表数局限是从-2,147,483,647到2,147,483,647的整数。上面是一个怎样利用INT型数据的例子:
CREATETABLEvisitlog(visitorVARCHAR(40),numvisitsINT)
这个表能够用来纪录你站点被会见的次数。只需没有人会见你的站点凌驾2,147,483,647次,nubvisits字段就能够存储会见次数。
为了节俭内存空间,你可使用SMALLINT型数据。SMALLINT型数据能够存储从-32768到32768的整数。这类数据范例的利用办法与INT型完整不异。
最初,假如你其实必要节俭空间,你可使用TINYINT型数据。一样,这类范例的利用办法也与INT型不异,分歧的是这类范例的字段只能存储从0到255的整数。TINYINT型字段不克不及用来存储正数。
一般,为了节俭空间,应当尽量的利用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来仿佛不同不年夜,可是在对照年夜的表中,字节数的增加是很快的。另外一方面,一旦你已创立了一个字段,要修正它是很坚苦的。因而,为平安起见,你应当展望以下,一个字段所必要存储的数值最年夜有多是多年夜,然后选择得当的数据范例。
为了能对字段所寄存的数占有更多的把持,你可使用NUMERIC型数据来同时暗示一个数的整数部分和小数部分。NUMERIC型数据使你能暗示十分年夜的数――比INT型数据要年夜很多。一个NUMERIC型字段能够存储从-1038到1038局限内的数。NUMERIC型数据还使你能暗示有小数部分的数。比方,你能够在NUMERIC型字段中存储小数3.14。
当界说一个NUMERIC型字段时,你必要同时指定整数部分的巨细和小数部分的巨细。这里有一个利用这类数据范例的例子:
CREATETABLEnumeric_data(bignumberNUMERIC(28,0),
fractionNUMERIC(5,4))
当这个语句实行时,将创立一个名为numeric_data的包括两个字段的表。字段bignumber能够存储直到28位的整数。字段fraction能够存储有五位整数部分和四位小数部分的小数。
一个NUMERIC型数据的整数部分最年夜只能有28位,小数部分的位数必需小于或即是整数部分的位数,小数部分能够是零。
你可使用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型数据,以节俭空间。上面的例子显现了怎样利用这两种暗示钱的数据范例:
CREATETABLEproducts(productVARCHAR(40),priceMONEY,
Discount_priceSMALLMONEY)
这个表能够用来存储商品的扣头和一般售价。字段price的数据范例是MONEY,字段discount_price的数据范例是SMALLMONEY。
存储逻辑值
假如你利用复选框(CHECKBOX)从网页中汇集信息,你能够把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。这里有一个怎样利用这类字段的例子:
CREATETABLEopinion(visitorVARCHAR(40),goodBIT)
这个表能够用来寄存对你的网点举行平易近意查询拜访所得的信息。会见者能够投票暗示他们是不是喜好你的网点。假如他们投YES,就在BIT型字段中存进1。反之,假如他们投NO,就在字段中存进0(鄙人一章里,你将学会怎样盘算投票)。
小心,在你创立好一个表以后,你不克不及向表中增加BIT型字段。假如你盘算在一个表中包括BIT型字段,你必需在创立表时完成。
存储日期和工夫
当你创建一个网点时,你大概必要纪录在一段工夫内的会见者数目。为了可以存储日期和工夫,你必要利用DATETIME型数据,以下例所示:
CREATETABLvisitorlog(visitorVARCHAR(40),arrivaltimeDATETIME,
departuretimeDATETIME)
这个表能够用来纪录会见者进进和分开你网点的工夫和日期。一个DATETIME型的字段能够存储的日期局限是从1753年1月1日第一毫秒到9999年12月31日最初一毫秒。
假如你不必要掩盖这么年夜局限的日期和工夫,你可使用SMALLDATETIME型数据。它与DATETIME型数据一样利用,只不外它能暗示的日期和工夫局限比DATETIME型数据小,并且不如DATETIME型数据准确。一个SMALLDATETIME型的字段可以存储从1900年1月1日到2079年6月6日的日期,它只能准确到秒。
DATETIME型字段在你输出日期和工夫之前其实不包括实践的数据,熟悉这一点是主要的。鄙人一章,你将进修如何利用大批的SQL函数来读取和操纵日期和工夫(拜见上面的“缺省值”一节)。你也能够在VBScript和JScript中利用日期和工夫函数来向一个DATETIME型字段中输出日期和工夫。
字段属性
上一节先容了怎样创建包括分歧范例字段的表。在这一节中,你将学会怎样利用字段的三个属性。这些属性同意你把持空值,缺省值和标识值。
同意和克制空值
年夜多半字段能够承受空值(NULL)。当一个字段承受了空值后,假如你不改动它,它将一向坚持空值。空值(NULL)和零是分歧的,严厉的说,空值暗示没有任何值。
为了同意一个字段承受空值,你要在字段界说的前面利用表达式NULL。比方,上面的表中两个字段都同意承受空值:
CREATETABLEempty(empty1CHAR(40)NULL,empty2INTNULL(
注重:
BIT型数据不克不及是空值。一个这类范例的字段必需取0大概1。
偶然你必要克制一个字段利用空值。比方,假定有一个表存储着信誉卡号码和信誉卡无效日期,你不会但愿有人输出一个信誉卡号码但不输出无效日期。为了强迫两个字段都输出数据,你能够用上面的办法创建这个表:
CREATETABLEcreditcards(creditcard_numberCHAR(20)NOTNULL,
Creditcard_expireDATETIMENOTNULL)
注重字段界说的前面跟有表达式NOTNULL。经由过程包括表达式NOTNULL,你能够克制任何人只在一个字段中拔出数据,而不输出另外一个字段的数据。
你将会发明,在你建立本人的网点过程当中,这类克制空值的才能长短常有效的。假如你指定一个字段不克不及承受空值,那末当你试图输出一个空值时,会有毛病告诫。这些毛病告诫能够为程序调试供应有代价的线索。
缺省值
假定有一个存储地点信息的表,这个表的字段包含街道、乡村、州、邮政编码和国度。假如你估计地点的年夜部分是在美国,你能够把这个值作为country字段的缺省值。
为了在创立一个表时指定缺省值,你可使用表达式DEFAULT。请看上面这个在创立表时利用缺省值的例子:
CREATETABLEaddresses(streetVARCHAR(60)NULL,
cityVARCHAR(40)NULL,
stateVARCHAR(20)NULL
zipVARCHAR(20)NULL,
countryVARCHAR(30)DEFAULT‘USA’)
在这个例子中,字段country的缺省值被指定为美国。注重单引号的利用,引号指明这是字符型数据。为了给非字符型的字段指定缺省值,不要把该值扩在引号中:
CREATETABLEorders(priceMONEYDEFAULT$38.00,
quantityINTDEFAULT50,
entrydateDATETIMEDEFAULTGETDATE())
在这个CREATETABLE语句中,每一个字段都指定了一个缺省值。注重DATETIME型字段entrydate所指定的缺省值,该缺省值是函数Getdate()的前往值,该函数前往以后的日期和工夫。
标识字段
每一个表能够有一个也只能有一个标识字段。一个标识字段是独一标识表中每笔记录的特别字段。比方,数据库pubs中的表jobs包括了一个独一标识每一个事情标识字段:
job_idjob_desc
…………………………………………………………….
NewHireJobnotspecified
ChiefExecutiveofficer
BushnessOperationsManager
ChiefFinancialOfficier
Publisher
字段job_id为每一个事情供应了独一的一个数字。假如你决意增添一个新事情,新增纪录的job_id字段会被主动赋给一个新的独一值。
为了创建一个标识字段,你只需在字段界说前面加上表达式IDENTITY便可。你只能把NUMERIC型或INT型字段设为标识字段,这里有一个例子:
CREATETABLEvisitorID(theIDNUBERIC(18)IDENTITY,nameVARCHAR(40))
这个语句所创立的表包括一个名为theid的标识字段。每当一个新的会见者名字增加到这个表中时,这个字段就被主动赋给一个新值。你能够用这个表为你的站点的每个用户供应独一标识。
技能:
创建一个标示字段时,注重利用充足年夜的数据范例。比方你利用TINYINT型数据,那末你只能向表中增加255个纪录。假如你估计一个表大概会变得很年夜,你应当利用NUMERIC型数据。
标识字段的存在会使你想实验很多不成能的事变。比方,你大概想使用标识字段来对纪录举行基于它们在表中地位的运算。你应当丢弃这类企图。每一个纪录的标识字段的值是互不不异的,可是,这其实不克制一个标识字段的标识数字之间存在距离。比方,你永久不要试牟利用一个表的标识字段来掏出表中的前十个纪录。这类操纵会招致失利,好比说6号纪录和7号纪录基本不存在。
能够以较低的成本向客户提供IT所有权,当节约成本成为客户最高优先级时,解决方案提供商可以向更多的客户同时提供服务。虽然有许多来自RDBMS固有的局限性。 |
|