1 mysql的安装

我使用的ubuntu在线安装,非常简单,命令为:

sudo apt-get install mysql-client mysql-server

2 mysql命令集合

网络太多了,我就copy一段吧。

1.linux下启动mysql的命令:

mysqladmin start
/ect/init.d/mysql start (前面为mysql的安装路径)

2.linux下重启mysql的命令:

mysqladmin restart
/ect/init.d/mysql restart (前面为mysql的安装路径)

3.linux下关闭mysql的命令:

mysqladmin shutdown
/ect/init.d/mysql shutdown (前面为mysql的安装路径)

4.连接本机上的mysql:

进入目录mysql\bin,再键入命令mysql -uroot -p, 回车后提示输入密码。

退出mysql命令:exit(回车)

5.修改mysql密码:

mysqladmin -u用户名 -p旧密码 password 新密码

或进入mysql命令行SET PASSWORD FOR root=PASSWORD("root");

6.增加新用户。(注意:mysql环境中的命令后面都带一个分号作为命令结束符)

grant select on 数据库.* to 用户名@登录主机 identified by "密码"

如增加一个用户test密码为123,让他可以在任何主机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:

grant select,insert,update,delete on *.* to " Identified by "123";

7、显示数据库列表。

show databases;

8、显示库中的数据表:

use mysql; //打开库
show tables;

9、显示数据表的结构:

describe 表名;

10、建库:

create database 库名;

11、建表:

create table 表名(字段设定列表);

12、删库和删表:

drop database 库名;
drop table 表名;

13、将表中记录清空:

delete from 表名;
truncate table 表名;

14、显示表中的记录:

select * from 表名;

15、编码的修改

如果要改变整个mysql的编码格式:

启动mysql的时候,mysqld_safe命令行加入

--default-character-set=gbk

如果要改变某个库的编码格式:在mysql提示符后输入命令

alter database db_name default character set gbk;

16、重命名表

alter table t1 rename t2;

17.查看sql语句的效率

explain < table_name >

例如:explain select * from t3 where id=3952602;

18.用文本方式将数据装入数据库表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;

还不能满足你的话,来这里看API吧。

2 C语言的API函数

mysql对于C语言的API,使用较为频繁的有:

mysql_init,mysql_real_connect,mysql_query,mysql_store_result,mysql_fetch_row,mysql_free_result,mysql_close,mysql_init

具体的使用方法如下。

(1)mysql_init

作用:是初始化MYSQL变量,为mysql_real_connect()做准备。

用法:

MYSQL *mysql_init(MYSQL *mysql)

返回值:MYSQL句柄或描述符;内存不足是为NULL;

(2)mysql_real_connect

功能:链接mysql数据库;

用法:

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 int client_flag)

说明:如果port!=0,则将作为TCP/IP端口使用,默认为0;如果unix_socket!=NULL,则可指定socket或命名PIPE,默认为NULL;Client_flag可以指定特定的值(略),默认为0.

(3)mysql_query

功能:查询实施

用法:

int mysql_query(MYSQL *mysql, const char *query)

说明:query为数据库操作命令字符串,本义是查询(select),可包括select,update,insert,delete等对数据库操作的命令。mysql_query不能用来处理二进制数据,处理二进制数据可使用mysql_real_query。

返回值:0表示正常,非0表示发生了错误。

(4)mysql_store_resul

功能:结果集处理。如果使用mysql_query运行的是一个SELECT语句,或其它可以返回结果的查询,可用函数mysql_store_result来访问返回结果并并将其保存在一个变量中,以便做进一步处理。

用法:

MYSQL_RES *mysql_store_result(MYSQL *mysql)

MYSQL_RES *mysql_use_result(MYSQL *mysql)

说明:mysql为mysql_real_connect函数的返回值。

(5)结果集的使用

使用了mysql_store_result函数保存结果后,可以使用以下函数对结果集进行处理。

①获得结果集中的行数:

my_ulonglong mysql_num_rows(MYSQL_RES *result)

②获得结果集行的域字段数:

unsigned int mysql_num_fields(MYSQL_RES *result)

unsigned int mysql_num_fields(MYSQL *mysql)

③读取结果集中的一行:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

④获取结果集中行的域段数:

unsigned int mysql_field_count(MYSQL *mysql)

⑤获得结果集中的域的属性:

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

⑥获得域属性数组:

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

⑦查询被update、delete、insert等受影响的行:

my_ulonglong mysql_affected_rows(MYSQL *mysql)

(6)善后工作

当对数据库使用完毕后,应对所创建的变量等进行释放:

mysql_free_result(result);
mysql_close(&mysql);

(7)错误处理

方法有2:利用函数的返回值来判断函数执行是否正确;2.使用mysql提供的错误号和错误信息:

错误号:

unsigned int mysql_errno(MYSQL *mysql)

错误信息:

char *mysql_error(MYSQL *mysql)

(8)辅助函数

获取客户机版本信息:

char *mysql_get_client_info(void)

获取主机信息:

char *mysql_get_host_info(MYSQL *mysql)

获取协议版本信息:

unsigned int mysql_get_proto_info(MYSQL *mysql)

获取服务器版本信息:

char *mysql_get_server_info(MYSQL *mysql)

获取可用数据库列表:

MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)

获取数据库的可有表列表:

MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)

3 C语言操作mysql的实例

假设数据库中已经创建了一个test库,库中有一个children表,表中有点小数据。现在将这些数据读取出来。

#include "stdio.h"
#include "string.h"
#include "mysql/mysql.h" int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int i,j; char *query = "select * from children;"; mysql_init(&mysql); if(!mysql_real_connect(&mysql,"localhost","root","open","test",0,NULL,0))
{
printf("Error in connecting");
} if(mysql_query(&mysql,query))
{
printf("Error in querying");
} res = mysql_store_result(&mysql); while(row = mysql_fetch_row(res))
{
for(i=0;i<mysql_num_fields(res);i++)
{
fprintf(stdout,"%s ",row[i]);
}
printf("\n");
} mysql_free_result(res);
mysql_close(&mysql);
return 0;
}

Linux下mysql的安装和使用(C语言)的更多相关文章

  1. .Neter玩转Linux系列之六:Linux下MySQL的安装、配置、使用

    一.Linux安装MySQL (1)下载安装包:https://dev.mysql.com/downloads/mysql/ (2)解压并安装 命令:tar zxvf 文件名 解压完成之后,重名一下文 ...

  2. linux下mysql的安装

    一.下载 http://dev.mysql.com/downloads/mysql/ 选择对应的版本,这里选择“Linux-Generic” 以64位系统为例,这里需要下载如下两个文件: MySQL- ...

  3. linux下Mysql 的安装、配置、数据导入导出

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),虽然功能未必很强大,但因它的免费开源而广受欢迎. 这次,接着上一篇<CentOs minimal安装和开发环境部署>,讲下L ...

  4. Window/Linux下Mysql的安装步骤

    Windows下Mysql安装教程 首先讲一下Windows环境下安装Mysql,我使用的安装包版本是mysql-8.0.26-winx64 下载地址:MySQL下载 1.点击上面的下载地址得到zip ...

  5. linux 下mysql的安装,并设置必要的密码

    首先,我使用的是redhat linux ,版本号为: [root@localhost init.d]# cat /proc/version Linux version - (bhcompile@po ...

  6. (转)linux下mysql的安装过程

    最近在linux安装了mysql,根据网上收集的资料和个人的操作过程,大概做了个整理,以便以后进行参考回顾. 1.下载mysql-5.1.36.tar.gz,并且解压. tar -xzvf mysql ...

  7. Linux下MySQL的安装和启动(转载)

    原文链接:http://www.linuxidc.com/Linux/2016-07/133234.htm 一.MySQL各类安装方法的比较 在Linux系统下,MySQL有3种主要的安装方式,分别是 ...

  8. linux 下MySQL的安装

    一.安装MySQL   1.下载源码包     从mysql官网上下载linux下的source包mysql-5.0.51b.tar.gz,注意是下载GNU tar格式的,不是rpm包.    2.解 ...

  9. (0.2)linux下Mysql的安装配置与管理入门(目录篇)

    本章学习内容: 1.基于Linux平台的Mysql项目场景介绍 1.1.互联网各类网站.购物网站.门户网站.博客系统.IDC,云平台,VPS,虚拟主机空间,论坛,嵌入式. 2.mysql数据库运行环境 ...

随机推荐

  1. git 修改commit信息

    可以使用 git commit --amend 修改上一次的提交信息. 操作示例 如下: git commit --amend 后会出现编辑界面,如下 可以在最上面红框的地方,修改要提交的信息,然后按 ...

  2. GNU C/C++ __attributes__ GCC中的弱符号与强符号

    最近在看一些源代码,遇到了一些使用__attribute__修饰函数和变量的属性方面的代码,不是太了解,很是汗颜,再此做个总结:   GCC使用__attribute__关键字来描述函数,变量和数据类 ...

  3. 代码片段---S3C2440按键中断驱动程序的设计

    用到的知识: 中断  等待队列  睡眠  select  poll  misc http://pan.baidu.com/s/1bneSG5h

  4. InAction-根据LBS数据手机用户移动轨迹

    看了以后学了不少通信运营商关于用户数据记录的知识啊. 本来想从网上找真实数据集的,但是网上的数据不合这个DEMO的场景要求,于是用作者提供的python脚本生成一定数据量的数据来实践(当然,这些数据结 ...

  5. iOS缓存框架-PINCache解读

    文/Amin706(简书作者)原文链接:http://www.jianshu.com/p/4df5aad0cbd4著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 在项目中总是需要缓存一 ...

  6. .NET多线程执行函数

    前面几篇文章一直在写LINQ,这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程,便停下手来整理一下.关于多线程的文章,园子里很多很多,因此关于多线程理论性的 ...

  7. C#获取进程的主窗口句柄的实现方法

    通过调用Win32 API实现. public class User32API { private static Hashtable processWnd = null; public delegat ...

  8. T-SQL 之 多表联合更新

    1. sqlite 多表更新方法 UPDATE tA SET col1=tB.col1 FROM tableA tA INNER JOIN tableB tB ON tA.col2=tB.col2 这 ...

  9. A - 敌兵布阵

    Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些 ...

  10. C#高级特性

    1.接口 接口与抽象基类.抽象类与接口的不同是,抽象类不仅可以定义多态接口还可以定义一些其他的成员以及构造函数.而接口只能包含抽象成员. 抽象父类创建多态接口,只有派生类才可以.而往往很多情况下非派生 ...