前言:最近准备做毕业设计,初次接触到MySQL,做一个学习记录
安装MySQL:傻瓜式安装
sudo apt-get install mysql-server
apt-get install libmysqlclient-dev
这个记得要装,不然编程的时候找不到mysql.h文件
操作MySQL
1.打开终端,准备登录
mysql -h 127.0.0.1 -u root -p
//root为用户名 127.0.0.1为主机名,即允许用什么IP登录,这些都是在创建用户的时候就写好的
2..创建新的用户
create user '用户名'@'登录IP' identified by '密码'
例如:create user 'zouwm'@'127.0.0.1' identified by '123456'
3.用户授权
grant 权利 on databasename.tablename to 用户 例如:grant all on *.* to zouwm
*.*代表所有数据库的所有表
4.创建数据库
create database 数据库
例如:create database test
5.创建表
首先指定数据库
use 数据库
例如:use test
创建表
create table S_RESIDENCE(
USER_ID VARCHAR(20) NOT NULL,
PHONE VARCHAR(20),
NAME VARCHAR(30),
VILLAGE_NAME VARCHAR(100),
VILLAGE_ID VARCHAR(20) NOT NULL,
RESIDENCE_ADDR VARCHAR(200),
STATE CHAR(1),
PRIMARY KEY(USER_ID)
);
USER_ID VARCHAR(20) NOT NULL,
PHONE VARCHAR(20),
NAME VARCHAR(30),
VILLAGE_NAME VARCHAR(100),
VILLAGE_ID VARCHAR(20) NOT NULL,
RESIDENCE_ADDR VARCHAR(200),
STATE CHAR(1),
PRIMARY KEY(USER_ID)
);
C语言操作MySQL
Mysql API数据结构
MYSQL
连接数据库前,必须先创建MYSQL变量,此变量在很多Mysql API函数会用到。它包含了一些连接信息等数据。
MYSQL_RES
MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据。可以使用mysql_store_result或mysql_use_result函数获得。
MYSQL_ROW
MYSQL ROW的定义如下:
typedef char **MYSQL_ROW;
可见,它实际上是char **类型,指向一个字符串数组。可以通过mysql_fetch_row函数获得。
MYSQL_FIELD
MYSQL_FIELD中包含了字段名、字段类型和大小等信息。可以重复调用mysql_fetch_field函数获得所有字段的信息。
注意:Linux下的MySQL的表明是区分大小写的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<mysql.h>
#define MAX_COLUMN_LEN 32
int main(int argc , char *argv[])
{
MYSQL db;
MYSQL_RES *res;
MYSQL_ROW row;
//初始化数据库
mysql_init(&db);
//连接数据库
if(mysql_real_connect(&db,"127.0.0.1","zouwm","z123","intelligence",3306,NULL,0))
{
printf("connect!!!\n");
}
//查询
if (mysql_real_query(&db, "select * from S_RESIDENCE", (unsigned long)strlen("select * from S_RESIDENCE")))
{
printf("mysql_real_query failed\n");
return 0;
}
// 存储结果集
res = mysql_store_result(&db);
if (NULL == res)
{
printf("mysql_store_result failed\n");
return 0;
}
// 重复读取行,并输出第一个字段的值,直到row为NULL
while (row = mysql_fetch_row(res))
{
printf("%s\n",row[0]);
}
// 释放结果集
mysql_free_result(res);
// 关闭Mysql连接
mysql_close(&db);
return 0;
}
编译连接选项 gcc -I/usr/include/mysql test.c -o demo -L/usr/lib/mysql -lmysqlclient
我认为sql主要还是懂sql语句,至于这些API只要会套用就够啦