-------------------常用SQL语句,请备份好再用,基本无错--------------------------------- UPDATE `cdb_forums` SET `allowpostspecial` = '31' 所有板块的特殊主题开启 调整某个帖子的点击数 UPDATE cdb_threads SET views=点击数 WHERE tid=主题编号; UPDATE `cdb_forums` SET `allowmediacode` = '1' 所有板块开启media代码 update cdb_settings set value = 120 WHERE variable = 'maxavatarpixel' 调整所有用户最大头像尺寸(像素)为120 UPDATE `cdb_threads` SET `closed` = '1' WHERE `fid` =20 ; 一次性关闭板块fid20帖子 把发帖数为0的用户都转到某个用户组 update cdb_members set groupid = * where posts = 0; UPDATE `cdb_usergroups` SET `allowinvite` = '1', `inviteprice` = '价格'; 开启全部用户组的邀请注册权限 并设置价格 replace INTO cdb_settings VALUES ('watermarktype','0'); 去除水印图片类型 update cdb_members set lastpost='1186675200'; 调整用户最后登录时间为 2007年8月10日 UPDATE `cdb_forums` SET `status` = '1', `lastpost` = '' WHERE `fid` =6 LIMIT 1 ; 调整 板块隐藏的sql! 完整关闭supesite的sql语句: UPDATE `cdb_settings` SET `value` = '' WHERE `variable` = 'supe_siteurl' ; UPDATE `cdb_settings` SET `value` = '' WHERE `variable` = 'supe_sitename'; UPDATE `cdb_settings` SET `value` = '0' WHERE `variable` = 'supe_status'; UPDATE `cdb_settings` SET `value` = '' WHERE `variable` = 'supe_tablepre'; UPDATE `cdb_settings` SET `value` = '0' WHERE `variable` = 'supe_circlestatus'; 将A板块的所有帖子转到B板块的C分类里 update cdb_threads set fid=B板块ID,typeid=c分类的ID where fid=A板块ID; update cdb_posts set fid=B板块ID where fid=A板块ID; 执行前备份一下数据库 去除后台管理员ip登录限制 UPDATE `cdb_settings` SET `value` = '' WHERE CONVERT( `variable` USING utf8 ) ='adminipaccess' LIMIT 1 ; 删除风格5 delete from cdb_styles where styleid=5 limit 1; UPDATE `cdb_members` SET `pmsound` = '1' 论坛所有用户短消息提示音修改为提示音1 delete from cdb_usergroups where groupid = 0 删除groupid = 0的用户组 UPDATE `cdb_forums` SET `alloweditpost` = '1' 所有板块开启允许编辑帖子 论坛后台 解除insenz绑定语句 delete from cdb_settings where variable='insenz' 论坛后台执行后 就可以 重新注册和绑定了 关闭游客浏览所有版块的语句 可以这样构造SQL语句 update cdb_forumfields set viewperm ='/t允许浏览的用户组的ID/t' where fid in(论坛板块ID) 如: update cdb_forumfields set viewperm ='/t1/t2/t' where fid in(1,2) UPDATE `cdb_forumfields` SET `rules` = '板块规则' 所有板块的板块规则设置~! UPDATE `cdb_forums` SET `jammer` = '1' 开启所有板块的干扰码 开启所有会员组邀请注册的权限 UPDATE cdb_usergroups SET allowinvite=1, allowmailinvite=1, maxinvitenum=10, maxinviteday=15, inviteprice=10; //allowinvite 允许使用邀请注册: //allowmailinvite 允许发送邀请注册: //maxinvitenum 24小时内购买邀请码最大数量: //maxinviteday 邀请码有效期: //inviteprice 邀请码购买价格: 修改最高日发帖数 UPDATE `cdb_settings` SET `value` = '昨日发帖数 最高日发帖数' WHERE `variable` ='historyposts' LIMIT 1 ; 昨日发帖数 和 最高日发帖数 修改为你需要的数字即可, 升级完sql后,更新缓存 '昨日发帖数 最高日发帖数' 中间的空格是tab键~! UPDATE `cdb_settings` SET `value` = '0' WHERE CONVERT( `variable` USING utf8 ) = 'gzipcompress' LIMIT 1 ; 关闭论坛的gzip设置! 批量对用户组禁言 update cdb_members set adminid='-1', groupid='4' where groupid='?'; delete from cdb_threads where authorid=0; delete from cdb_posts where authorid=0; 批量删除游客组的发帖和主题 uid 2000~3000的会员全部积分清零 update cdb_members set credits=0,extcredits1=0,extcredits2=0,extcredits3=0,extcredits4=0,extcredits5=0,extcredits6=0,extcredits7=0,extcredits8=0 where uid > 2000 and uid < 3000; 指定范围内的审核主题通过审核 update cdb_threads set displayorder=0 where tid > 最小的 tid and tid < 最大的 tid 指定范围内的审核帖子通过审核 update cdb_posts set invisible = 0 where tid > 最小的tid and tid < 最大的 tid 批量删除未审核通过的帖子和主题 delete from cdb_threads where displayorder=-2; delete from cdb_posts where invisible=-2; 批量关闭投票 UPDATE cdb_threads SET closed = 1 WHERE special=1 UPDATE `cdb_members` SET `secques` = '' 清空用户安全问答! 清空某个用户组的全部积分sql: update cdb_members set credits = 0, extcredits1 = 0, extcredits2 = 0, extcredits3 = 0, extcredits4 = 0, extcredits5 = 0, extcredits6 = 0, extcredits7 = 0, extcredits8 = 0, where groupid = 用户组id; update cdb_usergroups set allowtransfer=0 关闭所有用户组的积分转账 update cdb_threads set readperm=100 where dateline<1133300000 修改05年11月29日21点33份20秒 前的主题阅读权限100 其中1133300000 是unix时间戳 (以秒为单位) 代表 05年11月29日21点33份20秒 readperm=100 代表阅读权限 把2005年1月1日以前的阅读权限设高. update cdb_threads set readperm=100 where dateline<1104537600 and digest=0 批量替换帖子里面的评分者的用户名 update cdb_ratelog set uid = '新uid', username = '新username' where uid = '旧的 uid'; 所有的附件默认阅读权限为1 update cdb_attachments set readperm=1 统计发帖量大约0的所有用户积分1的总量 SELECT count(`extcredits1`) FROM `cdb_members` where `posts`=0 批量修改uid1~6会员的 showemail 为 1 UPDATE `cdb_members` SET `showemail` ='1' WHERE `uid` in(1,2,3,4,5,6); 将主题tid大于14651的所有主题减去16761780 update cdb_threads set tid=tid-16761780 where tid>14651; update cdb_posts set tid=tid-16761780 where tid>14651; update cdb_attachments set tid=tid-16761780 where tid>14651; update cdb_myposts set tid=tid-16761780 where tid>14651; update cdb_activities set tid=tid-16761780 where tid>14651; update cdb_activityapplies set tid=tid-16761780 where tid>14651; update cdb_favorites set tid=tid-16761780 where tid>14651; update cdb_mythreads set tid=tid-16761780 where tid>14651; update cdb_paymentlog set tid=tid-16761780 where tid>14651; update cdb_polloptions set tid=tid-16761780 where tid>14651; update cdb_polls set tid=tid-16761780 where tid>14651; update cdb_pushedthreads set tid=tid-16761780 where tid>14651; update cdb_relatedthreads set tid=tid-16761780 where tid>14651; update cdb_rewardlog set tid=tid-16761780 where tid>14651; update cdb_rsscaches set tid=tid-16761780 where tid>14651; update cdb_sessions set tid=tid-16761780 where tid>14651; update cdb_subscriptions set tid=tid-16761780 where tid>14651; update cdb_threadsmod set tid=tid-16761780 where tid>14651; update cdb_tradelog set tid=tid-16761780 where tid>14651; update cdb_trades set tid=tid-16761780 where tid>14651; 此操作前请注意备份!!(按照5.0数据表进行修改的 6.0的需要查看下数据库对比下) 将积分1加到积分2上 并清零积分1的sql update cdb_members set extcredits1=extcredits1+extcredits2; update cdb_members set extcredits1='0'; 把300天未登录的ID移到某一特殊用户组 update cdb_members set adminid=-1,groupid=特殊用户组ID where lastactivity< unix_timestamp()-300*24*3600 服务器上禁止IP访问命令 iptables -I INPUT -p TCP -s 218.0.211.0/24 --dport 80 -j DROP 查一个IP有哪个会员登录 select * from cdb_membsers where lastip="IP" UPDATE cdb_posts p, cdb_attachments a SET p.attachment=1 WHERE p.pid=a.pid; 找回丢失附件的sql语句 更新昨日发贴数 昨日发贴数: select count(*) from cdb_posts where dateline>昨天0时的时间戳 and dateline<今天0时的时间戳 更新昨日发贴数: UPDATE `cdb_settings` SET `value` = '昨日发帖数/t1428' WHERE `variable` ='historyposts' LIMIT 1 ; 把"新手上路"用户组下的所有会员转换到另一个特殊的用户组 pl:特殊用户组没有关联任何的管理组 update cdb_members set groupid=特殊用户组的id where groupid=新手上路用户组的id and adminid=0 删除一个板块的所有回复 delete from cdb_posts where fid = '需要删除回复的版块id' and first = 0; delete from cdb_forums where fid=23 limit 1; 删除fid23的板块 圈子sgid字段缺少 添加的sql ALTER TABLE cdb_threads ADD sgid mediumint(8) unsigned NOT NULL default '0' update cdb_threads set replies=(select count(*) from cdb_posts where tid=47708) where tid=47708 更新tid27708主题的统计 关闭所有板块的允许其它模块共享 update cdb_forums set allowshare=0 UPDATE `cdb_memberfields` SET `sightml` = ' ' 所有用户的签名清空 UPDATE cdb_posts SET subject=REPLACE(subject,'#','楼'); 批量替换帖子中的回复* #的显示为 *楼 删除一个主题的所有回复 delete from cdb_posts where tid = '需要删除回复的主题的tid' and first = 0; UPDATE `cdb_settings` SET `value` = '1' WHERE CONVERT( `variable` USING utf8 ) = 'thumbstatus' LIMIT 1 ; 设置缩略图为 为图片附件添加缩略图 UPDATE `cdb_settings` SET `value` = '2' WHERE CONVERT( `variable` USING utf8 ) = 'thumbstatus' LIMIT 1 ; 设置缩略图为 将图片附件缩到指定的大小 批量验证所有未验证的会员 UPDATE `cdb_members` SET `groupid` = '10' WHERE groupid='8'; 批量删除游客回帖和主题 delete from cdb_threads where authorid=0; delete from cdb_posts where authorid=0; 删除在180天之前的全部短消息 delete from cdb_pms where dateline<1190518730 清空某个用户的已发短消息 update cdb_pms set delstatus=1 where msgfromid=发送者ID 所有用户组(包括系统用户组,普通用户组,特殊用户组)都可以参与投票的SQL语句: update cdb_usergroups set allowvote=1 where groupid<4 or groupid>9 UPDATE `cdb_usergroups` SET `raterange` = '1/t-1/t1/t100/n2/t-1/t1/t100' 开启所有用户组的扩展积分1和2的评分值为 最小-1 最大1 24小时100 图片附件设置正确 但是不直接显示的调整sql: update cdb_attachments set `isimage` =1 where SUBSTRING(`filename`,-3,3)='jpg' or SUBSTRING(`filename`,-3,3)='gif' 固定天数内一部份附件到远程附件的sql update cdb_attachments set remote = '1' where dateline<unix_timestamp()-86400*天数 修改所有用户组评分的SQL语句 update `cdb_usergroups` set `raterange`='扩展积分ID/t评分最小值/t评分最大值/t24小时最大评分数/n扩展积分ID/t评分最小值/t评分最大值/t24小时最大评分数' 将主题tid大于4009的所有主题减去16773200 update cdb_activities set tid=tid-16773200 where tid>4009; update cdb_activityapplies set tid=tid-16773200 where tid>4009; update cdb_attachments set tid=tid-16773200 where tid>4009; update cdb_campaigns set tid=tid-16773200 where tid>4009; update cdb_debateposts set tid=tid-16773200 where tid>4009; update cdb_debates set tid=tid-16773200 where tid>4009; update cdb_favorites set tid=tid-16773200 where tid>4009; update cdb_forumrecommend set tid=tid-16773200 where tid>4009; update cdb_myposts set tid=tid-16773200 where tid>4009; update cdb_mythreads set tid=tid-16773200 where tid>4009; update cdb_paymentlog set tid=tid-16773200 where tid>4009; update cdb_polloptions set tid=tid-16773200 where tid>4009; update cdb_polls set tid=tid-16773200 where tid>4009; update cdb_posts set tid=tid-16773200 where tid>4009; update cdb_relatedthreads set tid=tid-16773200 where tid>4009; update cdb_rewardlog set tid=tid-16773200 where tid>4009; update cdb_rsscaches set tid=tid-16773200 where tid>4009; update cdb_sessions set tid=tid-16773200 where tid>4009; update cdb_subscriptions set tid=tid-16773200 where tid>4009; update cdb_threads set tid=tid-16773200 where tid>4009; update cdb_threadsmod set tid=tid-16773200 where tid>4009; update cdb_threadtags set tid=tid-16773200 where tid>4009; update cdb_tradelog set tid=tid-16773200 where tid>4009; update cdb_trades set tid=tid-16773200 where tid>4009; update cdb_typeoptionvars set tid=tid-16773200 where tid>4009; update cdb_videos set tid=tid-16773200 where tid>4009; update cdb_videotags set tid=tid-16773200 where tid>4009; 如果安装了supesite 有了推送主题表还加上: update cdb_pushedthreads set tid=tid-16773200 where tid>4009; 以上sql为6.0版本 批量替换论坛标题内容 UPDATE `cdb_threads` SET `subject` = replace (`subject`,'需要替换的','替换后的') UPDATE `cdb_attachments` SET `thumb` = '0' 取消所有附件的缩略图数据 UPDATE `cdb_threads` SET `highlight` = '0' 取消全部帖子的高亮显示 论坛里所有回复长度小于20的而且没有附件的贴子全部删除掉 delete from cdb_posts where length(message)<20 and attachment=0 查询ftp上的附件是否在数据库内 phpmyadmin中 执行sql: select * from cdb_attachments where attachment like "%文件名称%" 一次性给一个贴内的所有回帖人加积分 update cdb_members set extcredits2=extcredits2+10 where uid in(SELECT authorid FROM `cdb_posts` WHERE tid=主题ID) extcredits2 是需要增加的积分字段 , 使用的时候要注意增加的哪个积分字段 truncate cdb_validating 清空用户审核数据表 UPDATE `cdb_members` SET `oltime` = '0' 所有用户的在线时间修改为0 把体积大于 819200kb的附件指定为远程附件 update cdb_attachments set remote = '1' WHERE filesize > 819200 ALTER TABLE `cdb_threads` CHANGE `tid` `tid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT; 补充的知识: 数据库菜鸟不可不看 简单SQL语句小结 为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。 网络SQL数据库网站空间申请:iisp.com/vhost/?s=macui 1.在查询结果中显示列名: a.用as关键字:select name as '姓名' from students order by age b.直接表示:select name '姓名' from students order by age 2.精确查找: a.用in限定范围:select * from students where native in ('湖南', '四川') b.between...and:select * from students where age between 20 and 30 c.“=”:select * from students where name = '李山' d.like:select * from students where name like '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%'或'_李'或'_李_'。) e.[]匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与"in(...)"类似,而且"[]"可以表示范围,如:select * from courses where cno like '[A-C]%') 3.对于时间类型变量的处理 a.smalldatetime:直接按照字符串处理的方式进行处理,例如: select * from students where birth > = '1980-1-1' and birth <= '1980-12-31' 4.集函数 a.count()求和,如:select count(*) from students (求学生总人数) b.avg(列)求平均,如:select avg(mark) from grades where cno=’B2’ c.max(列)和min(列),求最大与最小 5.分组group 常用于统计时,如分组查总数: select gender,count(sno) from students group by gender (查看男女学生各有多少) 注意:从哪种角度分组就从哪列"group by" 对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数 ,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"group by grade, mno, gender" select grade, mno, gender, count(*) from students group by grade, mno, gender 通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有: select sno,count(*) from grades where mark<60 group by sno having count(*)>1 6.UNION联合 合并查询结果,如: SELECT * FROM students WHERE name like ‘张%’ UNION [ALL] SELECT * FROM students WHERE name like ‘李%’ 7.多表查询 a.内连接 select g.sno,s.name,c.coursename from grades g JOIN students s ON g.sno=s.sno JOIN courses c ON g.cno=c.cno (注意可以引用别名) b.外连接 b1.左连接 select courses.cno,max(coursename),count(sno) from courses LEFT JOIN grades ON courses.cno=grades.cno group by courses.cno 左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。 左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。 b2.右连接 与左连接类似 b3.全连接 select sno,name,major from students FULL JOIN majors ON students.mno=majors.mno 两边表中的内容全部显示 c.自身连接 select c1.cno,c1.coursename,c1.pno,c2.coursename from courses c1,courses c2 where c1.pno=c2.cno 采用别名解决问题。 d.交叉连接 select lastname+firstname from lastname CROSS JOIN firstanme 相当于做笛卡儿积 8.嵌套查询 a.用关键字IN,如查询李山的同乡: select * from students where native in (select native from students where name=’ 李山’) b.使用关键字EXIST,比如,下面两句是等价的: select * from students where sno in (select sno from grades where cno=’B2’) select * from students where exists (select * from grades where grades.sno=students.sno AND cno=’B2’) 9.关于排序order a.对于排序order,有两种方法:asc升序和desc降序 b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如: select sno,count(*) ,avg(mark) from grades group by sno having avg(mark)>85 order by 3 10.其他 a.对于有空格的识别名称,应该用"[]"括住。 b.对于某列中没有数据的特定查询可以用null判断,如select sno,courseno from grades where mark IS NULL c.注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“||”而all则相当于逻辑运算“&&” d.注意在做否定意义的查询是小心进入陷阱: 如,没有选修‘B2’课程的学生 : select students.* from students, grades where students.sno=grades.sno AND grades.cno <> ’B2’ 上面的查询方式是错误的,正确方式见下方: select * from students where not exists (select * from grades where grades.sno=students.sno AND cno='B2') 11.关于有难度多重嵌套查询的解决思想: 如,选修了全部课程的学生: select * from students where not exists ( select * from courses where NOT EXISTS (select * from grades where sno=students.sno AND cno=courses.cno)) | |