1. MySQL数据库简介
MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源。MySQL有以下特性:
(1) 使用C和C++编写,并使用了多种编译器进行测试,保证源码的可移植性。
(2) 支持多线程,利用CPU资源,支持多用户。
(3) 可以处理拥有上千万条记录的大型数据库。
(4)既可以作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为 一个库而嵌入到其他软件中去。
2. MySQL数据库的安装 安装MySQL数据库需要三个软件包:
(1)服务器
(2)客户端
(3) 开发库-如果用C或C语言开发,就得安装开发库。
MySQL-server-5.5.8-1.rhel5.i386.rpm
MySQL-client-5.5.8-1.rhel5.i386.rpm
MySQL-devel-5.5.8-1.rhel5.i386.rpm 在Linux下用rpm -ivh 安装即可。
3. MySQL的相关目录
/usr/bin MySQL客户端程序或脚本
/usr/sbin mysqld服务器相关程序
/var/lib/mysql 日志文件,数据库数据文件存放目录
/usr/share/doc/packages 使用手册,开发文档存放目录
/usr/include/mysql 接口函数库头文件存放目录
/usr/lib/mysql 接口函数动态链接库存放目录
/usr/share/mysql 错误消息和字符集文件存放目录
/usr/share/sql-bench 基本程序存放目录
4. MySQL数据库的基本操作
--查看linux系统下是否装有: cd /etc/init.d/mysqld/
--启动MySQL : /etc/init.d/mysqld start
--进入MySQL界面:mysql
[ ]中的内容为可选项
--创建数据库
mysql> create database 数据库名称
--创建表
mysql> create table 表名 (列的名字(id)类型(int(4))primary key(定义主键) auto_increment(描述 自增),……,); eg: create table stu(name char(20), num int(4), age int(2), sex char(1) );
--查看所有数据库
mysql> show databases ;
--使用某个数据库
mysql> use 数据库名称;
--查看所使用数据库下所有的表
mysql> show tables;
--显示表的属性结构
mysql> desc 表名;
--选择表中数据的显示
--* 代表选择所有列 ,
mysql> select * from 表名 where id=?[and name=?] [or name=?]; eg: select *from stu;
mysql> select id,name from 表名order by 某一列的名称 desc(降序,asc为升序) --表中添加数据 mysql> insert into 表名 values(); eg:insert into musictable values('1.wav','/home/2Stage/Project/music');
--删除表中的数据
mysql> delete from table where id=?[or name=? (and name=?)]; eg:delete from stu where name="xiaoming";
--删除表
mysql> drop table;
--删除数据库
mysql> drop database; --退出mysql mysql>quit --创建一个新的用户 mysql>grant select,delete,insert on *.* to user_1@localhost identified by "123"; grant ---权限----on 数据库.数据库中所有表 用户名@ 使用地方(%表示所有地方)identified by 密码 --进入创建的用户 :mysql -u user_1 -p : 密码 5. MySQL数据搬家 (1)查看MySQL数据存放位置: ls /var/lib/mysql/ (2)home目录下新建: mkdir /home/data mv /var/lib/mysql/ /home/data (3)修改配置文件:vim /etc/my.cnf 第3行:socket=/var/lib/mysql/mysql.sock 改为 socket=新建路径 (4)修改配置文件:vim /etc/rc.d/init.d/mysqld 第51行:get_mysql_option mysqld datadir "/var/lib/mysql" 改为:get_mysql_option mysqld datadir "新建路径" 6. C语言操作MySQL数据库 代码1:
/********************************************************************************
**
** 数据库操作MySQL
**
**----------FileInfo-------------------------------------------------------------
** 文件名称:test.c
** 创建日期:2014-10-13
** 修改日期:
** 文件信息:数据库存储信息
编译: gcc test.c -o test -lmysqlclient -L/usr/lib/mysql
********************************************************************************/
#include
#include
#include
int main()
{
/*设定一个文件句柄*/
MYSQL con;
/*初始化*/
mysql_init(&con);
/*链接数据库,参数1:句柄 参数2:主机名(NULL表示本机); 参数3:数据库使用使用名 参数4:数据库登录密码
参数5:数据库名字 参数6:数据库端口 参数7:链接类型 参数8:通常为0*/
MYSQL *ret = mysql_real_connect(&con, NULL,"root","","mm",0,NULL,0);
if(NULL == ret){
perror("connect error!\n");
exit(1);
}
char *ps = "select *from stu";
/*执行操作命令*/
int rsql = mysql_query(&con,ps);
if(rsql < 0){
perror("query error!\n");
exit(1);
}
MYSQL_RES *res;
/*存储检索信息*/
res = mysql_store_result(&con);
MYSQL_ROW row;
/*char **argv*/
/*检索一行的内容*/
while(row = mysql_fetch_row(res)){
printf("%s \t",row[0]);
printf("%s \t",row[1]);
printf("%s \t",row[2]);
printf("%s \t",row[3]);
printf("\n");
}
/*释放结构体空间*/
mysql_free_result(res);
/*关闭句柄所指数据库*/
mysql_close(&con);
return 0;
}
编译:gcc test.c -o test -lmysqlclient -L/usr/lib/mysql 或:gcc test.c -o test $(mysql_config --cflags) $(mysql_config --libs)
解释:
(1) mysql_config --cflags 寻找mysql编译相关的头文件等信息。
(2) mysql_config --libs 寻找mysql编译所需要的库函数。
(3) -L/usr/lib 指出静态库寻找的路径。在这里也可以不写,因为系统会去默认的/lib,/usr/lib去寻找库函数。如果libmysqlclient.a在/usr/lib/mysql下,那么-L/usr/lib/mysql 这个目录。
(4)非标准的库函数,链接时用-lmysqlclient.原库名为libmysqlclient.a去掉lib和.a。
(5) -I是包含头文件等信息,及include .
(6) 动态链接库的寻找顺序:
a. LD_LIBRARY_PATH设置的目录下.
b. /etc/ld.so.conf 加到这个文件中的目录。
c. 默认的 /usr/lib,/lib目录下。
(7)头文件的寻找顺序
a. -I所指定的目录中去寻找
b.gcc的环境变量指定的目录
C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH
c. /usr/include /usr/local/include 等目录下寻找。
(8)静态库的寻找顺序
a. -L所指定的静态库寻找路径
b.gcc环境变量LIBRARY_PATH
c. /lib ,/usr/lib,/usr/local/lib
代码2:
/********************************************************************************
**
** 数据库操作之MySQL
**
**----------FileInfo-------------------------------------------------------------
** 文件名称:test.c
** 修改日期:
** 文件信息:数据库里存储数据
********************************************************************************/
#include
#include
#include
int main()
{
/*设定一个文件句柄*/
MYSQL con;
/*初始化*/
mysql_init(&con);
/*链接数据库,参数1:句柄 参数2:主机名(NULL表示本机); 参数3:数据库使用使用名 参数4:数据库登录密码
参数5:数据库名字 参数6:数据库端口 参数7:链接类型 参数8:通常为0*/
MYSQL *ret = mysql_real_connect(&con, NULL,"root","","mm",0,NULL,0);
if(NULL == ret){
perror("connect error!\n");
exit(1);
}
char *ps = "insert into stu value('xiao1',123,23,'n')";
/*执行操作命令*/
int rsql = mysql_query(&con,ps);
if(rsql < 0){
perror("query error!\n");
exit(1);
}
}
~
参考文章:点击打开链接