1.单表,在执行sql的窗口运行。 --修复一张表 repair table xxx; --优化一张表 optimize table xxx; 2.所有表 -- 修复所有表 mysqlcheck -u root -p --auto-repair --check --all-databases -- 优化所有表 mysqlche 阅读全文..
如flag列的值有0,1,2;现要排序,按1,0,2的顺序来排,怎么排?显然,用order by flag asc或desc都行不通。方法是使用case when的方式把值重新设置,根据这个新的字段排序即可。如下: 阅读全文..
1.数据库用久了,表的索引碎片太多,速度变慢,需要重新组织、重新生成索引步骤:展开表>索引>右键2.缩小日志、数据库。步骤:1).数据库>右键>属性>选项>恢复模式 设置为“简单”2).数据库>右键>任务>收缩>数据库、文件3).再把1中的“恢复模式”改为原来的模式3.跨库查 阅读全文..
MSSQL(Sql Server)SELECT的迷惑性,使用SELECT赋值时要注意的一个问题
例:DECLARE @id INT SELECT @id=id FROM tab WHERE id=1 IF(@id IS NULL) PRINT('NULL') ELSE PRINT('NOT NULL')如果表中不存在id=1的数据,会打印出NULL,这并不是因为表中不存在那条数据的缘故,而是DECLARE一个变量,没给此变量赋值的话,默认是NULL,SELECT并没 阅读全文..
MSSQL(Sql Server)从拼接的语句和存储过程中取出变量的值
MSSQL(Sql Server)从拼接的语句和存储过程中取出变量的值,供当前上下文使用1.某拼接的语句中,要把@sql中计算出的值@record1,@record2取出来供下文使用。EXEC(' SELECT @record1=1000 SET @record2=1002 ');方法如下:DECLARE @count1 INT,@count2 INT DECLARE @sql NVARCHAR(200) 阅读全文..
原以为纯数字、纯字母是类似的正则[0-9]、[a-z]这样的,没想到不是。MySql有自己的匹配规则。SELECT field1 FROM tab WHERE field1 REGEXP '^[[:digit:]]+$'; -- 纯数字 SELECT field1 FROM tab WHERE field1 REGEXP '^[[:digit:]]{5}$'; -- 匹配5位字符的纯数字SELECT field1 FROM 阅读全文..
直接在任务管理器里结束mysqld进程,再开启提示出错。提示:Windows 无法启动 MySQL 服务(位于 本地计算机 上)。错误 1067: 进程意外终止。[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentati on for more 阅读全文..
UNIX时间戳是格林尼治时间从1970年1月1日0点0分0秒 到当前的秒数,在MySql中有个函数UNIX_TIMESTAMP可以获取如MySql显示当前的UNIX时间戳:SELECT UNIX_TIMESTAMP() --MySql获取当前时间戳MySql转换函数是FROM_UNIXTIME,如:SELECT FROM_UNIXTIME(1359803400) --其中1359803500是时间戳,输出:2013-02- 阅读全文..
MSSQL(sql server)更安全的操作数据库方式。在生产环境上操作数据库很危险,很容易一失手成千古恨。现在我一般这么操作,使用事务,如果出错了可以回滚撤销操作。先在内网把语句写好,运行下没问题。再整个拷到生产环境上运行。顺便推荐一个sql提示工具,Red Gate出品的的Sql Prompt,有智能感知自动提 阅读全文..