SQL常用语句一览
(1)数据记录筛选:
sql="selectfrom数据表where字段名=字段值orderby字段名[desc]"
sql="selectfrom数据表where字段名like'%字段值%'orderby字段名[desc]"
sql="selecttop10from数据表where字段名orderby字段名[desc]"
sql="selectfrom数据表where字段名in('值1','值2','值3')"
sql="selectfrom数据表where字段名between值1and值2"
(2)更新数据记录:
sql="update数据表set字段名=字段值where条件表达式"
sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式"
(3)删除数据记录:
sql="deletefrom数据表where条件表达式"
sql="deletefrom数据表"(将数据表所有记录删除)
(4)添加数据记录:
sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"
sql="insertinto目标数据表selectfrom源数据表"(把源数据表的记录添加到目标数据表)
(5)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(|字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="selectsum(字段名)as别名from数据表where条件表达式"
setrs=connexcute(sql)
用rs("别名")获取统的计值,其它函数运用同上。
(5)数据表的建立和删除:
CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)
例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ())
DROPTABLE数据表名称(永久性删除一个数据表)
4记录集对象的方法:
rsmovenext将记录指针从当前的位置向下移一行
rsmoveprevious将记录指针从当前的位置向上移一行
rsmovefirst将记录指针移到数据表第一行
rsmovelast将记录指针移到数据表最后一行
rsabsoluteposition=N将记录指针移到数据表第N行
rsabsolutepage=N将记录指针移到第N页的第一行
rspagesize=N设置每页为N条记录
rspagecount根据pagesize的设置返回总页数
rsrecordcount返回记录总数
rsbof返回记录指针是否超出数据表首端,true表示是,false为否
rseof返回记录指针是否超出数据表末端,true表示是,false为否
rsdelete删除当前记录,但记录指针不会向下移动
rsaddnew添加记录到数据表末端
rsupdate更新数据表记录
SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来?
添加、删除、修改使用dbExecute(Sql)命令执行 *** 作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意:单双引号的用法可能有误(没有测式)
Sql = "Select Distinct 字段名 From 数据表"
Distinct函数,查询数据库存表内不重复的记录
Sql = "Select Count() From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=connexecute("select count(id) as idnum from news")
responsewrite rs("idnum")
sql="select from 数据表 where 字段名 between 值1 and 值2"
Sql="select from 数据表 where 字段名 between #2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。
select from tb_name where datetime between #2003-8-10# and #2003-8-12#
字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。
Sql="select from 数据表 where 字段名=字段值 order by 字段名 [desc]"
Sql="select from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
模糊查询
Sql="select top 10 from 数据表 where 字段名 order by 字段名 [desc]"
查找数据库中前10记录
Sql="select top n form 数据表 order by newid()"
随机取出数据库中的若干条记录的方法
top n,n就是要取出的记录数
Sql="select from 数据表 where 字段名 in ('值1','值2','值3')"
╔----------------╗
☆ 添加数据记录 ☆
╚----------------╝
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 数据表 valuess (值1,值2,值3 …)"
不指定具体字段名表示将按照数据表中字段的顺序,依次添加
sql="insert into 目标数据表 select from 源数据表"
把源数据表的记录添加到目标数据表
╔----------------╗
☆ 更新数据记录 ☆
╚----------------╝
Sql="update 数据表 set 字段名=字段值 where 条件表达式"
Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n "
没有条件则更新整个数据表中的指定字段值
╔----------------╗
☆ 删除数据记录 ☆
╚----------------╝
Sql="delete from 数据表 where 条件表达式"
Sql="delete from 数据表"
没有条件将删除数据表中所有记录)
╔--------------------╗
☆ 数据记录统计函数 ☆
╚--------------------╝
AVG(字段名) 得出一个表格栏平均值
COUNT(|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=connexcute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
╔----------------------╗
☆ 数据表的建立和删除 ☆
╚----------------------╝
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
╔--------------------╗
☆ 记录集对象的方法 ☆
╚--------------------╝
rsmovenext 将记录指针从当前的位置向下移一行
rsmoveprevious 将记录指针从当前的位置向上移一行
rsmovefirst 将记录指针移到数据表第一行
rsmovelast 将记录指针移到数据表最后一行
rsabsoluteposition=N 将记录指针移到数据表第N行
rsabsolutepage=N 将记录指针移到第N页的第一行
rspagesize=N 设置每页为N条记录
rspagecount 根据 pagesize 的设置返回总页数
rsrecordcount 返回记录总数
rsbof 返回记录指针是否超出数据表首端,true表示是,false为否
rseof 返回记录指针是否超出数据表末端,true表示是,false为否
rsdelete 删除当前记录,但记录指针不会向下移动
rsaddnew 添加记录到数据表末端
rsupdate 更新数据表记录
pageCount = recordCount / pageSize; // 计算共有多少页
你自己算算啊 5/3肯定等于1啊
你要这样(recordCount+pageSize-1)/pageSize
那就ok了。
用一个分页类。直接调用。
<php
/
分页类
用DBMySQL类读取数据库
/
class BreakPage
{
//属性开始
var $pageparam="pageno";
var $sql;//显示数据的sql
var $countsql;//显示总记录数的SQL
var $max_line;//最大记录数
var $begin_record;//开始记录数
var $current_page;//当前页
var $total_record;//总记录数
var $total_page;//总页数
var $conn_id;//数据库连接
var $query_id;//查询句柄
var $row_num;//当页记录的条数
var $url;//url
var $param="";
//属性结束
function setpageparam($pageparam)
{
$this->pageparam=$pageparam;
}
function getpageparam()
{
return $this->pageparam;
}
function setrows($rows)
{
$this->row_num=$rows;
}
function getrows()
{
return $this->row_num;
}
function setparam($param)
{
$this->param=$param;
}
function getparam()
{
return $this->param;
}
function seturl($url)
{
$this->url=$url;
}
function geturl()
{
return $this->url;
}
//属设置开始
function setcountsql($countsql)
{
$this->countsql="select count() as count from ("$countsql") as temp1";
}
function getcountsql()
{
return $this->countsql;
}
function settotalpage($totalpage)
{
$this->total_page=$totalpage;
}
function gettotalpage()
{
return $this->total_page;
}
function settotalrecord($totalrecord)
{
$this->total_record=$totalrecord;
}
function gettotalrecord()
{
return $this->total_record;
}
/
设置当前页,从1开始
@param unknown_type $currentpage
/
function setcurrentpage($currentpage)
{
$this->current_page=$currentpage<1 1:$currentpage;
}
function getcurrentpage()
{
return $this->current_page;
}
function setbeginline($begin)
{
$this->begin_record=$begin;
}
function getbeginline()
{
return $this->begin_record;
}
function setsql($sql)
{
$this->sql=$sql;
}
function getsql()
{
return $this->sql;
}
/
设置最大记录数
@param unknown_type $maxline
/
function setmaxline($maxline)
{
$this->max_line=$maxline;
}
function getmaxline()
{
return $this->max_line;
}
//属性设置结束
function __construct()
{//连接数据库
$this->setbeginline(0);
$this->setmaxline(10);
}
function __destruct()
{
}
//方法开始
/
主体函数,查询当前页的记录,同时返回信息
@param string $sql:查询的SQL,如select from table1;
@param string $countsql:总数量的SQL,如select count() from table1;
@return 当前页的记录
/
function getrecords($db,$sql)
{
$this->setsql($sql);//设置查询的SQL
$this->setcountsql($sql);//设置查询总数量的SQL
//查询总记录数,可用gettotalrecord()方法返回总记录数
$db->query($this->getcountsql());
$db->seek(0);
//返总记录数
$this->settotalrecord($db->f(0));
$db->free();
//根据当前页和每页最大记录数计算开始和结束记录
//可用getbeginline()方法查询开始记录值,即limit的开始值
//可用getmaxline()方法查询每页记录数,即limit的第二个限制值
$this->setbeginline(($this->getcurrentpage()-1)$this->getmaxline());//设置开始记录值,即limit的开始值
//计算结束
//计算总页数
//可用gettotalpage()查询总页数
$this->settotalpage((int)(($this->gettotalrecord()+$this->getmaxline()-1)/$this->getmaxline()));//(总记录数+每页记录数-1)/每页记录数
//计算结束
//返回当前记录
$temp_sql=$this->getsql()" limit "$this->getbeginline()","$this->getmaxline();//构造限制的SQL语句
$db->query($temp_sql);
$result=$db->getalldata();
return $result;
//结束
}
function paint()
{
$prepg=$this->getcurrentpage()<=1 1:$this->getcurrentpage()-1;//上一页
$nextpg=$this->getcurrentpage()>=$this->gettotalpage() $this->gettotalpage():$this->getcurrentpage()+1;//下一页
$otherparam=$this->getparam()!="" "&"$this->getparam():"";
$pagenav="<table><tr>";
if($this->getcurrentpage()==1)
{//第一页
$pagenav="<td nowrap='nowrap' style='font-size: 12px'><a disabled='disabled'>首页</a></td><td nowrap='nowrap' style='font-size: 12px'><< </td>";
}
else
{
$pagenav="<td nowrap='nowrap' style='font-size: 12px'><a href='"$this->geturl()""$this->getpageparam()"=1$otherparam'>首页</a></td><td nowrap='nowrap' style='font-size: 12px'><< </td>";
}
if($this->getcurrentpage()>1)
{//有上一页
$pagenav="<td nowrap='nowrap' style='font-size: 12px'><a href='"$this->geturl()""$this->getpageparam()"=$prepg$otherparam'>上一页</a></td>";
}
else
{//第一页
$pagenav="<td nowrap='nowrap' style='font-size: 12px'><a disabled='disabled'>上一页</a></td>";
}
if($this->getcurrentpage()<$this->gettotalpage())
{//有下一页
$pagenav="<td nowrap='nowrap' style='font-size: 12px'> <a href='"$this->geturl()""$this->getpageparam()"=$nextpg$otherparam'>下一页</a></td>";
}
else
{
$pagenav="<td nowrap='nowrap' style='font-size: 12px'> <a disabled='disabled'>下一页</a></td>";
}
if($this->getcurrentpage()>=$this->gettotalpage())
{//没有下一页
$pagenav="<td nowrap='nowrap' style='font-size: 12px'>>></td><td nowrap='nowrap' style='font-size: 12px'><a disabled='disabled'>尾页</a></td>";
}
else
{
$pagenav="<td nowrap='nowrap' style='font-size: 12px'>>></td><td nowrap='nowrap' style='font-size: 12px'><a href='"$this->geturl()""$this->getpageparam()"="$this->gettotalpage()"$otherparam'>尾页</a></td>";
}
//下拉跳转列表,循环列出所有页码:
$onchange=$otherparam!="" 'windowlocation="'$this->url''$this->getpageparam()'="+thisvalue+"'$otherparam'"':'windowlocation="'$this->url''$this->getpageparam()'="+thisvalue';
$pagenav="<td nowrap='nowrap' style='font-size: 12px'> 共<font color=red>"$this->gettotalpage()"</font>页</td><td nowrap='nowrap' style='font-size: 12px'> 第<font color=red>"$this->getcurrentpage()"</font>页</td><td nowrap='nowrap' style='font-size: 12px'> 转到第</td><td nowrap='nowrap'><select name='topage' size='1' onchange='$onchange'>";
for($i=1;$i<=$this->gettotalpage();$i++)
{
if($i==$this->getcurrentpage())
{
$pagenav="<option value='$i' selected>$i</option>\n";
}
else
{
$pagenav="<option value='$i'>$i</option>\n";
}
}
$pagenav="</select></td><td nowrap='nowrap' style='font-size: 12px'>页</td>";
$pagenav="</tr></table>";
return $pagenav;
}
//方法结束
}
>
您好,在数据库查询中,如果需要查询大量数据,一次性返回所有数据可能会导致性能问题,因此可以使用分段返回的方式来优化查询 *** 作。
分段返回的 *** 作步骤如下:
1 使用limit关键字限制每次查询返回的数据量,例如每次返回100条记录。
2 在查询时记录上一次查询返回的最后一条记录的ID或者其他唯一标识符。
3 在下一次查询时,使用上一次查询返回的标识符作为起始点继续查询下一批数据。
4 重复步骤1-3,直到查询完所有数据。
需要注意的是,在使用分段返回时,每次查询返回的数据量应该尽量控制在一个合理的范围内,避免返回过多数据导致性能问题。同时,分段返回也需要考虑数据的一致性,确保每次返回的数据都是完整、准确的。
在具体的实现中,可以通过编写分页查询的SQL语句、使用游标等方式来实现分段返回的 *** 作。
数据的绝对定位出错了
以下是我的一个测试
<html>
<head>
<title>SQL连接测试及分页处理</title>
<style
type="text/css">
<!--
STYLE3
{font-size:
medium;
font-weight:
bold;
}
STYLE4
{
font-size:
large;
font-weight:
bold;
}
-->
</style>
</head>
<body>
<%
dim
conn
'数据库连接对象
Dim
rs
'RecordSet
对象
Dim
dbstr
'数据库文件地址
Dim
sql
'数据 *** 作指令
Dim
pageSize
'每页显示页数
Dim
pgnm
'总页数
Dim
page
'用户请求的页面索引
Dim
count
'消息计数器,用来判断是否到达分页条目
'初始化消息计数器
count=0
'定义每页显示记录数
pageSize=2
'数据库文件
dbstr="studentmdb"
'SQL命令,不区分大小写
sql="select
from
student"
'使用Sevrer对象的CreateObject方法建立Connection对象
Set
conn=ServerCreateObject("ADODBConnection")
Set
rs=ServerCreateObject("ADODBRecordSet")
'设置Connection对象的ConnectionString
connConnectionString="Provider=MicrosoftJetOLEDB40;Data
Source="
connConnectionString=connConnectionString&ServerMapPath(dbstr)
'connConnectionString="DSN=student2"
'连接数据库
connopen()
'设置rs的ActiveConnection对象
rsActiveConnection=conn
'设置游标类型
rsCursorType=1
'设置锁定类型,默认为1,也就是下面代码可以省略
rsLockType=1
'打开记录集
rsopen
sql
if(rsEOF)
then
ResponseWrite("暂时没有任何信息!")
Responseend
end
if
rsPageSize=pageSize
pgnm=rsPageCount
page=requestQueryString("page")
if(IsEmpty(page)
or
cint(page)<1
or
cint(page)>pgnm)
then
page=1
end
if
rsabsolutePage=page
'指定当前页码
%>
<div
align="center">
<p
class="STYLE4">学生信息表</p>
<table
width="770"
border="1"
align="center"
id="table1">
<tr>
<th
scope="col"><span
class="STYLE3">学号</span></th>
<th
scope="col"><span
class="STYLE3">姓名</span></th>
<th
scope="col"><span
class="STYLE3">年龄</span></th>
<th
scope="col"><span
class="STYLE3">籍贯</span></th>
<th
scope="col"><span
class="STYLE3">班号</span></th>
</tr>
<%
do
while(not
rsEOF
and
count<>pageSize)
%>
<tr>
<!--
<td><%=rs("学号")%></td>
<td><%=rs("姓名")%></td>
<td><%=rs("年龄")%></td>
<td><%=rs("籍贯")%></td>
<td><%=rs("班号")%></td>-->
<td><%=rs(0)%></td>
<td><%=rs(1)%></td>
<td><%=rs(2)%></td>
<td><%=rs(3)%></td>
<td><%=rs(4)%></td>
</tr>
<%
rsMoveNext()
count=count+1
loop
%>
</table>
</div>
<br>
<div
align="center">
<table
width="770"
border="1"
id="table2">
<tr>
<td><p
align="center">共有记录<%=rsRecordCount%>条,
共有<%=pgnm%>页,
当前处于第<%=page%>页<br>
<!--以下为分页处理-->
<%
if
page>1
then
responsewrite
"<a
href=sqltestasppage=1>首页</a>
"
responsewrite
"<a
href=sqltestasppage="
&
page-1
&
">上一页</a>
"
end
if
if
rspagecount-page>=1
then
responsewrite
"<a
href=sqltestasppage="
&
(page+1)
&
">"
responsewrite
"下一页</a>
<a
href=sqltestasppage="&rspagecount&">尾页</a>"
end
if
%><br>
<%
if
page<2
then
responsewrite
"首页
上一页
"
else
responsewrite
"<a
href=sqltestasppage=1>首页</a>
"
responsewrite
"<a
href=sqltestasppage="
&
page-1
&
">上一页</a>
"
end
if
if
rspagecount-page<1
then
responsewrite
"下一页
尾页"
else
responsewrite
"<a
href=sqltestasppage="
&
(page+1)
&
">"
responsewrite
"下一页</a>
<a
href=sqltestasppage="&rspagecount&">尾页</a>"
end
if
%>
<!--以上为分页处理-->
</td>
</tr>
</table>
</div>
<%
rsclose()
'关闭及释放RecordSet对象
set
rs=nothing
connclose()
'关闭及释放connection对象
set
conn=nothing
%>
</body>
</html>
以上就是关于数据库问题全部的内容,包括:数据库问题、ASP.NET(C#)留言板计算总页数的问题、dw php mysql记录集分页等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)