十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MySQL为我们提供了delete和truncate语句来删除数据。
创新互联公司是一家专业提供桂阳企业网站建设,专注与成都网站制作、成都做网站、H5建站、小程序制作等业务。10年已为桂阳众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
delete 语句的定义:
删除数据的时候用的大多都是 delete 语句。现在让我们来看一下 delete语句的定义。
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
delete from friends where user_name = 'simaopig';
delete 注意事项:
从语法结构中,我们就可以看出,和 update 语法一样,我们是可以省略 where 子句的。不过这是一个很危险的行为。因为如果不指定 where 子句,delete 将删除表中所有的记录,而且是立即删除.
truncate 语句的简单说明:
这个语句之前我也没有接触过,也没有使用过。因为一般情况下,删除数据大家都在使用delete语句。其实这个truncate 命令很简单,它的意思是:删除表的所有记录。相当于 delete 语句不写 where 子句一样。其语法结构为:
TRUNCATE [TABLE] tbl_name
这里简单的给出个示例,我想删除 friends 表中所有的记录,可以使用如下语句:
truncate table friends;
truncate 和 delete的效率问题:
如果想要删除表的所有数据,truncate语句要比 delete 语句快。因为 truncate 删除了表,然后根据表结构重新建立它,而 delete 删除的是记录,并没有尝试去修改表。这也是为什么当向一个使用 delete 清空的表插入数据时,MySQL 会记住前面产生的AUTOINCREMENT序列,并且继续利用它对AUTOINCREMENT字段编号。而truncate删除表后,表是从1开始为autoincrement字段编号。
不过truncate命令快规快,却不像delete命令那样对事务处理是安全的。因此,如果我们想要执行truncate删除的表正在进行事务处理,这个命令就会产生退出并产生错误信息。
sample code:
?php
if($del_id!=""){
$del_num=count($del_id);
for($i=0;$i$del_num;$i++){
mysql_query("Delete from news where id='$del_id[$i]'");
}
echo("script type='text/javascript'alert('删除成功!');history.back();/script");
}else{
echo("script type='text/javascript'alert('请先选择项目!');history.back();/script");
}
?
什么教数据全部归0
我们假设数据库中有三张表。
a,b,c,每个表有几个字段,也有很多数据,
那么你的问题到底是如下哪种
1:删除掉该数据库中的所有表,a,b,c
2:把所有表的数据都清空,表结构保留
3:把表中所有的数据都变为整形数值0?
补充1:
如果你是3的问题的话,实现起来比较繁琐,并且我也不是很理解为什么要这样做,感觉挺没什么意义的,如果方便的话可以告诉我你的目的是什么,为什么要把所有的数据都变成0,或许可以换些办法
补充2:
听你的描述你可能是只有一个表,表中有很多的字段,每个字段都代表一个投票项目,而表中的数据记录,其实只有一条?
你可以通过pg_num_fields获得字段数量,在通过pg_field_name获得字段名称,依次运行update
$dbconn = pg_connect("host=localhost");
$res = pg_query($dbconn, "select * from your_talbe_name");
$i = pg_num_fields($res);
for ($j = 0; $j $i; $j++) {
$fieldname = pg_field_name($res, $j);
pg_query($dbconn, "update your_talbe_name set $fieldname=0");
}
另外,我个人认为你这样实现投票的管理不是很好,投票项目一多很难管理,建议
create table xxx
(
id serial primary key,
name text,
num int
)
把投票项目的名字也就是你原来列的名称放到name字段中,num则为投票数,这样以后再有这种问题,一个update xxx set num=0就OK了,管理起来也方便些。
比如你使用的数据库usrname/passwd为root/123456,database为test,新建了一个表为albums,有列artist,则最简单的代码实现如下:
?php
if (isset($_POST["name"])) {
$conn = mysql_connect("localhost", "root", "123456") or die(mysql_error());
$select_db = mysql_select_db("test", $conn) or die(mysql_error());
$sql = 'select * from albums where artist = "' . $_POST["name"] . '"';
$rs = mysql_query($sql);
if ($rs) {
if (mysql_num_rows($rs) 0) {
$sql = 'delete from albums where artist = "' . $_POST["name"] . '"';
echo $sql;
echo "br";
$rs = mysql_query($sql);
if ($rs) {
echo $_POST["name"] . " delete successfully";
} else {
echo "delete fail: " . mysql_error();
}
} else {
echo "the name " . $_POST["name"] . " no exist in this database";
}
} else {
echo 'mysql fail: ' . mysql_error();
}
mysql_close($conn);
}
?
htmlhead
meta http-equiv="content-type" content="text/html;charset=utf-8"
/head
body
form enctype="multipart/form-data" action="test.php" method="POST"
label查询名字/label
input type="text" name="name" /
input type="submit" value="从数据中查询并删除"
/form
/body
/html
操作步骤如下:
进入phpmyadmin;
选择要操作的数据库;如下图:
点击删除按钮;如下图:
点击确定按钮;如下图:
数据库删除成功!
或者点击SQL选项卡,输入删除命令,点击执行按钮即可删除数据库。如下示例: