MYSQL操作+C语言API

本文详细介绍了MySQL的基础用法,包括登陆、创建数据库、表操作、查询、删除、插入和更新等。此外,还讲解了C语言API中的mysql_init、mysql_real_connect、mysql_real_query、mysql_store_result等函数的使用。最后,讨论了数据库在聊天室场景中的应用,如用户数据、朋友关系和消息记录的存储。数据库的优点在于数据共享、减少冗余、数据独立性、集中控制、数据一致性和故障恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL

一、基础用法

1.登陆

mysql -u root -p

2.建数据库

create database try default charset=utf8;

default charset=utf8使数据库可以使用中文。

3.进入数据库

use chatroom;

4.建表

create table user_data(name varchar(20),password varchar(20));

5.查看

select *from user_data;

6.删除

1.一行:delete from user_data where name = "wen";
2.整张表:drop table user_data;
3.数据库:drop database chatroom;

7.插入

insert into user_data values("lin","1234");

8.更新

update user_data set passwd = 111 where name = "lin";

二、C语言API

1.mysql_init

MYSQL *mysql_init(MYSQL *mysql)
描述:
分配或初始化与mysql_real_connect()相适应的MYSQL对象。如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
返回值:
初始化的MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL。
错误:
在内存不足的情况下,返回NULL。

2.mysql_real_connect

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 long client_flag)
描述:
mysql_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。
参数:
 第1个参数应是已有MYSQL结构的地址。
 “host”的值必须是主机名或IP地址。
 “user”参数包含用户的MySQL登录ID。
 “passwd”参数包含用户的密码。
 “db”是数据库名称。
 最后三个填0,NULL,0

3.mysql_real_query

int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
描述:
执行由“query”指向的SQL查询,它应是字符串长度字节“long”。
如果希望知道查询是否应返回结果集,可使用mysql_field_count()进行检查
返回值:
如果查询成功,返回0。如果出现错误,返回非0值。

4.mysql_store_result

MYSQL_RES *mysql_store_result(MYSQL *mysql)
描述:
对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),必须调用mysql_store_result()。
可以调用mysql_fetch_row()来获取结果集中的行,或调用mysql_row_seek()和mysql_row_tell()来获取或设置结果集中的当前行位置。
一旦完成了对结果集的操作,必须调用mysql_free_result()。
返回值:
具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。

5.mysql-num_rows

my_ulonglong mysql_num_rows(MYSQL_RES *result)
描述:
返回结果集中的行数。
如果使用了mysql_store_result(),可以立刻调用mysql_num_rows()。
返回值:
结果集中的行数。

6.mysql_fetch_row

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
描述:
检索结果集的下一行。
行内值的数目由mysql_num_fields(result)给出。
可以通过调用mysql_fetch_lengths()来获得行中字段值的长度。对于空字段以及包含NULL的字段,长度为0。
返回值:
下一行的MYSQL_ROW结构。如果没有更多要检索的行或出现了错误,返回NULL。

三、关于聊天室的数据库

1.数据库 chatroom

我一共建立了四张表。
在这里插入图片描述

2.表 off_records

储存还未读到的消息记录,在读到后会再次表中删除
在这里插入图片描述

3.表 records

储存消息记录
在这里插入图片描述

4.表 friends

储存人与人、人与群之间的关系

1:好友
2:屏蔽
3:群成员
4:群主
5:群管理员

在这里插入图片描述

5.表 user_data

储存用户名和用户密码
在这里插入图片描述

三、数据库优点

1、实现数据共享:数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

2、减少数据的冗余度:同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

3、保持数据的独立性:数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。

4、数据实现集中控制:文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

5、数据一致性和可维护性,以确保数据的安全性和可靠性:主要包括:安全性控制、完整性控制、并发控制,使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

6、故障恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值