您的位置:首页 > 编程语言 > ASP

Asp学习者完整攻略之三:操作SQL:SQL基础:

2005-04-13 16:35 501 查看
noclass = new Array("未指定条件","");nclass = new Array();nclass[0] = new Array("Asp 教程","1","1");nclass[1] = new Array("Asp 实例","1","2");nclass[2] = new Array("Asp 帮助","1","3");nclass[3] = new Array("ASP 组件","1","4");nclass[4] = new Array("ASP 安全","1","5");nclass[5] = new Array("XML 相关","1","6");nclass[6] = new Array("子 程 序","1","7");nclass[7] = new Array("性能优化","1","8");nclass[8] = new Array("全文检索","1","9");nclass[9] = new Array("脚本编码","1","10");nclass[10] = new Array("打印相关","1","11");nclass[11] = new Array("远程脚本","1","12");nclass[12] = new Array("邮件相关","1","13");nclass[13] = new Array("系统相关","1","14");nclass[14] = new Array("客户端相关","1","15");nclass[15] = new Array("正则表达式","1","16");nclass[16] = new Array("数据库相关","1","17");nclass[17] = new Array("Js 语 法","16","18");nclass[18] = new Array("Js 实 例","16","19");nclass[19] = new Array("Js 文 摘","16","20");nclass[20] = new Array("PHP 综合","2","21");nclass[21] = new Array("PHP函数详解","2","22");nclass[22] = new Array("PHP语法帮助","2","23");nclass[23] = new Array("PHP 实例","2","24");nclass[24] = new Array("PHP 安全","2","25");nclass[25] = new Array("XML 应用","2","26");nclass[26] = new Array("图像处理","2","27");nclass[27] = new Array("文件处理","2","28");nclass[28] = new Array("邮件处理","2","29");nclass[29] = new Array("数据库操作","2","30");nclass[30] = new Array("ASP 综合","1","31");nclass[31] = new Array("Html教程","0","32");nclass[32] = new Array("HTML文摘","0","33");nclass[33] = new Array("Html技巧","0","34");nclass[34] = new Array("Dhtml技术","0","35");nclass[35] = new Array("CSS 教程","0","36");nclass[36] = new Array("CSS 实例","0","37");nclass[37] = new Array("CSS 文摘","0","38");nclass[38] = new Array("WEB 设计","0","39");nclass[39] = new Array("网站规划","0","40");nclass[40] = new Array("网站发展","0","41");nclass[41] = new Array("网站维护","0","42");nclass[42] = new Array("JSP 工具","3","43");nclass[43] = new Array("Jsp/Servlet","3","44");nclass[44] = new Array("J2EE/EJB/","3","45");nclass[45] = new Array("MS Access","13","46");nclass[46] = new Array("MS SQL","13","47");nclass[47] = new Array("DB2","13","48");nclass[48] = new Array("MySQL","13","49");nclass[49] = new Array("Oracle","13","50");nclass[50] = new Array("数据库综合","13","51");nclass[51] = new Array(".NET概论","4","52");nclass[52] = new Array("C#语言","4","53");nclass[53] = new Array("VB.net语言","4","54");nclass[54] = new Array("Asp.Net开发","4","55");nclass[55] = new Array("WebService","4","56");nclass[56] = new Array("XML应用","4","57");nclass[57] = new Array("winform应用","4","58");nclass[58] = new Array("数据库应用","4","59");nclass[59] = new Array(".NET安全","4","60");nclass[60] = new Array("控件开发使用","4","61");nclass[61] = new Array("Java新闻","10","62");nclass[62] = new Array("配置Java环境","10","63");nclass[63] = new Array("Java语言基础","10","64");nclass[64] = new Array("实用技巧","10","65");nclass[65] = new Array("Java线程","10","66");nclass[66] = new Array("Socket编程","10","67");nclass[67] = new Array("应用服务器","10","68");nclass[68] = new Array("Web Service","10","69");nclass[69] = new Array("J2EE","10","70");nclass[70] = new Array("EJB专题","10","71");nclass[71] = new Array("JAVA与XML","10","72");nclass[72] = new Array("Servlet与JSP","10","73");nclass[73] = new Array("Applet与Swing","10","74");nclass[74] = new Array("数据库专题","10","75");nclass[75] = new Array("JavaMail","10","76");nclass[76] = new Array("J2ME","10","77");nclass[77] = new Array("WAP应用技术","10","78");nclass[78] = new Array("Java认证考试","10","79");nclass[79] = new Array("网站综合","0","80");nclass[80] = new Array(".NET 综合","4","81");nclass[81] = new Array("Java 综合","10","82");nclass[82] = new Array("JavaScript","16","83");nclass[83] = new Array("VB 综合","6","84");nclass[84] = new Array("VB 窗体","6","85");nclass[85] = new Array("文本框控件","6","86");nclass[86] = new Array("标签控件","6","87");nclass[87] = new Array("命令按钮","6","88");nclass[88] = new Array("图片和图像","6","89");nclass[89] = new Array("容器控件","6","90");nclass[90] = new Array("定时器控件","6","91");nclass[91] = new Array("多媒体","6","92");nclass[92] = new Array("Delphi综合","5","93");nclass[93] = new Array("Delphi语法","5","94");nclass[94] = new Array("Delphi函数","5","95");nclass[95] = new Array("技巧实例","5","96");nclass[96] = new Array("ASP源码","17","97");nclass[97] = new Array("PHP源码","17","98");nclass[98] = new Array("JSP源码","17","99");nclass[99] = new Array(".NET源码","17","100");nclass[100] = new Array("CGI源码","17","101");nclass[101] = new Array("Java源码","17","102");nclass[102] = new Array("Delphi源码","17","103");nclass[103] = new Array("c/c++/c#源码","17","104");nclass[104] = new Array("VB源码","17","105");nclass[105] = new Array("其它代码","17","106");nclass[106] = new Array("网络工具","18","107");nclass[107] = new Array("系统工具","18","108");nclass[108] = new Array("多媒体类","18","109");nclass[109] = new Array("图形图像","18","110");nclass[110] = new Array("应用软件","18","111");nclass[111] = new Array("行业软件","18","112");nclass[112] = new Array("教育教学","18","113");nclass[113] = new Array("安全相关","18","114");nclass[114] = new Array("编程开发","18","115");nclass[115] = new Array("电子书库","18","116");nclass[116] = new Array("游戏娱乐","18","117");nclass[117] = new Array("Visual C++","9","118");nclass[118] = new Array("LINUX","11","119");nclass[119] = new Array("FreeBSD","11","120");nclass[120] = new Array("入侵教程","12","121");var onecount;onecount=121;function changelocation(locationid){document.myform.nclassid.length = 0;var locationid=locationid;document.myform.nclassid.options[document.myform.nclassid.length] = new Option(noclass[0], noclass[1]);var i;for (i=0;i < onecount; i++){if (nclass[i][1] == locationid){ document.myform.nclassid.options[document.myform.nclassid.length] = new Option(nclass[i][0], nclass[i][2]);}}}
前面说过,数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。
例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生一条新记录。通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型”一节中讲述),例如字段au_lname存储的是字符型数据。一个字段也可以存储其它类型的数据。使用SQL Sever,创建一个新表的方法是很多的。你可以可执行一个SQL语句或使用SQL事务管理器(SQL Enterprise Manager)来创建一个新表。在下一节里,你将学会如何用SQL语句来创建一个新表。用SQL创建新表注意如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库。你绝不能向master,tempdb或任何其他任何系统数据库中添加数据。从SQL Sever程序组(在任务栏中)中启动ISQL/w程序。出现查询窗口后,从窗口顶部的下拉列表中选择你在第三章所创建的数据库。下一步,在查询窗口中键入下面的SQL语句,单击执行查询按钮,执行这个语句:CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)如果一切正常,你会在结果窗口中看到如下的文字(如果出现异常,请参阅第三章):This command dit not return data ,and it did not return any rows 祝贺你,你已经建立了你的第一个表!你所创建的表名为guestbook,你可以使用这个表来存储来字你站点访问者的信息。你是用REEATE TABLE语句创建的这个表,这个语句有两部分:第一部份指定表的名子;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。表guestbook有三个字段:visitor,comments 和entrydate。visitor字段存储访问者的名字,comments字段存储访问者对你站点的意见,entrydate字段存储访问者访问你站点的日期和时间。注意每个字段名后面都跟有一个专门的表达式。例如,字段名comments后面跟有表达式TEXT。这个表达式指定了字段的数据类型。数据类型决定了一个字段可以存储什么样的数据。因为字段comments包含文本信息,其数据类型定义为文本型。字段有许多不同的数据类型。下一小节讲述SQL所支持的一些重要的数据类型。字段类型不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。字符型数据字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML form的文本框中搜集到的信息放在字符型字段中。要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创建的表guestbook:CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。VARCHAR类型可以存储的字符串最长为255个字符。要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子:CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate DATETIME)在这个例子中,字段visitor被用来存储四十个字符的固定长度字符串。表达式CHAR指定了这个字段应该是固定长度的字符串。VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。文本型数据字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。这里有一个使用文本型数据的例子:CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)在这个例子中,字段comments被用来存放访问者对你站点的意见。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。当你从HTML form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。警告一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。数值型数据SQL Sever支持许多种不同的数值型数据。你可以存储整数、小数、和钱数。通常,当你需要在表中的存放数字时,你要使用整型(INT)数据。INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数。下面是一个如何使用INT型数据的例子:CREATE TABLE visitlog (visitor VARCHAR(40),numvisits INT)这个表可以用来记录你站点被访问的次数。只要没有人访问你的站点超过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型字段时,你需要同时指定整数部分的大小和小数部分的大小。这里有一个使用这种数据类型的例子:CREATE TABLE numeric_data (bignumber NUMERIC(28,0), fraction NUMERIC (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型数据,以节省空间。下面的例子显示了如何使用这两种表示钱的数据类型:CREATE TABLE products (product VARCHAR(40),price MONEY,Discount_price SMALLMONEY) 这个表可以用来存储商品的折扣和普通售价。字段price 的数据类型是MONEY,字段discount_price的数据类型是SMALLMONEY。存储逻辑值如果你使用复选框(CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。这里有一个如何使用这种字段的例子:CREATE TABLE opinion (visitor VARCHAR(40),good BIT)这个表可以用来存放对你的网点进行民意调查所得的信息。访问者可以投票表示他们是否喜欢你的网点。如果他们投YES,就在BIT型字段中存入1。反之,如果他们投NO,就在字段中存入0(在下一章里,你将学会如何计算投票)。当心,在你创建好一个表之后,你不能向表中添加BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。存储日期和时间当你建立一个网点时,你也许需要记录在一段时间内的访问者数量。为了能够存储日期和时间,你需要使用DATETIME型数据,如下例所示:CREATE TABL visitorlog( visitor VARCHAR (40), arrivaltime DATETIME ,departuretime DATETIME)这个表可以用来记录访问者进入和离开你网点的时间和日期。一个DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。在下一章,你将学习怎样使用大量的SQL函数来读取和操作日期和时间(参见下面的“缺省值”一节)。你也可以在VBScript和JScript 中使用日期和时间函数来向一个DATETIME型字段中输入日期和时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: