BYsan

 找回密碼
 成為會員
搜索
熱搜: 活動 交友 discuz
查看: 2381|回復: 1

數據庫指令

[複製鏈接]
發表於 2005-6-13 13:23:38 | 顯示全部樓層 |閱讀模式
数据库基础知识

数据库管理技术的发展阶段

1. 人工管理阶段。
2. 文件管理阶段。
3. 数据库管理阶段。

数据库的基本术语

数据库:按照一定数据模型组织、存储在一起的,能为多个用户共享的、与应用程序相对独立、相互关联的数据集合。
数据库:就是把各种各样的数据按照一定的规则组合在一起形成的“数据”的“集合”
字段:表中纵的一列
记录:表中横的一行
值:纵横叉的地方
表:由横行竖列垂直相交而成
数据库:用来组织管理表的,一个数据库一般可以管理若干张表。
数据模型:数据库中数据的组织的形式。目前数据模型一般分为层次型、网络型、关系型。

数据库管理系统

数据库管理系统:帮助用户建立和管理数据库的软件系统。基于关系型数据模型的数据库管理系统称为关系型数据库管理系统。

在ASP中一般使用SQL Server或Access数据库。SQL Server运行稳定、效率高、速度快,但配置起来较困难、移植也比较复杂,适全大型网站使用;Access配置简单、移植方便,但效率较低,适合小型网站。

采用Access的优点:
1. Access数据库使用简单,可以使大家迅速掌握。
2. 对于一般的单位网站或个人网站,Access数据库绰绰有余。
3. 将Access数据库开发的程序转化为SQL Server数据也非常简单。


SQL语言简介

SQL(Structure Query Language)语言:结构化查询语言,是操作数据库的标准语言。
ASP中常用到的语句:
Select语句
Insert语句
Delete语句
Update语句

Select语句

SQL语言的主要功能之一就是实现数据库的查询,此时可以使用Select语句来取得满足特定条件的记录。
语法:
Select [Top(数值)] 字段列表 From 表 [Where 条件] [Order By 字段] [Group By 字段]

:Top(数值):表示只选取前多少条记录。
字段列表:就是要查询的字段,可以是表中的一个或几个字段,中间用逗号隔开。
表:就是要查询的数据表,如果是多个表,中间用逗号隔开
条件:查询时要求满足的条件
Order By:按字段排序,ASC表示为升序排列,DESC表示降序排列,默认为降序排列。
Group By:按字段求和。
 樓主| 發表於 2005-6-13 13:24:07 | 顯示全部樓層
例:
1. 选取全部数据
Select * From users
2. 选取指定字段的数据
Select real_name,email From users
如果只想选取表中某些字段的数据,在Select后面指定字段,可以指定多个列,但每个列之间必须用逗号隔开。
3. 只选取前3条记录
Select Top 3 * From users
4. 用表中原有的字段产生派生字段(利用一列或若干列产生一个新的字段)
Select real_name,(submit_date+365) AS new_date From users
5. 根据条件选取数据
Select * From users Where submit_date<#2003-11-1#
如果是多&#20010;&#26465;件必&#39035;用&#26465;件&#36830;接符
Select * From users Where submit_date<#2003-11-1# And real_name=”建波”
&#26465;件&#36830;接符
=
<>
>
>=
<
<=
Not
And
Or
Between
Not Between
In
Not In
Is NULL
Is Not NULL

6. 按&#20851;&#38190;字查找&#35760;&#24405;
Select * From users Where real_name like %勇%
有&#26102;查找&#26465;件可能不太精确。(模糊查找)
:%代表任意字符
7. 查&#35810;&#32467;果排序
Select * From users Order By real_name ASC
查&#35810;表中的&#25968;据&#26102;,&#24403;表中&#25968;据&#36739;多&#26102;,希望表中的&#25968;据能&#22815;按照我&#20204;要求的&#39034;序&#26174;&#29616;出&#26469;,利用Order By就可以&#23454;&#29616;了。
:如果有按多&#20010;字段排序,中&#38388;用逗&#21495;隔&#24320;,排序&#26102;,首先&#21442;考第一字段的值,&#24403;第一字段的值相同&#26102;,再&#21442;考第二字段的值,依此&#31867;推。
8. 查&#35810;&#28385;足&#26465;件的&#35760;&#24405;的&#24635;&#25968;
Select Count(*) As total From user Where submit_date<#2003-11-1#
9. &#32452;合查&#35810;
Select users.real_name,day_log.log_date,day_log.IP From users,day_log Where users.user_name=day_log.user_name

:在&#36873;取各&#20010;表的字段&#26102;,要&#26631;明是哪&#20010;表的字段。不&#36807;,&#23558;&#26469;引用&#26102;就不需要&#26631;明表了,只要用字段名就行了。
:用到的&#20004;&#20010;表之&#38388;用逗&#21495;隔&#24320;
:在&#20004;&#20010;表&#36830;接&#26102;,用到users.name=particular.name&#26465;件,表示根据&#20004;&#20010;表中的user_name字段&#23558;&#20004;&#20010;表合并成一&#20010;表。
:&#36825;只是&#31616;&#21333;的&#32452;合查&#35810;,&#36824;有左&#36830;接、右&#36830;接等。
10. 利用Group By分&#31867;合并
Select Sum(grade) As total_grade,Average(grade) As average_grade From usergrade Group By class
要求每&#20010;班&#32423;的&#24635;分和平均分


Insert &#35821;句

在ASP程序中,&#32463;常需要向&#25968;据&#24211;中插入&#25968;据,例如向用&#25143;表Users中增加新成&#21592;&#26102;,就需要&#23558;新用&#25143;的&#25968;据插入到表users中。此&#26102;,可以使用SQL&#35821;言中的Insert&#35821;句&#26469;&#23454;&#29616;&#36825;&#20010;功能。
&#35821;法:
Insert Into 表(字段1,字段2,…) values(字段1的值,字段2的值,…)

:利用上述&#35821;句可以&#32473;表中全部或部分字段&#36171;值。values括&#21495;中字段值的&#39034;序必&#39035;与前面&#25193;&#21495;中字段一一&#23545;&#24212;。各&#20010;字段之&#38388;、字段值&#36825;&#38388;用逗&#21495;分&#24320;。
:若某字段的&#31867;型&#20026;文本型或&#22791;注型,&#21017;&#35813;字段值&#20004;&#36793;要加引&#21495;;若&#20026;日期/&#26102;&#38388;型,&#21017;&#35813;字段值&#20004;&#36793;要加#&#21495;(加引&#21495;也可以);若&#20026;布&#23572;型,&#21017;&#35813;字段值&#20026;True或False;若&#20026;自&#21160;&#32534;&#21495;型,&#21017;不要&#32473;&#35813;字段&#36171;值,因&#20026;Access&#20250;自&#21160;加1或&#38543;便&#20135;生。
:若某字段值要用&#25968;据表的缺省值&#26102;,&#21017;在&#35813;字段值&#22788;填&#20889;DEFAULT;如果想&#36755;入的列值是空值&#26102;,&#21017;在列值&#22788;填&#20889;NULL。
:若使用DEFAULT作字段值&#26102;,如果&#35813;字段&#27809;有&#35774;定缺省值,但不是必填字段(允&#35768;NULL值),&#21017;&#32467;果&#20026;NULL;如果&#20026;必填字段(不允&#35768;NULL值),而在Insert&#35821;句中又&#27809;&#32473;&#35813;字段&#36171;值,那就&#20250;出&#38169;。
:Insert&#35821;句的要求非常复&#26434;,尤其是”默&#35748;值”、”必填字段”、”允&#35768;空字符串”几&#20010;&#23646;性。假&#35774;你&#27809;有在Access中&#36827;行特&#21035;的&#35774;置,那么一般&#26469;&#35828;,有值的字段出&#29616;在Insert&#35821;句中,&#27809;有值的字段就不要出&#29616;在Insert&#35821;句中。

例:
1. 只插入user_name字段
Insert Into users(user_name) values(“liya”)
2. 只插入user_name和real_name字段
Insert Into users(user_name,real_name) values(“feiyun”,”&#36153;云”)
:因&#20026;user_name&#20026;主&#38190;,所以必&#39035;插入值。而且主&#38190;&#36824;不能和原&#26469;的用&#25143;名重复。
3. 只插入user_name和submit_date字段
Insert Into users(user_name,submit_date) values(“luofang”,#2003-12-1#)
4. 假如在users表中增加了一&#20010;年&#40836;字段age,&#20026;&#25968;字&#31867;型
Insert Into users(user_name,age) values(“zhangpeng”,23)
5. 在users表中增加一&#26465;完整的&#35760;&#24405;
Insert Into users(user_name,password,real_name,tel,email,submit_date) values(“mengmeng”,”123456”,”萌萌”,”6887150”,mengmeng@henan.com,#2003-11-2#)

Insert&#35821;句的常&#35265;&#38169;&#35823;
1. User_name是主&#38190;,但&#27809;有&#36171;值
2. Real_name字段不允&#35768;空字符串,&#21364;&#36171;了空字符串(&#20004;&#20010;&#21452;引&#21495;表示空字符串)
Insert Into users(user_name,real_name) values(“tutu”,””)
不&#36807;&#35813;字段不是必填字段,可以&#36171;值NULL值。
Insert Into users(user_name,real_name) values(“tutu”,NULL)
:NULL和空字符串的&#21306;&#21035;:NULL表示什么都&#27809;有,而空字符串&#21364;表示有&#20869;容,只不&#36807;是&#38271;度&#20026;0的字符串。
3. 字符串&#20004;&#36793;&#27809;有加&#21452;引&#21495;
Insert Into users(user_name,real_name) values(“tutu”,涂涂)


Delete&#35821;句

在SQL&#35821;言中,可以使用Delete&#35821;句&#26469;&#21024;除表中&#26080;用的&#35760;&#24405;
&#35821;法:
Delete From 表 [Where &#26465;件]
:”Where&#26465;件”与Select中的用法是一&#26679;的,凡是符合&#26465;件的&#35760;&#24405;都&#20250;被&#21024;除,如果&#27809;有符合&#26465;件的&#35760;&#24405;,&#21017;不&#21024;除。
:如果省略”Where&#26465;件”,&#23558;&#21024;除所有&#25968;据。
例:
1. &#21024;除user_name&#20026;”tutu”的用&#25143;
Delete From users Where user_name=”tutu”
2. &#21024;除2003年1月1日前注&#20876;,且real_name&#20026;”李&#20122;”的用&#25143;
Delete From users Where submit_date<#2003-1-1# And real_name=”李&#20122;”
3. &#21024;除表中所有的&#25968;据
Delete From users


Update&#35821;句

使用Update&#35821;句&#26469;&#23454;&#29616;更新&#25968;据的功能。
&#35821;法:
Update &#25968;据表名 Set 字段1=字段值1,字段2=字段值2,… [Where &#26465;件]

:Update命令可以用&#26469;更新表&#20869;部分或全部的&#35760;&#24405;。其中”Where&#26465;件”是用&#26469;指定更新&#25968;据的范&#22260;的,其用法同Select&#35821;句中的”Where&#26465;件”的用法。凡是符合&#26465;件的&#35760;&#24405;都被更新,如果&#27809;有符合&#26465;件的&#35760;&#24405;&#21017;不更新。
:如果省略Where&#26465;件,&#23558;更新&#25968;据表&#20869;的全部&#35760;&#24405;
:如果想要更新&#25968;据,也可以先&#21024;除再添加。不&#36807;,&#36825;&#26679;的&#35805;,自&#21160;&#32534;&#21495;字段的值就&#20250;改&#21464;,而一般情&#20917;下可能不允&#35768;改&#21464;。所以建&#35758;&#36824;是用更新&#35821;句,因&#20026;它只更新指定的字段。

例:
1. 修改user_name&#20026;”jjshang”的用&#25143;的&#30005;&#35805;和Email地址。
Update users Set tel=”8282999”,email=jjshang@163.net Where user_name=”jjshang”
2. &#23558;所有2003年1月1日前注&#20876;的用&#25143;的注&#20876;日期&#32479;一更改&#20026;2003年1月1日。
Update users Set submit_date=#2003-1-1# Where submit_date<#2003-1-1#
3. 假如有年&#40836;字段age,&#23558;所有人的年&#40836;增加10&#23681;。
Update users Set age=age+10
您需要登錄後才可以回帖 登錄 | 成為會員

本版積分規則

小黑屋|手機版|Archiver|BYsan

GMT+8, 2024-5-5 01:49 AM , Processed in 0.055530 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表