来源:ccidnet.com 作者:Sabine 时间:2006-10-09
在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。有时,正是MySQL管理员造成破坏。管理员已经知道表已破坏,用诸如vi或Emacs等编辑器试图直接编辑它们,这对表绝对不是件好事!
备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件(如用cp、cpio或tar等),本文详细说明MySQL平台数据库备份方案。
在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。有时,正是MySQL管理员造成破坏。管理员已经知道表已破坏,用诸如vi或Emacs等编辑器试图直接编辑它们,这对表绝对不是件好事。
备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件(如用cp、cpio或tar等)。每种方法都有其优缺点:
mysqldump与MySQL服务器协同操作。直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数据库,也会发生同样的问题:如果数据库表在文件系统备份过 ......
1.设置变量
set @x = 2;
或:
select @x := max(fields) as max from table;
2.生成html或xml
mysql -H -uroot -p databaseName 生成html文件
mysql -x -uroot -p databaseName 生成xml文件
3.mysql会话中的记录功能
msyql -ee=/usr/log -uroot -p
在 mysql> 中可以用 \t 来取消,用 \T 来设置此功能
4.show status like '%connections%' 来查看最大连接数
show status like '%Uptime%' 查看进程
show processlist 查看当前执行的sql语句
sql的慢查询日志的可以看出来是哪一个页面出了问题
5.show character set 查看字符设置
show colllation like '%utf8%' 查看collation(校验),ci,cs,bin分别代表忽略大小写,不忽略大小写,二进制
6.create table t1 select * from t2 以t2为标准创建新表t1,并将所有数据转移过去
7.alter table t1 engine ......
#include <stdio.h>
#include <windows.h>
#include <mysql.h>
#define host "localhost"
#define username "root"
#define password "123"
#define database "oa"
MYSQL *conn;
int main()
{
MYSQL_RES *res_set;
MYSQL_ROW row;
unsigned int i,ret;
FILE *fp;
MYSQL_FIELD *field;
unsigned int num_fields;
conn = mysql_init(NULL);
ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gbk");
mysql_real_connect(conn,host,username,password,database,0,NULL,0);
fp = fopen ( "t_sys_power.out","w");
fprintf(fp,"char set %s\n", mysql_character_set_name(conn));
mysql_query(conn,"SELECT * from t_sys_power ");//WHERE a1='abc'");
res_set = mysql_store_result(conn);
while((field = mysql_fetch_field(res_set)))
{
printf("field name %s\n", field->name);
}
num_fields = mysql_num_fields(res_set);
for(i = 0; i < num_fields; i++)
{
field = mysql_fetch_field_direct(res_set, i);
printf("Field %u is %s\n", i ......
#include <stdio.h>
#include <windows.h>
#include <mysql.h>
#define host "localhost"
#define username "root"
#define password "123"
#define database "oa"
MYSQL *conn;
int main()
{
MYSQL_RES *res_set;
MYSQL_ROW row;
unsigned int i,ret;
FILE *fp;
MYSQL_FIELD *field;
unsigned int num_fields;
conn = mysql_init(NULL);
ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gbk");
mysql_real_connect(conn,host,username,password,database,0,NULL,0);
fp = fopen ( "t_sys_power.out","w");
fprintf(fp,"char set %s\n", mysql_character_set_name(conn));
mysql_query(conn,"SELECT * from t_sys_power ");//WHERE a1='abc'");
res_set = mysql_store_result(conn);
while((field = mysql_fetch_field(res_set)))
{
printf("field name %s\n", field->name);
}
num_fields = mysql_num_fields(res_set);
for(i = 0; i < num_fields; i++)
{
field = mysql_fetch_field_direct(res_set, i);
printf("Field %u is %s\n", i ......
12.8. Cast函数和操作符
BINARY
BINARY操作符将后面的字符串抛给一个二进制字符串。这是一种简单的方式来促使逐字节而不是逐字符的进行列比较。这使得比较区分大小写,即使该列不被定义为 BINARY或 BLOB。BINARY也会产生结尾空白,从而更加显眼。
mysql> SELECT 'a' = 'A';
-> 1
mysql> SELECT BINARY 'a' = 'A';
-> 0
mysql> SELECT 'a' = 'a ';&nb ......
[root@sql21 ~]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.1.26-rc-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql>
mysql> use information_schema
Database changed
INFORMATION_SCHEMA提供了访问数据库元数据的方式。
元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”
最通俗我们可以看成是保存系统信息(数据字典)的scheme。
mysql> show tables;
+--------------------- ......
采用的是MySql官方提供的.NET connector,此驱动只需要下载即可使用:http://dev.mysql.com/downloads/connector/net/1.0.html
在使用中积累了几点经验:
1)使用Parameter参数形式提交Command时必须要把"@"号换成"?"号,这一点让我困惑了一天,只是不明白MySQL为何要搞特殊呢,象MS、ODP.NET for Oracle、OleDb等方式,都是用"@"号的。
例子如下:
string connstr=Setting.Instance().GetConnectionString("MySql");
MySqlConnection conn =new MySqlConnection(connstr);
conn.Open();
string query = "insert into myfirst(Id,Name) values(?Id,?Name)";
MySqlCommand cmd = new MySqlCommand(query, conn);
MySqlParameter para1=new MySqlParameter("?Id",DbType.Int32); //这里要注意必须要用?号
MySqlParameter para2=new MySqlParameter("?Name",DbType.String);//这里要注意必须要用?号
para1.Value=5;
para2.Value="ddd";
cmd.Parameters.Add(para1);
cmd.Parameters.Add(para2);
cmd.ExecuteNonQuery();
2)在MySQL中也有保留字,为了提供兼容,我必须要找到定界符,好不容易 ......