mysql 简单使用手册

来源:互联网 发布:2016淘宝营业额 编辑:程序博客网 时间:2024/05/18 02:28
 
               Mysql 简单使用总结
今天说是要测试mysql在插入大数据类型时的性能,所以我就下载了Mysql5.0以及mysql odbc driver 3.51版本,可是还是不会使用。在网上搜资料啊,不断的尝试啊,总算是能上数据库启动起来了。今天写成个简单的帖子,让Mysql初学者或者简单应用mysql的人有点看头。
 
1.      安装Mysql
 
这个比较简单,就是最按照提示安装就可以了,但是有一个地方需要注意,那就是配置Mysql数据库的时候设置密码的地方,一定要记住密码,否则client工具就启动不起来了。
 
2.      一般来说,安装完毕后,mysql 就已经启动起来了,打开任务管理器,可以看到mysqld-nt.exe在运行,这个就是服务器了。如果想重启这个服务,可以在任务管理器中将这个进程停止,然后在控制面板—>管理工具—>服务àmysql 启动。(我还没有找到其他的方法)。
 
3.      使用客户端工具Mysql.
开始à程序àMysqlàmysql server5.0àmysql,这个时候需要输入密码,如果密码正确,则会出现
mysql>
这样的提示,如果密码错误,就会直接退出。这里输入的密码就是在配置Mysql数据库的时候设置的密码。
数据库客户端启动了,那么我们现在需要连接数据库,不知道为什么Mysql不用connect to xxx这样的语法,而是用了一个非常奇怪的语法:
例如,我们新建了一个数据库:create database test;
这时,我们使用
Mysql > use test;
就连接到了test数据库,连接建立后,我们就可以做一系列的简单操作了。
 
4.      服务器:一般来说,mysqld-nt.exe启动以后,所有的数据库都已经启动了。、
 
5.      通过ODBC数据源来连接数据库
   控制面板—>管理工具àODBC数据源à系统DSNà添加àMysql odbc 3.51 driver
  
   Database name : 这个就是你在程序中要使用的名字
   Descriprion: 这个不重要,写不写都可以
   Server : 如果是本台计算机,就写127.0.0.1,否则,请写入正确的IP
   Port : 默认是3306,如果你修改过,请填入正确的端口
   User : root (这里我不知道为什么是root,可能是受linux的影响吧)
Passwd: 密码,这里输入的密码就是在配置Mysql数据库的时候设置的密码。
  Database:如果以上设置成功,拉开下拉式菜单,就可以看到所有的数据库。
  设置完了以后,可以test来测试是否成功。
 
6.      关于编码
 
a)
查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)
通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:
     mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------+
| Variable_name            | Value                           |
+--------------------------+---------------------------------+
| character_set_client     | latin1                          |
| character_set_connection | latin1                          |
| character_set_database   | latin1                          |
| character_set_filesystem | binary                          |
| character_set_results    | latin1                          |
| character_set_server     | latin1                          |
| character_set_system     | utf8                            |
| character_sets_dir       | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

  mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

b)
修改默认字符集
    
最简单的修改方法,就是修改mysqlmy.ini(linux系统为my.cnf)文件中的字符集键值,
    
      
[client]下面加上
      default-character-set = utf8
      
[mysqld]下面加上
      character_set_server =  utf8
      default-character-set = utf8
      character-set-server = utf8
      collation-server = latin1_swedish_ci
      init_connect = 'SET collation_connection = utf8_general_ci'
      init_connect = 'SET NAMES utf8'      
   
修改完后,重启mysql的服务,service mysql restart
   
使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8
+--------------------------+---------------------------------+
| Variable_name            | Value                           |
+--------------------------+---------------------------------+
| character_set_client     | utf8                            |
| character_set_connection | utf8                            |
| character_set_database   | utf8                            |
| character_set_filesystem | binary                          |
| character_set_results    | utf8                            |
| character_set_server     | utf8                            |
| character_set_system     | utf8                            |
| character_sets_dir       | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

   c)
还有一种修改字符集的方法,就是使用mysql的命令
     mysql> SET character_set_client = utf8 ;
     mysql> SET character_set_connection = utf8 ;
     mysql> SET character_set_database = utf8 ;
     mysql> SET character_set_results = utf8 ;
     mysql> SET character_set_server = utf8 ;

     mysql> SET collation_connection = utf8 ;
     mysql> SET collation_database = utf8 ;
     mysql> SET collation_server = utf8 ;

服务器将character_set_system系统变量设置为元数据字符集的名
 
7.实际范例:
 
#include <stdio.h>
#include <string.h>
//#include <sql.h>
#include <windows.h>
#include <sqlext.h>
//#include <sqlopt.h>
#include <sqltypes.h>
#define DBNAME "mysqlu8db"
#define UID    "root"
#define PWD    "test"
#define BUFSZ 10
void main()
{
       HENV henv;
       HDBC hdbc;
       HSTMT hstmt;
       char buf[BUFSZ+1] ="乐乐乐乐乐";
    int len1,prgbvar;
       int rc;
       SQLCHAR sqlstate[100] = {0};
       SQLCHAR errmsg[1000] ={0};
       SQLSMALLINT pfnativeerror,szerrmsg;
       rc = SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
       rc = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0);
       rc = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
       rc = SQLSetConnectAttr(hdbc,SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_ON,0);
       rc = SQLConnect(hdbc,DBNAME,SQL_NTS,UID,SQL_NTS,PWD,SQL_NTS);
       if(rc)
              printf("connect error");
      
       rc = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
       rc = SQLExecDirect(hstmt,"drop table testclob",SQL_NTS);
       rc = SQLExecDirect(hstmt,"set character_set_client=gbk",SQL_NTS);
       rc = SQLExecDirect(hstmt,"set character_set_connection=gbk",SQL_NTS);
       rc = SQLExecDirect(hstmt,"set character_set_results=gbk",SQL_NTS);
       //rc = SQLExecDirect(hstmt,"drop table testclob",SQL_NTS);
       //rc = SQLExecDirect(hstmt,"drop table testclob",SQL_NTS);
       rc = SQLPrepare(hstmt,"create table testclob(c1 long varchar)",SQL_NTS);
       rc = SQLExecute(hstmt);
 
       rc = SQLPrepare(hstmt,"insert into testclob values(?)",SQL_NTS);
       len1 = SQL_DATA_AT_EXEC;
       rc=SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_LONGVARCHAR,0,0,NULL,0,&len1);
       rc = SQLExecute(hstmt);
       if(rc == SQL_NEED_DATA)
       {
          while((rc = SQLParamData(hstmt,(PTR FAR *)&prgbvar)) == SQL_NEED_DATA)
          {
                 rc = SQLPutData(hstmt,buf,BUFSZ);
          }
          if(rc)
          {
                 SQLError(henv,hdbc,hstmt,sqlstate,&pfnativeerror,errmsg,1000,&szerrmsg); ------------------------------------------------------10
          }
       }
      
       rc = SQLDisconnect(hdbc);
 
}
 
在标记为10的地方(蓝色字体的部分),rc返回的是-1errmsg的内容是“data too long for column 1 in ‘c1’,我但是非常奇怪,不知道出现了什么问题,
Mysql去看:
Mysql > select * from testclob;
Empty set (0.02s)
几次折腾,上网搜集,才找到解决的办法:
my.ini里找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
把其中的STRICT_TRANS_TABLES,去掉,或者把
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 
注释掉,然后重启mysqlok
至于具体的原因,我到现在还不知道。
 
原创粉丝点击