2023-2024-1 20211327 信息安全系统设计与实现 学习笔记12

学习笔记12

  • MySQL 介绍与 linux 安装
  • 使用 MySQL
  • C语言 MySQL 编程
  • PHP MySQL 编程
  • 实践过程

MySQL 介绍与安装

介绍

MySQL(发音为"My S-Q-L",或称为"My Sequel")是一个开源的关系型数据库管理系统(RDBMS)。它是由瑞典公司MySQL AB开发,并且现在属于Oracle公司管理。MySQL广泛用于Web应用程序的后端数据存储,是许多流行网站和应用程序的首选数据库之一。

以下是MySQL的一些重要特点和特性:

  • 开源性质: MySQL是开源软件,用户可以自由获取、使用和修改它的源代码。这使得它成为一个受欢迎的数据库系统,许多开发者和组织都选择使用MySQL来满足他们的数据库需求。

  • 关系型数据库管理系统: MySQL是一个关系型数据库管理系统,遵循SQL(Structured Query Language)标准。这意味着它支持使用SQL语言进行数据库的创建、查询、更新和删除等操作。

  • 跨平台支持: MySQL可以在多种操作系统上运行,包括Linux、Windows、macOS等。这使得开发者能够在不同的环境中使用MySQL来构建应用程序。

  • 高性能: MySQL被设计为高性能的数据库系统,具有快速的查询处理能力。它支持索引、缓存等机制,以提高数据库的检索和存储效率。

  • 可扩展性: MySQL支持垂直和水平的扩展。垂直扩展通过增加单个服务器的处理能力,而水平扩展则通过增加多个服务器来分担负载。

  • 事务支持: MySQL支持事务处理,确保数据库操作的原子性、一致性、隔离性和持久性(ACID属性)。这对于处理复杂的业务逻辑和确保数据完整性非常重要。

  • 存储引擎: MySQL支持多种存储引擎,例如InnoDB、MyISAM等。每种存储引擎都有其独特的特性,可以根据应用程序的需求进行选择。

  • 安全性: MySQL提供了各种安全功能,包括用户认证、访问控制、加密传输等,以确保数据库中的数据得到保护。

  • 活跃的社区和支持: 由于其开源性质,MySQL拥有一个庞大且活跃的社区。用户可以在社区中获取支持、解决问题,也可以参与到MySQL的开发和改进中。

在Linux系统下安装MySQL的步骤

1.更新系统:

在安装任何软件之前,请确保系统已更新到最新版本:

sudo apt update
sudo apt upgrade

2.安装MySQL服务器:

对于基于Debian的系统(如Ubuntu),您可以使用以下命令安装MySQL服务器:

sudo apt install mysql-server

在安装过程中,系统会提示设置MySQL root用户的密码。

3.启动MySQL服务:

安装完成后,启动MySQL服务:

sudo service mysql start

4:设置MySQL安全性:

运行以下命令,按照提示执行安全性设置:

sudo mysql_secure_installation

这将包括更改root用户密码、删除匿名用户、禁用root用户远程登录等步骤。

5:检查MySQL状态:

检查MySQL服务是否正在运行:

sudo service mysql status

6:登录MySQL:

使用以下命令登录MySQL服务器:

mysql -u root -p

输入在安装过程中设置的root密码。

使用 MySQL

连接到MySQL服务器

使用以下命令连接到MySQL服务器,输入密码:

mysql -u 用户名 -p

显示数据库

SHOW DATABASES

新建数据库

CREATE DATABASE 新数据库名;

删除数据库

DROP DATABASE 数据库名

选择数据库

USE 数据库名

创建表

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型,
    ...
);

删除表

DROP TABLE 表名

MySQL中的数据类型

  • 整数类型: INT, TINYINT, SMALLINT, BIGINT.
  • 浮点数类型: FLOAT, DOUBLE.
  • 字符串类型: VARCHAR(n), CHAR(n), TEXT.
  • 日期和时间类型: DATE, TIME, DATETIME, TIMESTAMP.
  • 其他类型: BOOLEAN, BLOB, JSON, etc.

插入行

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

删除行

DELETE FROM 表名 WHERE 条件;

更新表

UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;

修改表

  • 添加列:

    ALTER TABLE 表名 ADD COLUMN 新列 数据类型;
    
  • 删除列:

    ALTER TABLE 表名 DROP COLUMN 列名;
    

关联表

CREATE TABLE 表1 (
    id INT PRIMARY KEY,
    列1 数据类型,
    列2 数据类型
);

CREATE TABLE 表2 (
    id INT PRIMARY KEY,
    列3 数据类型,
    列4 数据类型,
    外键列 INT REFERENCES 表1(id)
);

连接操作

  • INNER JOIN

    SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列;
    
  • LEFT JOIN

    SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列 = 表2.列;
    
  • RIGHT JOIN

    SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列 = 表2.列;
    

MySQL脚本

将SQL语句保存在一个文件中,例如script.sql,然后运行:

mysql -u 用户名 -p 数据库名 < script.sql

C语言 MySQL 编程

使用C语言构建 MySQL 客户机与服务器程序

客户机程序(client.c):

#include <mysql/mysql.h>
#include <stdio.h>

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    // 连接到MySQL数据库
    if (mysql_real_connect(conn, "localhost", "用户名", "密码", "数据库名", 0, NULL, 0)) {
        printf("连接成功\n");

        // 执行SQL查询
        if (mysql_query(conn, "SELECT * FROM 表名")) {
            fprintf(stderr, "查询失败: %s\n", mysql_error(conn));
        } else {
            // 获取查询结果
            res = mysql_store_result(conn);

            // 遍历结果集
            while ((row = mysql_fetch_row(res))) {
                printf("%s %s %s\n", row[0], row[1], row[2]);
            }

            // 释放结果集内存
            mysql_free_result(res);
        }

        // 关闭连接
        mysql_close(conn);
    } else {
        fprintf(stderr, "连接失败: %s\n", mysql_error(conn));
    }

    return 0;
}

服务器程序(server.c):

#include <mysql/mysql.h>
#include <stdio.h>

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    // 启动MySQL服务器
    if (mysql_real_connect(conn, "localhost", "用户名", "密码", NULL, 0, NULL, 0)) {
        printf("服务器已连接\n");

        // 执行SQL查询
        if (mysql_query(conn, "SELECT * FROM 表名")) {
            fprintf(stderr, "查询失败: %s\n", mysql_error(conn));
        } else {
            // 获取查询结果
            res = mysql_store_result(conn);

            // 遍历结果集
            while ((row = mysql_fetch_row(res))) {
                printf("%s %s %s\n", row[0], row[1], row[2]);
            }

            // 释放结果集内存
            mysql_free_result(res);
        }

        // 关闭连接
        mysql_close(conn);
    } else {
        fprintf(stderr, "连接失败: %s\n", mysql_error(conn));
    }

    return 0;
}

PHP MySQL 编程

PHP与MySQL的结合是非常常见和强大的组合,用于在Web开发中处理数据库操作。下面是一个简单的PHP与MySQL编程的例子,涵盖了连接到MySQL数据库、查询、插入、更新和删除数据的基本操作。

连接到MySQL数据库

<?php
$servername = "localhost";
$username = "用户名";
$password = "密码";
$dbname = "数据库名";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

查询数据

<?php
$sql = "SELECT 列1, 列2 FROM 表名";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "列1: " . $row["列1"]. " - 列2: " . $row["列2"]. "<br>";
    }
} else {
    echo "0 结果";
}

// 关闭连接
$conn->close();
?>

插入数据

<?php
$sql = "INSERT INTO 表名 (列1, 列2) VALUES ('值1', '值2')";

if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

// 关闭连接
$conn->close();
?>

更新数据

<?php
$sql = "UPDATE 表名 SET 列1='新值1' WHERE 条件";

if ($conn->query($sql) === TRUE) {
    echo "记录更新成功";
} else {
    echo "Error updating record: " . $conn->error;
}

// 关闭连接
$conn->close();
?>

删除数据

<?php
$sql = "DELETE FROM 表名 WHERE 条件";

if ($conn->query($sql) === TRUE) {
    echo "记录删除成功";
} else {
    echo "Error deleting record: " . $conn->error;
}

// 关闭连接
$conn->close();
?>

实践过程




posted @ 2023-12-01 11:14  沈楗翔  阅读(10)  评论(0编辑  收藏  举报