Linux下mysql的安装和使用(C语言)
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语言)的更多相关文章
- .Neter玩转Linux系列之六:Linux下MySQL的安装、配置、使用
一.Linux安装MySQL (1)下载安装包:https://dev.mysql.com/downloads/mysql/ (2)解压并安装 命令:tar zxvf 文件名 解压完成之后,重名一下文 ...
- linux下mysql的安装
一.下载 http://dev.mysql.com/downloads/mysql/ 选择对应的版本,这里选择“Linux-Generic” 以64位系统为例,这里需要下载如下两个文件: MySQL- ...
- linux下Mysql 的安装、配置、数据导入导出
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),虽然功能未必很强大,但因它的免费开源而广受欢迎. 这次,接着上一篇<CentOs minimal安装和开发环境部署>,讲下L ...
- Window/Linux下Mysql的安装步骤
Windows下Mysql安装教程 首先讲一下Windows环境下安装Mysql,我使用的安装包版本是mysql-8.0.26-winx64 下载地址:MySQL下载 1.点击上面的下载地址得到zip ...
- linux 下mysql的安装,并设置必要的密码
首先,我使用的是redhat linux ,版本号为: [root@localhost init.d]# cat /proc/version Linux version - (bhcompile@po ...
- (转)linux下mysql的安装过程
最近在linux安装了mysql,根据网上收集的资料和个人的操作过程,大概做了个整理,以便以后进行参考回顾. 1.下载mysql-5.1.36.tar.gz,并且解压. tar -xzvf mysql ...
- Linux下MySQL的安装和启动(转载)
原文链接:http://www.linuxidc.com/Linux/2016-07/133234.htm 一.MySQL各类安装方法的比较 在Linux系统下,MySQL有3种主要的安装方式,分别是 ...
- linux 下MySQL的安装
一.安装MySQL 1.下载源码包 从mysql官网上下载linux下的source包mysql-5.0.51b.tar.gz,注意是下载GNU tar格式的,不是rpm包. 2.解 ...
- (0.2)linux下Mysql的安装配置与管理入门(目录篇)
本章学习内容: 1.基于Linux平台的Mysql项目场景介绍 1.1.互联网各类网站.购物网站.门户网站.博客系统.IDC,云平台,VPS,虚拟主机空间,论坛,嵌入式. 2.mysql数据库运行环境 ...
随机推荐
- 深入理解Redis中的主键失效及其实现机制
参考:http://blog.sina.com.cn/s/articlelist_1221155353_0_1.html 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids ...
- chrome打不开12306
chrome打不开12306怎么办?chrome怎么会打不开12306? chrome打不开12306: 1.没有安装12306网站的根证书. 2.打开https://dynamic.12306.cn ...
- tachyon 集群容错
集群容错就是HA.这次顺带也练一下hadoop的HA 环境: centos6.5+jdk1.7+hadoop2.2.0+tachyon0.5.0+zookeeper3.4.6 hadoop 192.1 ...
- 基于xml的用户注册登录案例
用户注册登录 要求:3层框架,使用验证码 1 功能分析 l 注册 l 登录 1.1 JSP页面 l regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时, ...
- K-th Number 线段树(归并树)+二分查找
K-th Number 题意:给定一个包含n个不同数的数列a1, a2, ..., an 和m个三元组表示的查询.对于每个查询(i, j, k), 输出ai, ai+1, ... ,aj的升序排列中第 ...
- LocalActivityManager的内部机制
LocalActivityManager内部机制的核心在于,它使用了主线程对象mActivityThread来装载指定的Activity.注意,这里是装载,而不是启动,这点很重要. 所谓的启动,一般是 ...
- epoll实现linux进程通信
server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <s ...
- 重构17-Extract Superclass(提取父类)
当一个类有很多方法希望将它们“提拔”到基类以供同层次的其他类使用时,会经常使用该重构.下面的类包含两个方法,我们希望提取这两个方法并允许其他类使用. public class Dog { public ...
- 构建项目AppFuse+QuickStart
AppFuse是一个完整的框架来构建web应用程序.它最初是为了构建新的web应用程序少走弯路.多年来,它已成为一个非常成熟的可测试和创建基于java的web应用安全系统.在其核心,AppFuse是项 ...
- Windows防火墙出站、入站相关知识总结
出站默认是全部允许,只禁止相关出站规则指定的条目:入站默认是全部禁止,只允许相关入站规则指定的条目. 入站规则其实没什么好说的,直接添加规则允许某IP或端口访问,或允许某程序全部访问,就行了. 要控制 ...