工具:NavicatforMySQL
工具:MySQL ODBC Connector
SQL语言对大小写敏感
数据库语言分为两部分:
(一).数据库操作语言(DML)
SELECT : 从数据库中获取数据
SELECT 列名称,... FROM 表名称
和
SELECT * FROM 表明
“*” 表示取所用列的快捷方式
UPDATE : 更新数据库中的数据
DELETE : 从数据库中删除数据
INSERT INTO : 想数据库中插入数据
(二).数据库定义语言(DDL)
CREATE DATABASE 创建新数据库
ALTER DATABASE 修改数据库
CREATE TABLE 创建新表
ALTER TABLE 变更,给变数据库表
DROP TABLE 删除表
CRATAE INDEX 创建索引(搜索键)
DROP INDEX 删除索引
1.SELECT : 从数据库中获取数据
SELECT 列名称,... FROM 表名称
和
SELECT * FROM 表明
“*” 表示取所用列的快捷方式
SELECT DISTINCT 列名称,... FROM 表名称
SELECT DISTINCT * FROM 表名称
DISTINCET 关键字 若果某列中有相同的值 只返回一个
WHERE 关键字 如果有条件的从数据表中选取数据,可selece语句中加入 WHERE
SELECT 列名 FROM 表名 WHERE 列名 运算符 值
SELECT * FROM 表名 WHERE 列名 运算符 值
“值”如果是 字符 要加 单引号 或 双引号, 数值 不用加
AND 和 OR 关键字
SELECT * FROD 表名 WHERE 列名 运算符 值 AND 列名 运算符 值
SELECT * FROD 表名 WHERE 列名 运算符 值 OR 列名 运算符 值
SELECT * FROD 表名 WHERE (列名 运算符 值 OR 列名 运算符 值) AND 列名 运算符 值
ORDER BY 关键字 根据制定的列对结果集进行排序 默认 升序
ASC 关键字 升序
DESC 关键字 降序
SELECT 列名,... FROD 表名 ORDER BY 列名,...
SELECT 列名,... FROD 表名 ORDER BY 列名 DESC, 列名 ASC
2.UPDATE : 修改数据库中的数据
UPDATE 表名 SET 列名 = 值, 列名 = 值,... WHERE 列名 = 某值
3.DELETE : 删除数据表中的某一行数据
DELETE FROM 表名 WHERE 列名 = 某值
DELETE FROM 表名 或 DELETE * FROM 表名 // 删除这个表的行
4.INSERT INTO : 想数据库中插入数据
INSERT INTO 表名 VALUES(值,值,...)
INSERT INTO 表名 (列名,列名,...) VALUES (值,值,...)
MySql C API 数据类型
MySql C API 函数
mysql_affected_rows()
返回上一次 update , delete, insert 查询更改, 删除, 插入的行号。
mysql_autocommit()
切换 autocommit( 自动提交) 模式 ON/off
mysql_change_user()
更改连接上的用户和数据库
mysql_charset_name()
获得连接的默认字符集的名称
mysql_close()
关闭服务器连接
mysql_commit()
提交事务
mysql_real_connect()
与运行在主机上的 mysql数据库服务器建立连接;
注意:
在执行所有有效的 mysql API 函数之前 必须 mysql_real_connect() 必须连接成功。
参数说明:
调用 mysql_real_connect() 之前必须调用 mysql_init()MYSQL 结构
MYSQL *mysql_real_connect(
MYSQL *mysql, // 创建的 MYSQL结构指针,必须用 mysql_init() 来初始化
const char *host, // 主机名或 ip地址, 如果为null ,或 localhost 说明连接的是本地主机。 如果 操作系统支持套接字(unix),或 命名管道(windows), 则使用它们,而不使用 tcp\ip连接
const char *user, // 主机的用户名,如果 user为null 或 “”, 说明用户名是当前用户, 在unix下,它是当前的用户名,在window下 是,必须指明 windows odbc 的当前用户名。
const char *passwd, // 主机用户名密码, 如果passwd 为null 或 “”, 则 会对用户列表 进行p匹配检查。 数据库管理员要对 ,输入的不同的密码,进行设置 mysql 不同的访问权限。
const char *db, // 数据库名称,如果 db 为null ,将会连接默认的数据库设为该值。
unsigned int port, //如果 port 不是0,其值将为tcp/ip 的端口号, 注意,host 的参数决定了连接类型
const char *unix_socket, // 如果unix_socket不为 null, 则 该字符描述应使用 套接字 或 命名管道连接, 注意,host决定了连接类型
unsigned long client_flag) // 游戏里通常为 0
游戏里使用:
if (!mysql_real_connect(&m_Mysql,Host, User, Password, Database,0,NULL,0))
{
Log( " +-Connect %s error:%s", Database, mysql_error(&m_Mysql));
return false;
}
mysql_close()
关闭前面打开的连接;
注意:
如果前面使用的 mysql_init() 或 mysql_real_connect() 自动分配的句柄,mysql_close()要解除这个分配的 mysql句柄
MYSQL m_Mysql;
mysql_init(&m_Mysql)
mysql_real_query()
执行查询的SQL语句;
注意:
正常执行一条SQL语句,而且末尾不加 “ ; ” 或 “ \g ” 。 或者执行多条 SQL语句 ,字符串可有分号隔开的多条语句;
int mysql_real_query(
MYSQL *mysql, //创建的 MYSQL 结构指针
const char *query, // SQL语句
unsigned long length) // SQL语句长度
如果返回 0 说明 查询成功,如果返回非0 说明 查询失败,
mysql_store_result()
使用了 查询SQL语句后,获得的成功结果集(MYSQL_RES)指针;
注意:
如果成功使用了(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),查询SQL语句后,必须调用 mysql_store_result(), 或者 mysql_use_result() ,对于其他查询SQL语句,可用可不用,使用了也不会导致性能降低,
如果查询语句未返回结果,返回null如 insert语句
如果读取结果失败,返回null,通过 sql_error()检查错误,或 mysql_field_count()是否返回0 检测;
如果返回的结果集不是null, 可以调用 mysql_num_rows() 获得结果集中行数,可调用 mysql_fecth_row() 获得结果集中行, 可调用mysql_row_seek() 和 mysql_row_tell() 来获得 或 设置 结果集中当前行位置;
一旦完成结果集的操作,必须调用 mysql_free_result();
mysql_fetch_fields()
对于结果集,返回所有MYSQl_FIELD 结构数组, 每一个结构提供了结果集中一列字段定义。
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)
mysql_num_fields()
返回结果集中的行数;
mysql_fetch_row()
获得结果集中的下一行, 如果在mysql_store_result()之后使用, 如果没有检索到下一行, 则返回null, 如果在mysql_use_result()使用之后,没有检索到行或错误, 则返回 null;
mysql_escape_string()
mysql_real_escape_string()
领取专属 10元无门槛券
私享最新 技术干货