一、常用的基本操作
1. 登录:mysql -h localhost -u root -p
-h:后面接的是主机名,表示你要连接到哪台主机的MySQL数据库。localhost(127.0.0.1)也可以是SV 连接的主机IP.
-u:后面接的是用户名,MySQL默认的就是root。
-p:指定需要使用密码登陆MySQL数据库,如果密码为空,该参数可以省略。登陆密码也可以直接输在-p后。
2. 查看数据库:show databases;
3. 创建数据库:create database 数据库名。
4. 进入数据库:Use 数据库名;
5. 创建表:create table myclass(表结构)
6. 查看表:describe 表名;
7. 插入数据:insert into myclass values("1230011","张三","20","1","山西");
8. 查看表中所有信息:select * from myclass
9. 查询表中某一列的数据或者某几列的数据:命令:select id,name from myclass;
10. 查询特定条件的数据:select * from myclass where id="1230011";
11. 修改数据表中的数据:update myclass set name="张大仙" where id='1230011';
12. 删除数据表中的数据: delete from myclass where name='张大仙';
13. 删除数据表中的某一列:alter table myclass drop age
14. 修改列名:alter table myclass change name students_name char(20) not null;
15. 数据表中插入列:alter table myclass add age char(10) not null ;
16. 删除表table1:drop table if exists table1;
17. 备份数据库testdb:mysqldump -h 192.168.3.143 -u root -p pwd -x --default-character-set=gbk >C:\testdb.sql
18. 删除数据库testdb:drop database testdb;
19. 恢复testdb数据库:mysql -u root -pleizhimin testdb <C:\testdb.sql
二、常用类型介绍
1. MYSQL
用于定义一个mysql对象,便于后续操作确定要操作的数据库是哪一个。
MYSQL mysql; //mysql标记对应某个数据库1
2. MYSQL_ROW
用于定义一个行对象,其内容含有一行的数据。
MYSQL_ROW row; //row[i]可用于输出该行第i个字段的数据1
3. MYSQL_FIELD
用于定义一个存储字段信息的对象。
MYSQL_FIELD *field; //field->name存储对应字段名称
4. MYSQL_RES
用于定义一个存储数据库检索信息结果的对象。
MYSQL_RES *result;
三、常用函数介绍
其实在操作mysql数据库时,最常使用的函数有以下几个:
1. MYSQL * mysql_init()
用于初始化一个MYSQL对象,来连接mysql服务端。
MYSQL *mysql_init( MYSQL *mysql ); //成功返回MySQL结构指针,失败返回NULL
//example
MYSQL mysql;
mysql_init( &mysql );12345
2. mysql_real_connect()
用于连接数据库
MYSQL *mysql_real_connect (
MYSQL *mysql, //初始化的MYSQL对象,与mysql_init()对应
const char *host, //主机地址
const char *user, //用户,例如:root
const char *passwd, //数据库的密码
const char *db, //要连接的数据库,例如:student
unsigned int port, //端口,可填0
const char *unix_socket, //一般为NULL
unsigned long client_flag); //一般为0
//成功返回MySQL结构指针,失败返回NULL
//example
mysql_real_connect( &mysql, "localhost", "root",
"mypasswd", "student", 0, NULL, 0 );12345678910111213
3. mysql_query()
用于执行mysql命令。其参数应使用c风格字符串。
int mysql_query( MYSQL *mysql, char * command );//成功返回0
//example
string command = "select * from info";
mysql_query( &mysql, command.c_str() );12345
4. mysql_store_result()
用于获取mysql操作的检索结果。
//成功返回MYSQL_RES指針,失敗返回NULL
MYSQL_RES *mysql_store_result(MYSQL *mysql);
//example
MYSQL_RES *result;
result = mysql_store_result( &mysql );12345
5. mysql_num_rows()
用于获取结果集的行数。
mysql_num_rows( MYSQL_RES *result );1
6. mysql_num_fields()
用于获取结果集的字段数。
mysql_num_fields( MYSQL_RES *result );
//example
int row_num;
row_num = mysq l_num_fields( result );12345
7. mysql_fetch_field()
用于获取下一个字段的类型。
MYSQL_FIELD* mysql_fetch_field(MYSQL_RES *result);1
8. mysql_fetch_row()
从结果集中获取下一行,结束返回NULL。
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
//example
MYSQL_ROW row;
while( row = mysql_fetch_row( result ), row != NULL ) {
for( int i = 0; i < num; i++ ) {
cout << row[i] << "\t\t";
}
cout << endl;
}12345678910
9. mysql_fetch_field_direct()
给定字段序号,返回字段类型,结束返回NULL。
MYSQL_FIELD* mysql_fetch_field_direct(MYSQL_RES *result, int i);
//example
int num = mysql_num_fields( result ); //返回字段个数
for( int i = 0; i < num; i++ ) {
field = mysql_fetch_field_direct( result, i ); //返回字段类型
cout << field->name << "\t\t"; //输出字段名
}
10. mysql_close()
用于关闭连接。
mysql_close( MYSQL *mysql );
示例:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <iostream>
4 #include <string>
5 #include "mysql.h"
6 using namespace std;
7
8 class MysqlDB
9 {
10 private:
11 MYSQL mysql;
12 MYSQL_ROW row;
13 MYSQL_RES *result;
14 MYSQL_FIELD *field;
15 public:
16 MysqlDB()
17 {
18 if( mysql_init( &mysql ) == NULL )
19 {
20 cout << "init error, line: " << __LINE__ << endl;
21 exit(-1);
22 }
23 }
24 ~MysqlDB()
25 {
26 mysql_close( &mysql );
27 }
28 void connect( string host, string user, string passwd, string database )
29 {
30 //成功返回MYSQL指向的指针,失败返回NULL
31 if( !mysql_real_connect( &mysql, host.c_str(), user.c_str(), passwd.c_str(), database.c_str(), 0, NULL, 0 ) )
32 {
33 cout << "connect error, line: " << __LINE__ << endl;
34 exit(-1);
35 }
36 }
37 void add();
38 void del();
39 void update();
40 void print();
41 };
42
43 void MysqlDB::add()
44 {
45 string id, name, sex, birthday;
46 do
47 {
48 cout << "请输入学生信息:\n";
49 cin >> id >> name >> sex >> birthday;
50 string sql = "insert into stu values('" + id + "', '" + name + "', '" + sex + "', '" + birthday + "');";
51 cout << sql << endl;
52 mysql_query( &mysql, sql.c_str() );
53 cout << "是否继续(y/n): ";
54 cin >> id;
55 } while( id == "y" );
56 }
57
58 void MysqlDB::del()
59 {
60 string id;
61 do
62 {
63 cout << "请输入删除学生信息的ID:\n";
64 cin >> id;
65 string sql = "delete from stu where id='" + id +"';";
66 cout << sql << endl;
67 mysql_query( &mysql, sql.c_str() );
68 cout << "是否继续(y/n): ";
69 cin >> id;
70 } while( id == "y" );
71 }
72
73 void MysqlDB::update()
74 {
75 string id, filed,value;
76 do
77 {
78 cout << "请输入修改学生信息ID,字段,值:\n";
79 cin >> id >> filed >> value;
80 //update myclass set name="张大仙" where id='1230011';
81 string sql = "update stu set " + filed +"='" + value + "' where ID='" + id + "';";
82 cout << sql << endl;
83 mysql_query( &mysql, sql.c_str() );
84 cout << "是否继续(y/n): ";
85 cin >> id;
86 } while( id == "y" );
87 }
88
89 void MysqlDB::print()
90 {
91 // string sql = "select * from info where name = '" + name + "';"; //要有''
92 string sql = "select * from stu;";
93 //成功返回0
94 mysql_query( &mysql, sql.c_str() );
95 //获取查询查询结果;成功返回result的指针,失败返回NULL
96 result = mysql_store_result( &mysql );
97 if( !result )
98 {
99 cout << "result error, line : " << __LINE__ << endl;
100 return ;
101 }
102
103 int num;
104 num = mysql_num_fields( result ); //返回字段个数
105 for( int i = 0; i < num; i++ )
106 {
107 field = mysql_fetch_field_direct( result, i ); //返回字段类型
108 cout << field->name << "\t\t"; //输出字段名
109 }
110 cout << endl;
111
112 while( row = mysql_fetch_row( result ), row != NULL )
113 {
114 for( int i = 0; i < num; i++ )
115 {
116 cout << row[i] << "\t\t";
117 }
118 cout << endl;
119 }
120 }
121
122 int main()
123 {
124 MysqlDB db;
125 db.connect( "localhost", "root", "cnp200@HW", "student" );
126 db.print();
127
128 db.add();
129 db.print();
130
131 db.update();
132 db.print();
133
134 db.del();
135 db.print();
136
137 return 0;
138 }
参考:
https://blog.csdn.net/liushall/article/details/81144963