Wordpress中SQL命令基本语法结构及常用数据库维护语句

数据库(database)是保存有组织的数据的容器。数据表(table)是某种特定类型数据的结构化清单。SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。

SQL 语法结构包括:
  • 子句 - 是语句和查询的组成成分。(在某些情况下,这些都是可选的。)
  • 表达式 - 可以产生任何标量值,或由列和行的数据库表
  • 谓词 - 给需要评估的 SQL 三值逻辑(3VL)(true/false/unknown)或布尔真值指定条件,并限制语句和查询的效果,或改变程序流程。
  • 查询 - 基于特定条件检索数据。这是 SQL 的一个重要组成部分。
  • 语句 - 可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。
Wordpress中基本SQL操作命令有四项:查询,插入、更改和删除。

SQL命令基本格式:命令操作项+条件


1、查询:

SELECT * FROM `wp_posts` WHERE 1

SELECT `ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count` FROM `wp_posts` WHERE 1

2、插入:

INSERT INTO `wp_posts`(`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12],[value-13],[value-14],[value-15],[value-16],[value-17],[value-18],[value-19],[value-20],[value-21],[value-22],[value-23])

3、更改:

UPDATE `wp_posts` SET `ID`=[value-1],`post_author`=[value-2],`post_date`=[value-3],`post_date_gmt`=[value-4],`post_content`=[value-5],`post_title`=[value-6],`post_excerpt`=[value-7],`post_status`=[value-8],`comment_status`=[value-9],`ping_status`=[value-10],`post_password`=[value-11],`post_name`=[value-12],`to_ping`=[value-13],`pinged`=[value-14],`post_modified`=[value-15],`post_modified_gmt`=[value-16],`post_content_filtered`=[value-17],`post_parent`=[value-18],`guid`=[value-19],`menu_order`=[value-20],`post_type`=[value-21],`post_mime_type`=[value-22],`comment_count`=[value-23] WHERE 1

4、删除:

DELETE FROM `wp_posts` WHERE 0

例如:查找出、删除标题为空的文章

SELECT * FROM `wp_posts` WHERE post_title=""

DELETE FROM `wp_posts` WHERE post_title=""

SQL (结构化查询语言)是用于执行查询的语法,但是 SQL 语言也包含用于更新、插入和删除记录的语法。

SQL 语法要点
  • SQL 语句不区分大小写 ,但是数据库表名、列名和值是否区分,依赖于具体的 DBMS 以及配置。
  • 多条 SQL 语句必须以分号( ; )分隔 。
  • 处理 SQL 语句时, 所有空格都被忽略 。SQL 语句可以写成一行,也可以分写为多行。
Wordpress中数据库维护时常用到 12 个 SQL 语句:

1、修改数据库用户密码

UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE user_login = 'admin'
上面采用了 MySQL 的 MD5() 函数讲密码转成 MD5 Hash。

2、文章换作者
UPDATE wp_posts  SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
*注:你需要知道两个作者的 user id。

3、 删除多余的post_meta 数据
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'
*注:上面的 SQL 将删除数据库中所有的日志修订记录和其相关的 meta 信息(自定义字段)。

4、删除垃圾留言

DELETE FROM wp_comments WHERE comment_approved = '0';

5、查找没启用的标签
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

6. 查找和替换数据
对于熟悉 MySQL 数据库的开发者来说,replace() 这个 MySQL 函数都应该很熟悉,它可以让你指定一个字段,然后替换它里面的字符串,一旦执行,所有这个字段里面的字符串都会被替换。对于 WordPress 博客来说,这个 SQL 则非常实用,它可以让你批量修改某些输入错误,或者某个邮件地址等等。

UPDATE table_name SET field_name = replace( field_name, 'string_to_find', 'string_to_replace' ) ;

替换文章内容中字符串:

UPDATE wp_posts SET post_content = replace( post_content, 'string_to_find', 'string_to_replace' ) ;

将某个留言者地址替换下:

UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );
留言者邮箱:

UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );
还有一个 WordPress 插件 Search & Replace 还提供一个后台让你更加容易进行批量替换。

7、获取所有留言者的邮件地址
SELECT DISTINCT comment_author_email FROM wp_comments;
*注:上面的 DISTINCT 让你获取的邮件地址是唯一的,即使这个用户发过好几次留言,也不怕。

不过群发邮件这件事情个人建议还是不要这样做好。

8、关闭所有插件
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';

9、删除没用的标签
DELETE a,b,c
FROM
wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
c.taxonomy = 'post_tag' AND
c.count = 0
);
*注:上面 SQL 除了删除所有没用的标签,还删除了所有标签分类模式信息以及和日志关联的关系。

10、列出没用的 post meta
wp_postmeta 中的数据是由一些插件或者自定义字段生成的,他是对 wp_posts 表的一种无限的扩展,但是可能由于某种原因,日志被删除了,但是它的 meta 信息还存在 wp_postmeta 表中,下面这条 SQL 将这些没有关联日志的 meta 数据列出:

SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

11、关闭旧日志留言功能
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';
关闭Trackback:

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

12、删除所有 url 含有特定字符串的留言
DELETE from wp_comments WHERE comment_author_url LIKE "%viagra%" ;

注:表达式中间逻辑约束语法同理。

#现在前往

精选留言

Wordpress,SQL,命令,基本
sample
2020-09-23
写留言
签到
投稿
QQ咨询
返回顶部