Jul
30
linux平台
监控mysql执行的sql语句
为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句,
可以在/etc/mysqld中添加如下:
log =/usr/local/mysql/var21005/mysql.log
就可以使用:
tail -f mysql.log
来监控了 www.tommyhu.cn
如果需要监控慢查询可以添加如下内容:
log-slow-queries = /usr/local/mysql/var21005/slowquery.log
long_query_time = 1
windows平台
修改my.ini,在mysqld下添加log一行,
[mysqld]
log = "D:/tmp/mysql_log/mysql_log.sql"
然后,重新启动mysql,就可以实时看到myql服务器当前正在执行的语句了。
监控mysql执行的sql语句
为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句,
可以在/etc/mysqld中添加如下:
log =/usr/local/mysql/var21005/mysql.log
就可以使用:
tail -f mysql.log
来监控了 www.tommyhu.cn
如果需要监控慢查询可以添加如下内容:
log-slow-queries = /usr/local/mysql/var21005/slowquery.log
long_query_time = 1
windows平台
修改my.ini,在mysqld下添加log一行,
[mysqld]
log = "D:/tmp/mysql_log/mysql_log.sql"
然后,重新启动mysql,就可以实时看到myql服务器当前正在执行的语句了。
Jul
28
MYSQL临时表关联Can't reopen table,
这是由于
报错实例
这是由于
Quotation
使用临时表的诸多限制
引擎类型只能是:memory(heap)、myisam、merge、innodb
不支持mysql cluster
同一个查询语句中只能引用一次! 如 SELECT * FROM TP_TABLE , TP_TABLE AS ALIAS_NAME; 是错误的
同一个用户存储函数中只能引用一次!
show tables 不会显示临时表
不能使用rename重命名临时表。只能使用ALTER TABLE OLD_TP_TABLE_NAME RENAME NEW_TP_TABLE_NAME;
影响使用replication功能
引擎类型只能是:memory(heap)、myisam、merge、innodb
不支持mysql cluster
同一个查询语句中只能引用一次! 如 SELECT * FROM TP_TABLE , TP_TABLE AS ALIAS_NAME; 是错误的
同一个用户存储函数中只能引用一次!
show tables 不会显示临时表
不能使用rename重命名临时表。只能使用ALTER TABLE OLD_TP_TABLE_NAME RENAME NEW_TP_TABLE_NAME;
影响使用replication功能
报错实例
Jul
13
连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码]
创建数据库:create database [库名]
显示所有数据库: show databases;
打开数据库:use [库名]
当前选择的库状态:SELECT DATABASE();
创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......);
显示数据表字段:describe 表名;
当前库数据表结构:show tables;
更改表格
ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE
说明:增加一个栏位(没有删除某个栏位的语法。
ALTER TABLE [表名] ADD PRIMARY KEY ([字段名])
说明:更改表得的定义把某个栏位设为主键。
ALTER TABLE [表名] DROP PRIMARY KEY ([字段名])
说明:把主键的定义删除。
显示当前表字段:show columns from tablename;
删库:drop database [库名];
删表:drop table [表名];
数据操作
添加:INSERT INTO [表名] VALUES('','',......顺序排列的数据);
查询: SELECT * FROM [表名] WHERE ([条件]);
建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]);
删除:DELETE FROM [表名] WHERE ([条件]);
修改:UPDATE [表名] SET [修改内容如name = 'Mary'] WHERE [条件];
创建数据库:create database [库名]
显示所有数据库: show databases;
打开数据库:use [库名]
当前选择的库状态:SELECT DATABASE();
创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......);
显示数据表字段:describe 表名;
当前库数据表结构:show tables;
更改表格
ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE
说明:增加一个栏位(没有删除某个栏位的语法。
ALTER TABLE [表名] ADD PRIMARY KEY ([字段名])
说明:更改表得的定义把某个栏位设为主键。
ALTER TABLE [表名] DROP PRIMARY KEY ([字段名])
说明:把主键的定义删除。
显示当前表字段:show columns from tablename;
删库:drop database [库名];
删表:drop table [表名];
数据操作
添加:INSERT INTO [表名] VALUES('','',......顺序排列的数据);
查询: SELECT * FROM [表名] WHERE ([条件]);
建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]);
删除:DELETE FROM [表名] WHERE ([条件]);
修改:UPDATE [表名] SET [修改内容如name = 'Mary'] WHERE [条件];
Jun
30
mysql与sql server的区别
tommyhu , 06:54 , DBA » MYSQL , Comments(1) , Trackbacks(0) , Reads(2863) , Via MySql与SqlServer的一些常用用法的差别
由于工作的原因:上家公司的数据库全采用MySql,所以不得不用它。因此也学到了MySql的一些知识,但考虑到今后可能没机会使用了,所以想趁现在离职在家休息,打算把这些东西整理一下,也为了万一今后能用上,留个参考的资源。考虑到一直在使用SqlServer,所以就打算直接与SqlServer对比来写。
本文将主要列出MySql与SqlServer不同的地方,且以常用的存储过程的相关内容为主。
1. 标识符限定符
SqlServer []
MySql ``
2. 字符串相加
SqlServer 直接用 +
MySql concat()
3. isnull()
SqlServer isnull()
MySql ifnull()
注意:MySql也有isnull()函数,但意义不一样
4. getdate()
SqlServer getdate()
MySql now()
5. newid()
SqlServer newid()
MySql uuid()
6. @@ROWCOUNT
SqlServer @@ROWCOUNT
MySql row_count()
注意:MySql的这个函数仅对于update, insert, delete有效
7. SCOPE_IDENTITY()
SqlServer SCOPE_IDENTITY()
MySql last_insert_id()
8. if ... else ...
SqlServer
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
-- 若要定义语句块,请使用控制流关键字 BEGIN 和 END。
MySql
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
注意:对于MySql来说,then, end if是必须的。类似的还有其它的流程控制语句,这里就不一一列出。
9. declare
其实,SqlServer和MySql都有这个语句,用于定义变量,但差别在于:在MySql中,DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。这个要求在写游标时,会感觉很BT.
10. 游标的写法
SqlServer
MySql
注意:为了提高性能,通常在表变量上打开游标,不要直接在数据表上打开游标。
11. 分页的处理
当然,SqlServer中并不只有这一种写法,只是这种写法是比较常见而已。
MySql
MySql与SqlServer的差别实在太多,以上只是列出了我认为经常在写存储过程中会遇到的一些具体的差别之处。
去年我将一些MySql的常用函数作了一番整理
Download ( 180 downloads)=>
本文将主要列出MySql与SqlServer不同的地方,且以常用的存储过程的相关内容为主。
1. 标识符限定符
SqlServer []
MySql ``
2. 字符串相加
SqlServer 直接用 +
MySql concat()
3. isnull()
SqlServer isnull()
MySql ifnull()
注意:MySql也有isnull()函数,但意义不一样
4. getdate()
SqlServer getdate()
MySql now()
5. newid()
SqlServer newid()
MySql uuid()
6. @@ROWCOUNT
SqlServer @@ROWCOUNT
MySql row_count()
注意:MySql的这个函数仅对于update, insert, delete有效
7. SCOPE_IDENTITY()
SqlServer SCOPE_IDENTITY()
MySql last_insert_id()
8. if ... else ...
SqlServer
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
-- 若要定义语句块,请使用控制流关键字 BEGIN 和 END。
MySql
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
注意:对于MySql来说,then, end if是必须的。类似的还有其它的流程控制语句,这里就不一一列出。
9. declare
其实,SqlServer和MySql都有这个语句,用于定义变量,但差别在于:在MySql中,DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。这个要求在写游标时,会感觉很BT.
10. 游标的写法
SqlServer
MySql
注意:为了提高性能,通常在表变量上打开游标,不要直接在数据表上打开游标。
11. 分页的处理
当然,SqlServer中并不只有这一种写法,只是这种写法是比较常见而已。
MySql
MySql与SqlServer的差别实在太多,以上只是列出了我认为经常在写存储过程中会遇到的一些具体的差别之处。
去年我将一些MySql的常用函数作了一番整理

Jun
30
mysql查询上个月的第一天
最后一天
这个月的第一天:
这个月的最后一天:
至于你要查那一个月啊,now())-1 day 和 interval 0 后面的数字自己去改就行了。
匹配时间区间
30天内的数据
=>
最后一天
这个月的第一天:
这个月的最后一天:
至于你要查那一个月啊,now())-1 day 和 interval 0 后面的数字自己去改就行了。
匹配时间区间
30天内的数据
=>