在mysql下如下查看然后删除000018之前的文件
show binary logs;
purge binary logs to 'mysql-bin.000018';
Written by 小锋 on 09-06-09 3:42 AM
在mysql下如下查看然后删除000018之前的文件
show binary logs;
purge binary logs to 'mysql-bin.000018';
Written by 小锋 on 09-03-18 11:07 PM
千万不要随便挪动数据库文件 最好是关了mysql再进行迁移 然后看看数据是否OK!权限是否给足
这次就是因为没有把权限给足导致写入的数据没丢失把之前的数据给丢了:(
后来死马当活马医 用phpmyadmin修复了一下 没有起效果 然后把数据库COPY了出来在另外的服务器上导入了一份发现提示 is marked as crashed and should be repaired错误 然后baidu了一下:)原来是可以修复的
还好平时有做备份 目前最新的数据都在 待会儿重组一下然后插入数据就OK了~
修复如下在你的mysql/bin下面找到myisamchk
在命令行中输入:myisamchk -c -r d:\mysql\data\abc.MYI即可:)
Written by 小锋 on 09-03-07 3:12 AM
SELECT `login_time` FROM `enterlog_24` WHERE `year` = '2009' AND `month` = 2 AND `day` = 24 AND `user_id` ='1'
union all
SELECT `login_time` FROM `enterlog_25` WHERE `year` = '2009' AND `month` = 2 AND `day` = 25 AND `user_id` ='1'
输出上面两个表里面符合查询条件的所有login_time值
Written by 小锋 on 09-01-18 2:29 PM
例表a
aid adate
1 a1
2 a2
3 a3
表b
bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a ,b where a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2
那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符
同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4
Written by 小锋 on 08-12-13 9:56 AM
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
| LastName | FirstName | Address | City |
|---|---|---|---|
| Adams | John | Oxford Street | London |
| Bush | George | Fifth Avenue | New York |
| Carter | Thomas | Changan Street | Beijing |
| Gates | Bill | Xuanwumen 10 | Beijing |
如需以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人,请使用下面的 SQL:
| LastName | FirstName | Address | City |
|---|---|---|---|
| Adams | John | Oxford Street | London |
| Bush | George | Fifth Avenue | New York |
重要事项:不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。
所以,请检查你的数据库是如何处理 BETWEEN....AND 操作符的!
Written by 小锋 on 08-12-09 5:24 PM
MySQL分表优化试验 有兴趣的可以看看
» 阅读全文
Written by 小锋 on 08-12-02 11:10 AM
UPDATE `addonarticle` Set `body` = REPLACE(`body`,'啊猛',小雄')
Written by 小锋 on 08-11-15 1:01 PM
安装程序配置服务器失败。参考服务器错误日志和 C:\WINDOWS\sqlstp.log 了解更多信息。
这个问题-_-#以前碰到过 没能解决。。这次装2000又碰到了 重复安装 还是不行
但是更换了实例名就可以了。。。可是更换了实例名 TMD SP4打上就把sql2000给挂掉了
不得不又重新安装
最终的办法就是一不做二不休 把sql2000的遗留清理干净。
1.注册表的清理
里面的Microsoft SQL Server相关都干掉
2.文件清理
C:\Program Files\Microsoft SQL Server干掉
C:\Program Files\Common Files\Microsoft Shared能干掉就干掉
再装上试试就搞定了 记得清理干净 不然想装的好 那是不可能的。
Written by 小锋 on 08-11-15 11:47 AM
微软的 一篇关于SQL2000的实例名删除操作
» 阅读全文
Written by 小锋 on 08-11-10 5:26 PM
15. 减少对表的查询
在含有子查询的SQL语句中,要特别注意减少对表的查询.
例如:
Slow:
SELECT TAB_NAME
FROM TABLES
WHERE TAB_NAME = ( SELECT TAB_NAME
FROM TAB_COLUMNS
WHERE VERSION = 604)
AND DB_VER= ( SELECT DB_VER
FROM TAB_COLUMNS
WHERE VERSION = 604)
Fast:
SELECT TAB_NAME
FROM TABLES
WHERE (TAB_NAME,DB_VER)
= ( SELECT TAB_NAME,DB_VER)
FROM TAB_COLUMNS
WHERE VERSION = 604)
Update 多个Column 例子:
Slow
UPDATE EMP
SET EMP_CAT = (SELECT MAX(CATEGORY) FROM EMP_CATEGORIES),
SAL_RANGE = (SELECT MAX(SAL_RANGE) FROM EMP_CATEGORIES)
WHERE EMP_DEPT = 0020;
Fast
UPDATE EMP
SET (EMP_CAT, SAL_RANGE)
= (SELECT MAX(CATEGORY) , MAX(SAL_RANGE)
FROM EMP_CATEGORIES)
WHERE EMP_DEPT = 0020;
8. 使用DECODE函数来减少处理时间
使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.
例如:
SELECT COUNT(*),SUM(SAL)
FROM EMP
WHERE DEPT_NO = 0020
AND ENAME LIKE ‘SMITH%’;
SELECT COUNT(*),SUM(SAL)
FROM EMP
WHERE DEPT_NO = 0030
AND ENAME LIKE ‘SMITH%’;
你可以用DECODE函数高效地得到相同结果
SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT,
COUNT(DECODE(DEPT_NO,0030,’X’,NULL)) D0030_COUNT,
SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,
SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL
FROM EMP WHERE ENAME LIKE ‘SMITH%’;
类似的,DECODE函数也可以运用于GROUP BY 和ORDER BY子句中.