数据库问题

数据库问题,第1张

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记录集分页等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9472306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存