ASP网页设计SQL中心语句
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。语句拔出数据向表中增加一个新纪录,你要利用SQLINSERT语句。这里有一个怎样利用这类语句的例子:
INSERTmytable(mycolumn)VALUES(‘somedata’)
这个语句把字符串’somedata’拔出表mytable的mycolumn字段中。将要被拔出数据的字段的名字在第一个括号中指定,实践的数据在第二个括号中给出。
INSERT语句的完全句法以下:
INSERT{table_name|view_name}[(column_list)]{DEFAULTVALUES|
Values_list|select_statement}
假如一个表有多个字段,经由过程把字段名和字段值用逗号离隔,你能够向一切的字段中拔出数据。假定表mytable有三个字段first_column,second_column,和third_column。上面的INSERT语句增加了一条三个字段都有值的完全纪录:
INSERTmytable(first_column,second_column,third_column)
VALUES(‘somedata’,’somemoredata’,’yetmoredata’)
注重
你可使用INSERT语句向文本型字段中拔出数据。可是,假如你必要输出很长的字符串,你应当利用WRITETEXT语句。这部份内容对本书来讲太初级了,因而不加会商。要懂得更多的信息,请参考MicrosoftSQLSever的文档。
假如你在INSERT语句中只指定两个字段和数据会怎样呢?换句话说,你向一个表中拔出一条新纪录,但有一个字段没有供应数据。在这类情形下,有上面的四种大概:
假如该字段有一个缺省值,该值会被利用。比方,假定你拔出新纪录时没有给字段third_column供应数据,而这个字段有一个缺省值’somevalue’。在这类情形下,当新纪录创建时会拔出值’somevalue’。
假如该字段能够承受空值,并且没出缺省值,则会被拔出空值。
假如该字段不克不及承受空值,并且没出缺省值,就会呈现毛病。你会收到毛病信息:
Thecolumnintablemytablemaynotbenull.
最初,假如该字段是一个标识字段,那末它会主动发生一个新值。当你向一个有标识字段的表中拔出新纪录时,只需疏忽该字段,标识字段会给本人赋一个新值。
注重
向一个有标识字段的表中拔出新纪录后,你能够用SQL变量@@identity来会见新纪录
的标识字段的值。思索以下的SQL语句:
INSERTmytable(first_column)VALUES(‘somevalue’)
INSERTanothertable(another_first,another_second)
VALUES(@@identity,’somevalue’)
假如表mytable有一个标识字段,该字段的值会被拔出表anothertable的another_first字段。这是由于变量@@identity老是保留最初一次拔出标识字段的值。
字段another_first应当与字段first_column有不异的数据范例。可是,字段another_first不克不及是应当标识字段。Another_first字段用来保留字段first_column的值。
删除纪录
要从表中删除一个或多个纪录,必要利用SQLDELETE语句。你能够给DELETE语句供应WHERE子句。WHERE子句用来选择要删除的纪录。比方,上面的这个DELETE语句只删除字段first_column的值即是’DeleteMe’的纪录:
DELETEmytableWHEREfirst_column=’DeltetMe’
DELETE语句的完全句法以下:
DELETE{table_name|view_name}
在SQLSELECT语句中可使用的任何前提都能够在DELECT语句的WHERE子句中利用。比方,上面的这个DELETE语句只删除那些first_column字段的值为’goodbye’或second_column字段的值为’solong’的纪录:
DELETEmytableWHEREfirst_column=’goodby’ORsecond_column=’solong’
假如你不给DELETE语句供应WHERE子句,表中的一切纪录都将被删除。你不该该有这类设法。假如你想删除应当表中的一切纪录,应利用第十章所讲的TRUNCATETABLE语句。
注重
为何要用TRUNCATETABLE语句取代DELETE语句?当你利用TRUNCATETABLE语句时,纪录的删除是不作纪录的。也就是说,这意味着TRUNCATETABLE要比DELETE快很多。
更新纪录
要修正表中已存在的一条或多笔记录,应利用SQLUPDATE语句。同DELETE语句一样,UPDATE语句可使用WHERE子句来选择更新特定的纪录。请看这个例子:
UPDATEmytableSETfirst_column=’Updated!’WHEREsecond_column=’UpdateMe!’
这个UPDATE语句更新一切second_column字段的值为’UpdateMe!’的纪录。对一切被选中的纪录,字段first_column的值被置为’Updated!’。
上面是UPDATE语句的完全句法:
UPDATE{table_name|view_name}SET[{table_name|view_name}]
{column_list|variable_list|variable_and_column_list}
[,{column_list2|variable_list2|variable_and_column_list2}…
[,{column_listN|variable_listN|variable_and_column_listN}]]
注重
你能够对文本型字段利用UPDATE语句。可是,假如你必要更新很长的字符串,应利用UPDATETEXT语句。这部份内容对本书来讲太初级了,因而不加会商。要懂得更多的信息,请参考MicrosoftSQLSever的文档。
假如你不供应WHERE子句,表中的一切纪录都将被更新。偶然这是有效的。比方,假如你想把表titles中的一切书的代价更加,你可使用以下的UPDATE语句:
你也能够同时更新多个字段。比方,上面的UPDATE语句同时更新first_column,second_column,和third_column这三个字段:
UPDATEmytableSETfirst_column=’Updated!’
Second_column=’Updated!’
Third_column=’Updated!’
WHEREfirst_column=’UpdateMe1’
技能
SQL疏忽语句中过剩的空格。你能够把SQL语句写成任何你最简单读的格局。
用SELECT创立纪录和表
你大概已注重到,INSERT语句与DELETE语句和UPDATE语句有一点分歧,它一次只操纵一个纪录。但是,有一个办法可使INSERT语句一次增加多个纪录。要作到这一点,你必要把INSERT语句与SELECT语句分离起来,象如许:
INSERTmytable(first_column,second_column)
SELECTanother_first,another_second
FROManothertable
WHEREanother_first=’CopyMe!’
这个语句从anothertable拷贝纪录到mytable.只要表anothertable中字段another_first的值为’CopyMe!’的纪录才被拷贝。
当为一个表中的纪录创建备份时,这类情势的INSERT语句长短常有效的。在删除一个表中的纪录之前,你能够先用这类办法把它们拷贝到另外一个表中。
假如你必要拷贝全部表,你可使用SELECTINTO语句。比方,上面的语句创立了一个名为newtable的新表,该表包括表mytable的一切数据:
SELECT*INTOnewtableFROMmytable
你也能够指定只要特定的字段被用来创立这个新表。要做到这一点,只需在字段列表中指定你想要拷贝的字段。别的,你可使用WHERE子句来限定拷贝到新表中的纪录。上面的例子只拷贝字段second_columnd的值即是’CopyMe!’的纪录的first_column字段。
SELECTfirst_columnINTOnewtable
FROMmytable
WHEREsecond_column=’CopyMe!’
利用SQL修正已创建的表是很坚苦的。比方,假如你向一个表中增加了一个字段,没有简单的举措往复除它。别的,假如你不当心把一个字段的数据范例给错了,你将没有举措改动它。可是,利用本节中报告的SQL语句,你能够绕过这两个成绩。
比方,假定你想从一个表中删除一个字段。利用SELE</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题: 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
页:
[1]