Mysql使用

环境:ubuntu

安装方法:终端命令  apt-get install mysql-server mysql-client libmysqlclient-dev 

简介:Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。


Mysql系统命令(终端命令)

1.    打开Mysql

代码:      mysql -uroot -p123456

                 root用户,密码123456


2    添加数据库用户

代码:      insert into user(host, user, password, select_priv, insert_priv, update_priv) values('localhost', 'ly', PASSWORD('123456'), 'Y', 'Y', 'Y');

解释:      用户名为ly,密码为123456,并授权用户可进行 SELECT, INSERT 和 UPDATE操作权限:


3    重新载入授权表

代码:      flush privileges;


4    查询用户

代码:      select host, user, password from user where user = 'ly';


5    使用表

代码:      use 表名;


6    查看Myql的数据库

 代码:     show databases;


7    查看指定数据库的所有表

代码:      use   数据库名;

                 show tables;


Mysql的数据类型

1:整形数据

      数据类型                  大小

      tinyint(m)                 一个字节

      smallint(m)              二个字节

      mediumint(m)         三个字节

      int(m)                      四个字节

      bigint(m)                 八个字节


2 :浮点型 

      数据类型                 大小

      float(m,d)                四个字节,8位精度,m总位数,d小数位数

      double(m,d)            八个字节  16位精度,m总位数,d小数位数


3:定点数

     数据类型                 精确度要求

     decimal(m,d)          m<65 && d<30 &&  d<m


4:字符串  

     数据类型               最大大小

     char(n)                  255字符          固定长度

     varchar(n)             65535字符      固定长度

     tinytext                  255字符          可变长度

     text                        65535字符      可变长度

     mediumetext         2^(24-1)字符   可变长度

     longtext                 2^(32-1)字符   可变长度

TIP:

char和varchar:
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类    型存储的字符串末尾不能有空格,varchar不限于此。 
2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。 
3.char类型的字符串检索速度要比varchar类型的快。
 
varchar和text: 
1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。 
2.text类型不能有默认值。 
3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用

   

二进制数据

    数据类型               大小         

    BLOB                    2^(16-1)字符


日期时间类型

    数据类型              格式

    data                      日期‘2008-12-2’

    time                       时间‘12-25-36’

    timestamp             自动存储记录修改时间

    datetime                日期时间’2008-12-2 22:06:44‘


数据类型参数

    关键字                                        含义    

    NULL                                          数据列可包含NULL值 

    NOT NULL                                 数据列不允许包含NULL值

    DEFAULT                                   默认值

    PRIMARY KEY                           主键

    AUTO_INCREMENT                  自动递增

    UNSIGNED                                无符号

    CHARACTER SET name          指定一个字符集


Mysql终端操作命令

1                 进入Mysql

命令:        mysql -h 主机名 -u 用户名 -p

含义:        -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
                   -u : 所要登录的用户名;
                   -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
                   以登录刚刚安装在本机的MySQL数据库为例, 在命令行下输入 mysql -u root -p 按回车确认, 如果安装正确且                     MySQL正在运行, 会得到以下响应:


2                  创建数据库

命令:         create database my1_db character set gbk;

含义:         创建了一个名为my_db数据库,将数据库字符编码指定为gdl

                    创建成功时会得到 Query OK, 1 row affected(0.02 sec) 的响应。
                    注意: MySQL语句以分号(;)作为语句的结束, 若在语句结尾不添加分号时, 命令提示符会以 -> 提示你继续输                        入(有个别特例, 但加分号是一定不会错的);

                    要对一个数据库进行操作, 必须先选择该数据库, 否则会提示错误:
 
                    ERROR 1046(3D000): No database selected


3                  创建数据库表

命令:          creat table students(id int unsigned not null auto_increament primary key,

                                                     name char(8) not null,

                                                     sex char(3) not null,

                                                     age tinyint unsigned not null,

                                                     tel char(13) null default"-");

                

含义:         八个字符大小的name 不允许包含NULL,

                    三个字符大小的sex  不允许包含NULL,

                    一个字节大小的无符号整型age 不允许包含NULL,

                   十三个字符大小的tel默认值为“-” 允许包含NULL.


4                  数据插入

命令:         insert into students values(NULL, "王三", "男", 20, "13811371377");

                    insert into students (name, sex, age) values("孙丽华", "女", 21);

含义:         在students表中插入数据,id为上一条数据ID值+1;如果为第一条则为1;name为王二;sex为男;age为                            20;tel为13811371377的数据

                    在students表中插入数据,id为上一条数据id+1;name为孙丽华,sex为女;age为21; tel为-;

                    按回车键确认后若提示 Query Ok, 1 row affected (0.05 sec) 表示数据插入成功。 若插入失败请检查是否已                      选择需要操作的数据库。


5                  数据查询

命令:         select 列名称 from 表名称 [查询条件];       

                    select * from students;

                    select name from students;

                    select * from students where age>20;

                    select * from students where id<5 and age>20;

含义            查询表内所有数据

                   查询表内所有数据的name列

                   查询表内所有age大于20的数据

                   查询表内所有id<5并且ge>20的数据

                   where 子句不仅仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的,                     例如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。 还可以对查询条件使用 or 和                       and 进行组合查询。


6                 修改数据

命令:        updata 表名称 set 列名称=新值 where 更新条件

                   update students set tel=default where id=5;

                   update students set age=age+1;

含义:        将id为5的手机号改为默认的"-"

                   将所有人的年龄增加1:


7                  数据删除

命令:         delete from 表名称 where 删除条件

                    delete from students where id=2;

                    delete from students where age<20;

                    delete from students;

含义:         删除id为2的行

                    删除所有年龄小于21岁的数据:

                    删除表中的所有数据

  

8                   添加列

命令              alter table 表名 add 列名 列数据类型 [after 插入位置];

                     alter table students add address char(60);

                     alter table students add birthday date after age;

含义              在表的最后追加列 

                     在名为 age 的列后插入列

 

9                   修改列

命令              alter table 表名 change 列名称 列新名称 新数据类型;

                     alter table students change tel telphone char(13) default "-";

                     alter table students change name name char(16) not null;

含义             将表 tel 列改名为 telphone

                    将 name 列的数据类型改为 char(16)

                    字符型转化成实型数据会消失,实型转化成字符型,数据不会消失。


10                删除列

命令             alter table 表名 drop 列名称;

                    alter table students drop birthday;

含义             删除birthday列


11                 重命名表

命令             alter table 表名 rename 新表名;

                    alter table students rename workmates;

含义             重命名students表为workmates;


12               删除整张表

命令            drop table 表名;

                   drop table workmates;

含义            删除workmates表


Mysql接口使用(程序)

mysql中文完全参考手册

http://www.yesky.com/imagesnew/software/mysql/manual_toc.html

编辑器 vi

编译器 g++


1                 mysql函数头文件

命令            cd    /uer/include/mysql

含义            查看库里mysql头文件种类

                   其中我们主要用mysql.h

                   如果include文件夹没有mysql文件夹,自己下一个

                   include<mysql/mysql.h>


2                编译含mysql的C++程序

命令           g++ main.cpp -o main -lmysqlclient

含义           编译main.cpp源文件 生成main文件   -l后面是要链接的库名


3                获取错误消息

函数原型   unsigned int mysql_errno(MYSQL *connection); 

                 char *mysql_error(MYSQL *connection);

返回值       第一个函数返回的是一个错误码;

                  第二个函数返回的是一个错误文本信息;

代码           printf("%d,%s",msql_errno(a),mysql_error(a));

含义          a是数据库的操作句柄,当a使用数据库函数发生错误时,使用mysql_errno(a)可以获得错误码(数字),使用mysql_error(a)可以获得错误的具体信息.

                  一般都使用mysql_error()函数;


3                初始化数据库操作句柄    

函数原型   MYSQL *mysql_init(MYSQL *mysql)

返回值        初始化的 MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL,意味着初始化失败;

解释        分配或初始化与 mysql_real_connect()相适应的MYSQL对象
             如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。
             否则,将初始化对象,并返回对象的地址。
             如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
代码           MYSQL b;

                  MYSQL *a=mysql_init(&b);   

                

含义           建立了MYSQL 对象,名为b ,通过mysql_init函数初始化了b.

                  a指向b;


4                连接数据库

函数原型    MYSQL *mysql_real_connect (MYSQL *mysql,
                                                                   const char *host,
   const char *user, 
           const char *passwd, 
   const char *db, 
           unsigned int port,
   const char *unix_socket,
   unsigned long client_flag);

返回值       如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。

解释           MYSQL *为mysql_init函数返回的指针,即操作数据库的句柄。
                  host为null或 localhost时链接的是本地的计算机,
                  当mysql默认安装在unix(或类unix)系统中,root账户是没有密码的,因此用户名使用root,密码为null,
                  当db为空的时候,函数链接到默认数据库,在进行 mysql安装时会存在默认的test数据库,因此此处可以使用test数据库名称,
                  port端口为0,使用 unix连接方式,unix_socket为null时,表明不使用socket或管道机制,最后一个参数经常设置为0

                  mysql_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。

代码           MYSQL *con = mysql_real_connect(mysql, NULL, "root", "123456", "my_db", 0, NULL,0);

                  if (con == NULL)

                      printf (" 连接服务器失败: %s\n", mysql_error(mysql));

含义           mysql是初始化好的操作句柄指针;NULL意味着连接本地计算机;”root"是用户名,"123456"是密码,“my_db"是连接的数据库,端口为0,NULL不使用SOCKET和管道,默认为0;

                  当连接失败时,语句返回值是NULL,使用mysql_error()函数打印错误信息;


5                关闭连接

函数原型    void  mysql_close(MYSQL *sock);

解释           关掉数据库连接句柄

代码           mysql_close(a);

含义           关掉a指向的连接句柄


6                 执行SQL语句,设置编码格式      

函数原型     int  mysql_query(MYSQL *mysql, const char *q);

返回值        执行失败返回0; 

解释            第一个参数是数据库操作句柄指针,第二个参数是执行的语句

代码           mysql_query(mysql, "set names utf8");

                  int ret = mysql_query(mysql, sql);
                  if (ret != 0)
                  {
                      printf (" 操作失败 : %s\n", mysql_error(mysql));
                      return -1;
                  }

含义           第一个语句是解决中文乱码问题

                  第二个语句是执sql语句,失败则返回失败原因;SQL语句即终端命令;


7                 获取数据库执行结果

函数原型     MYSQL_RES *     STDCALL mysql_store_result(MYSQL *mysql);       

返回值         MYSQL_RES指针,用来指向存放结果

解释            第一个参数是执行SQL语句的数据库操作句柄

代码            MYSQL_RES *mysql_res = mysql_store_result(mysql);
                   if (mysql_res == NULL)
                   {
                       if (mysql_errno(mysql) == 0) //  不是错误
                       {
                            printf (" 操作成功 \n");
                            return 0;
                       }
                      printf ("mysql_store_result () : %s\n", mysql_error(mysql));
                      return -1;
                    }

含义            获取SQL语句执行结果,获取失败则返回失败信息


8                 获取执行结果的列数

函数原型     unsigned int  mysql_num_fields(MYSQL_RES *res);

返回值         无符号整型数为结果的列数

解释             传入MYSQL_RES类指针,返回值为指针指向结果的列数;

代码           unsigned int num = mysql_num_fields(mysql_res);

含义            获取数据的列数;


9                 获取结果列名

函数原型    MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res);

返回值        列名指针

解释           传入结果句柄

代码           MYSQL_FIELD *fields = mysql_fetch_fields(mysql_res);
                  for(i = 0; i < num; i++)
                  {
                      printf("%-8s", fields[i].name);
                  }

含义          获取列名指针,输出列名;


10              获取结果数据

函数原型    MYSQL_ROW   mysql_fetch_row(MYSQL_RES *result);

返回值       数据数组

解释           传入结果句柄,获得数据数组

代码          MYSQL_ROW row;

                 while (row = mysql_fetch_row(mysql_res))
                 {
                      for (i = 0; i < num; i++)
                      { 
                         printf ("%-8s", row[i]);
                      }
                     printf ("\n");
                 }

含义          获得数据数组,进行输出;


11                执行事务

函数原型     int  mysql_query(MYSQL *mysql, const char *q);
返回值        执行失败返回0; 
解释            第一个参数是数据库操作句柄指针,第二个参数是执行的语句     

代码             int ret = 0;
                    ret = mysql_query(mysql, BEGIN_TRAN);

                    ret = mysql_query(mysql, SET_TRAN);

                    ret = mysql_query(mysql, ROLLBACK_TRAN);

                    ret =mysql_query(mysql,UNSET_TRAN);

                    ret = mysql_query(mysql, COMMIT_TRAN);

含义            执行事务开始SQL

                   设置事务手动提交

                   事务回滚

                   恢复事务提交标志

                   事务提交

                   

                                          




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值