ASP与SQL数据库连接及SQL常⽤命令使⽤⽅法
<%
dim conn
set ateobject("tion")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称%>
<%
Dim startime,endtime
startime=timer()
'--------------------------------------------------------------------------
Dim strSQLServerName
Dim strSQLDBUserName
Dim strSQLDBPassword
Dim strSQLDBName
'数据库参数设置
'--------------------------------------------------------------------------
strSQLServerName = "zhixinda"      '服务器名称或地址
strSQLDBUserName = "sa"            '数据库帐号
strSQLDBPassword = "zhixinda"              '数据库密码
strSQLDBName = "gb"            '数据库名称
'--------------------------------------------------------------------------
Set conn = Server.CreateObject("ADODB.Connection")
strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
conn.Open strCon
%>
建⽴记录集对象:
set ateobject("dset")asp数据
rs.open SQL语句,conn,3,2
SQL常⽤命令使⽤⽅法:
RS.OPEN SQL,CONN,A,B
A: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动
ADOPENSTATIC(=3) 只读,当前数据记录可⾃由移动
ADOPENKEYSET(=1) 可读写,当前数据记录可⾃由移动
ADOPENDYNAMIC(=2) 可读写,当前数据记录可⾃由移动,可看到新增记录
B: ADLOCKREADONLY(=1) 默认值,⽤来打开只读记录
ADLOCKPESSIMISTIC(=2) 悲观锁定
ADLOCKOPTIMISTIC(=3) 乐观锁定
ADLOCKBATCHOPTIMISTIC(=4) 批次乐观锁定
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into ⽬标数据表 select * from 源数据表" (把源数据表的记录添加到⽬标数据表)
'获得刚刚插⼊数据的id值
set ute("select scope_identity()")
value=rs(0)'取得的当前值
(5) 数据记录统计函数:
AVG(字段名) 得出⼀个表格栏平均值
COUNT(*|字段名) 对数据⾏数的统计或对某⼀栏有值的数据⾏数统计
MAX(字段名) 取得⼀个表格栏最⼤的值
MIN(字段名) 取得⼀个表格栏最⼩的值
SUM(字段名) 把数据栏的值相加
+++++++++++++++++++++++++++++++++++++++++++++++++++
引⽤以上函数的⽅法:
1>记录集调出set ute("select COUNT(*) as count,id from user")
2>分开
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set ute(sql)
⽤ rs("别名") 获取统的计值,其它函数运⽤同上。
1>记录集调出
set ute("select COUNT(*) as count,id from user")
2>执⾏插⼊修改删除
sql="delete from 数据表 where 条件表达式"
+++++++++++++++++++++++++++++++++++++++++++++++++++
(5) 数据表的建⽴和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除⼀个数据表)
SELECT语句选项
ORDER BY – 按照指定列排序返回结果的⼦句
DISTINCT – 只返回结果集合内唯⼀⾏的关键词
COUNT -- 返回匹配查询的数据⾏总数数值的函数
AVG – 该函数返回指定列的平均值
SUM –该函数把指定的列中的数字加起来
MIN – 该函数返回列中最⼩的⾮NULL值
MAX –该函数返回列中的最⼤值
GROUP BY – 按列汇集查询函数结果的⼦句
SELECT * FROM Contacts ORDER BY first_name;
SELECT first_name, last_name FROM Contacts WHERE first_name BETWEEN ‘a’ AND ‘k’ ORDER BY last_name;
SELECT * FROM Contacts ORDER BY company, last_name, first_name;
SELECT * FROM Sales ORDER BY net_amount DESC, last_name, first_name;
SELECT company, first_name, net_amount FROM Sales ORDER BY start_date, last_name;
DISTINCT返回不重复结果
SELECT DISTINCT company FROM Sales;
SELECT DISTINCT company, last_name, first_name FROM Sales;
SELECT DISTINCT company, last_name, first_name FROM Sales WHERE net_amount > 100 ORDER BY company, net_amount;函数应⽤逻辑
$keyname = “COUNT(*)”;
$resultkey = “AVG(net_amount)”;
COUNT
COUNT函数计算出结果集合中的数据⾏数。和其他函数⼀样它接受⼀个参数。以下的基本⽰例能告诉你数据表内的⾏数:SELECT COUNT(*) FROM Sales;
你也可以⽤它来计算任何结果集合中的⾏数。
SELECT COUNT(*) FROM Sales WHERE net_amount > 100;
如果你想看看某特定列有多少⾏包含⾮空值,那你不妨对该列使⽤COUNT函数。注意,除⾮数据库设置为字段为空时缺省填充NULL否则将返回表内数据⾏的总数。另外,列出的列在超出⼀个的情况下会引起错误。
SELECT COUNT(company) FROM Sales;
COUNT还可以⽤来计算DISTINCT结果集合中的⾏数。
SELECT COUNT(DISTINCT company, last_name) FROM Sales;
COUNT语句通常⽤在程序中确定FOR循环的循环次数。
AVG
AVG返回某列所有字段的平均值,该列必须是数字数据类型。该函数⽤列的名字作为其参数,如果列字段数据类型是⾮数字类型的则函数返回“0”。SELECT AVG(net_amount) FROM Sales;
你可以结合⼦句限制该函数的应⽤范围。
SELECT AVG(net_amount) FROM Sales WHERE company LIKE ‘%ABCD Co%’;
就象所有聚集函数⼀样,ORDER BY语句将被忽略。
SUM
SUM的⼯作⽅式和AVG差不多,只不过该函数返回结果集合中所有字段值的和。
SELECT SUM(net_amount) FROM Sales WHERE net_amount > 100;
AVG、SUM、MIN和MAX函数在没有指定列的情况下都会返回错误,所以你不能使⽤“*”通配符。
MIN
MIN返回指定列中最⼩的⾮空值。如果指定列是数字数据类型则结果将是最⼩的数字。如果它是⼀种字符串数据类型则函数将返回按字母表顺序出现的第1个值。SELECT MIN(net_amount) FROM Sales WHERE last_name = “Smith”;
SELECT MIN(last_name) FROM Sales;
MAX
MAX的⼯作⽅式和MIN函数⼀样,只不过该函数返回最⼤的⾮空值。该函数也可以⽤于字符串或者数字列
SELECT MAX(net_amount) FROM Sales;
SELECT MAX(company) FROM Sales WHERE net_amount > 100;
MAX函数有时还⽤在包含⾃动递增键字段的列上确定下⼀条⽬的键ID
GROUP BY 令函数更有⽤
SELECT company, MAX(net_amount) FROM Sales GROUP BY company;
这样做可以获得每家公司net_amount的的最⼤值。
下⾯的例⼦演⽰了以上各种⽅式。⾸先,包括GROUP BY⼦句可以令你指定要显⽰的其他列。然⽽,你得知道这个例⼦将返回在组中遇到的第1个last_name值;Sum( net_amount )将显⽰全部公司的结果⽽不仅仅针对匹配姓⽒的数据⾏。这是因为,我们只使⽤了Company字段来定义我们的组。
SELECT company, last_name, SUM(net_amount) FROM Sales GROUP BY company;
在上⾯的例⼦中,last_name列实际上并没有提供什么有⽤的信息,但这样做是为了在下⼀个例⼦中要⽤到的功能做准备。
SELECT company, AVG(net_amount), last_name FROM Sales GROUP BY company, last_name;
上⾯的例⼦给每家公司中每⼀姓⽒给出了平均的net_amount。你列出GROUP BY列的顺序控制着结果的排序,但是实际的函数值结果是⼀样的。
下⾯的例⼦表明如何组织结果⽽不显⽰分组的列。在有些场合这样做是很有⽤的,例如,如果要显⽰个⼈的销售量但却不显⽰姓名就能⽤上下⾯的例⼦了:
SELECT company, COUNT(sale_id) FROM Sales GROUP BY company, last_name;
限制使⽤GROUP BY的查询
SELECT company, AVG(net_amount), FROM Sales WHERE net_amount > 100 GROUP BY company;
上⾯的例⼦只对那些满⾜WHERE限制条件的数据⾏适⽤AVG函数。注意,WHERE⼦句必须放在GROUP BY⼦句之前。你还可以⽤HAVING语句对分组计算之后限制返回的结果集合。
SELECT company, AVG(net_amount), FROM Sales WHERE last_name BETWEEN ‘a’ AND ‘m’ GROUP BY company HAVING
AVG(net_amount) > 500;
查询多个表
lumn1, lumn2 FROM table1, table2 lumn1 = lumn1;
lumn1, lumn2 FROM table1, table2, table3 lumn1 = lumn1 lumn1 = lumn1;
lumn1, lumn2 FROM table1 INNER JOIN table2
lumn1 = lumn1;
SELECT column1 FROM table1 WHERE EXISTS ( SELECT column1 FROM table2 lumn1 = lumn1 );

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。