学习笔记12
教材知识点总结
14.1 MySQL简介
-
关系数据库系统:数据存储在表中,表由多个行和列组成
-
表之间互相关联,关系结构使得可在表上查询来检索信息并修改数据库中的数据
-
MySQL:开源数据库管理系统,有服务器和客户机组成
14.2 安装MySQL
-
Ubuntu Linux:
-
sudo apt-get install mysql-server
:mysql-server包包括一个MySOL服务器和一个客户机。在安装MySOL时它会询问根用户密码。用户可以使用与Ubuntu相同的登录密码。安装MySOL后,可通过运行脚本对其进行配置以获得更好的安全性。 -
mysql secure installation
:要得到简单和标准的安全设置,可以按 Y,然后按 ENTER,以接受所有问题的默认值。 -
Slackware Linux
- 设置mycnf:MySQL在启动时加载一个名为mycnf的配置文件
- 安装所需数据库:MySQL需要一个所需数据库集,用于用户识别等。
- 设置所需的系统权限:该步骤确保mysql用户拥有mysql系统的所有权。
- 通过以下操作使/etc/rcd/rcmysqld 可执行:
chmod 755 /etc/rcd/rc.mysqld
14.3 使用MySQL
- 连接到MySQL服务器:使用MySOL的第一步是运行MySQL客户机程序。从X-window终端输人MySQL客户机命令mysql,它连接到同一台计算机上默认本地主机上的MySQL服务器。
-
连接到MySOL服务器后,即可访问MySQLshell,如mysq>提示符所示。MySQLshell类似于普通的shell。它会显示一个mysql>提示符,要求用户输入可供MySQL服务器执行的 SOL命令
-
与普通sh类似,它还维护一个命令历史记录,允许用户通过箭头键回忆和修改先前的命令。然而,它只接受MySQL命令或MySOL脚本
-
注意几点:
所有的 MySQL命令行末尾必须是分号
MySOL命令行不区分大小写
-
显示数据库:
-
新建数据库:
-
删除数据库:
-
选择数据库:
-
创建表:
-
删除表
-
插入行:
-
删除行:
-
更新表
-
修改表:
-
关联表:
-
连接操作:
-
数据库关系图:
-
脚本:与普通Unix/Linuxsh一样,MySQLshell也可以接受和执行脚本文。MySQL脚本文件的后缀是sql。它们包含MySQL 服务器要执行的MySQL命令。我们可以使用MySQI脚本来创建数据库,在数据库中创建表,插入表条目和修改表内容,而不是手动输入命令行。
14.4
- 使用C语言构建 MySQL客户机程序
- 使用C语言连接 MySQL服务器
- 将MYSQL对象con定义为连接柄。它的作用类似于网络编程中的套接字。几乎所有的MySOLCAPI函数都需要这个对象指针作为参数。
- 调用mysql init(&con)来初始化con对象这是规定操作。它会返回初始化对象的地址。大多数其他MySOLAPI函数会返回0,表示成功,返回非0,表示错误。
- 调用mysql real connect0,以连接到远程服务器。
- 使用c语言构建MySQL数据库
- 使用c语言检索MySQL查询结果
代码实现
- 服务器客户端连接
#include<stdio.h>
#include<pthread.h>
#define NUM 5
void *print_msg(void *);
int main()
{
pthread_t t1,t2;
pthread_create(&t1,NULL,print_msg,(void*)"hello");
pthread_create(&t2,NULL,print_msg,(void*)"world\n");
pthread_join(t1,NULL);
pthread_join(t2,NULL);
printf("t1,t2 finished!\n");
return 0;
}
void *print_msg(void *msg)
{
char *cp = (char *) msg;
int i;
for(i=0;i<NUM;i++)
{
printf("%s",cp);
fflush(stdout);
sleep(1);
}
return NULL;
}
- MySQL
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
// 连接到 MySQL 数据库
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if (!mysql_real_connect(conn, "localhost", "user_name", "password", "database_name", 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
mysql_close(conn);
exit(1);
}
// 执行 SQL 查询
if (mysql_query(conn, "SELECT * FROM my_table")) {
fprintf(stderr, "%s\n", mysql_error(conn));
mysql_close(conn);
exit(1);
}
// 获取查询结果
res = mysql_use_result(conn);
// 输出结果
while ((row = mysql_fetch_row(res)) != NULL) {
printf("%s %s %s\n", row[0], row[1], row[2]);
}
// 释放资源
mysql_free_result(res);
mysql_close(conn);
return 0;
}
苏格拉底挑战
-
MySQL
-
c语言编程