当前位置:首页 »“秋了秋”个人博客 » WP教程 » Wordpress中mysql数据库操作指令

Wordpress中mysql数据库操作指令

作者:秋了秋 发表时间:2014年07月14日

wordpress中数据库的id想必一直是wordpress用户的烦恼,因为它的数据表结构是自增主键,即通过i++把文章id一直往后推移,这种自增id及其容易造成id断断续续,从而造成不连续不雅观的情况。其最大的问题是id的浪费以及id太长造成的网址太长。

前面我有写文章修改文章的id方法,就是通过数据库修改,但是每写一篇文章,就要对数据库操作几次,比如说查看空余id,查看新建文章的id,运行id置换语句,相对来说比较麻烦,都是纯靠手动。id连不连续没关系,毕竟已经定型了,搜索引擎也收录了。但空余id是很多人不能容忍的,之前已经写了的文章确实没办法,但是后续的新建文章应该注意这方面的问题。要想永久性实现空余id的利用,我特地去问了一些人,大部分都不会,或者还有一个更坑的淘宝卖家居然开价1w。。。

虽然我不会mysql语句,但我敢肯定方法还是有的,那些说不可能的都是一些小儿科在淘宝忽悠人的。在网上查了一些资料,已明白大概的思路,那就是写mysql查询和判断语句,把不存在文章的id利用起来。无奈不会mysql,有思路但不会写,在查资料的过程中倒总结出了一些mysql操作语句。

-- 生成100以内的空ID对应的记录 CREATE TABLE post_bk as SELECT iid AS ID, 'auto-draft' as post_status, CONCAT('//netblog.cn/', iid) AS guid, 'post' AS post_type, 1 as post_author, str_to_date('11.25.2015 00:00:00', '%m.%d.%Y %H:%i:%s') as post_date, str_to_date('03.26.2015 21:44:00', '%m.%d.%Y %H:%i:%s') as post_modified from ( select b.dd * 10 + a.dd as iid from ( select 1  as dd union all select 2 union all select 3 union all select 4 union all select 0 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) a, (select 0 as dd union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) b ) num WHERE iid > 0 and iid NOT IN ( SELECT ID from wp_posts ) ORDER BY iid ASC;

此语句是获取1~100的空余id并整理成网址统一放在新建数据表post_bk里面。


SHOW CREATE TABLE table_name;

table_name改成自己的表名,此语法获取该表的所有信息


ALTER TABLE table_name auto_increment =48 ;

重设id自增值为48,但是这个值必须比当前表内数据的最大值要大,否则会修改不生效,所以没多大意义,一般用于特殊情况。


SHOW TABLE STATUS LIKE 'table_name'

查看table_name这个表的具体属性,其中Auto_increment为自增值,在这里你可以知道你插入的下一条数据的id是什么。


SHOW VARIABLES LIKE 'auto_incre%';/**查看自增属性**/

如果输出值为

auto_increment_increment 1 auto_increment_offset 1

说明auto_increment_increment  = 1 ,每次插入数据,id++自增;auto_increment_offset =1 ,说明从1开始。 一般情况下auto_increment_increment=1,auto_increment_offset=1.是自增默认初始值。


Create database db_name;/**创建某个数据库**/  Drop database db_name;/**删除某个数据库**/

创建的完整语句为:

create table users (

    id int(11) not null auto_increment,    

    username varchar(55) default null,    

    sex smallint(2) default null,      

    password varchar(55) default null,    

    primary key (id)

)default charset=utf8; 


create table mytable (id int , username char(20));/**建立某个数据表**/    drop table mytable;/**删除某个表**/

insert into mytable (id,username) values (1,'zhangsan');/**向某个表中添加数据**/

update mytable set username=’lisi’ where id=1;/**更新某个表的某个数据**/

Order语句是查询语句 , 如 : order by id desc(或asc) , 顺序有两种 : desc倒序(例:从100—1),asc(从1-100),这是常用语句。


 

批量修改文章评论者的网站URL

UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'oldurl.com', 'newurl.com' )


批量修改文章的作者(把id为2的作者的文章归到id为5的作者旗下)

UPDATE wp_posts SET post_author = 5 WHERE post_author = 2;


批量修改文章摘要

UPDATE wp_posts SET post_excerpt = REPLACE( post_excerpt, '秋叶网络博客', '哈哈哈哈哈啊哈' );


批量修改文章中的内容

UPDATE wp_posts SET post_content = REPLACE( post_content, '百家博客', '秋叶网络博客' );


批量修改文章中图片网址链接

UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="oldurl.com', 'src="newurl.com');


批量修改文章中附件网址链接

UPDATE wp_posts SET guid = REPLACE (guid, 'oldsiteurl.com', newsiteurl.com') WHERE post_type = 'attachment';


禁用所有文章的pingback功能

UPDATE wp_posts SET ping_status = 'closed';


删除所有文章的修订版

DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision';


删除某个评论者的所有评论

(1)根据留言者的博客URL进行删除,以下SQL语句将删除所有URL为 www.example.com 的评论

DELETE FROM wp_comments WHERE comment_author_url LIKE '%www.example.com%'; (2)根据留言者的昵称进行删除,以下语句将删除所有昵称为 example 的评论

DELETE FROM wp_comments WHERE comment_author = 'example'; (3)根据留言者的Email进行删除,以下语句将删除所有Email为 example@example.com 的评论

DELETE FROM wp_comments WHERE comment_author_email = 'example@example.com';


批量替换所有评论中的词汇

UPDATE wp_comments SET comment_content = REPLACE( comment_content, '你妈逼', '我麻痹' );


关闭所有旧文章的评论

UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';


关闭所有文章的评论

UPDATE wp_posts SET comment_status = 'closed' WHERE post_status = 'publish';

0
文章作者: “秋了秋”个人博客,本站鼓励原创。
转载请注明本文地址:http://netblog.cn/blog/49.html
目录: WP教程标签: mysql数据库语句 16503次阅读

请求播放音乐,请点击播放

登 录
点击获取验证码
还没账号?点击这里