mysql 简单使用手册

 
               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)
修改默认字符集
    
最简单的修改 方法 ,就是修改 mysql my.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 返回的是 -1 errmsg 的内容是“ 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
 
注释掉,然后重启 mysql ok
至于具体的原因,我到现在还不知道。
 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值