MYSQL数据库的讲解
在应用开发中,常用的数据储存有:XML、JSON、MYSQL、Hadoop HDFS、Cassandra、Redis、MongoDB、Oracle等。
本章主要讲解myspl数据库的组成、连接数据库、库和表的创建、表的类型属性、插入数据、读取数据、增加数据、删除数据等,让初始小白简单了解myspl与使用myspl。
myspl数据对象和概念
| 对象 |
概念 |
| 库 | 数据库(库)是一个逻辑上的容器,用于存储和管理相关的数据库对象,如数据表、视图、存储过程、函数等。它就像是一个文件夹,将相关的数据和对象组织在一起,便于管理和维护。不同的库可以用于不同的应用程序或项目,以实现数据的隔离和独立管理。 |
| 表 | 表是数据库中存储数据的基本结构,由行和列组成。表就像一个二维表格,每一列代表数据的一个属性(字段),每一行代表一条具体的记录。例如,在一个“学生”表中,可能有“学号”“姓名”“年龄”等列,而每一行则对应一个具体学生的信息。 |
| 数据 | 数据是实际存储在表中的内容,是对现实世界中各种信息的数字化表示。这些数据按照表的结构和定义进行存储,填充在表的行和列中。数据可以是各种类型,如整数、字符串、日期、浮点数等,它们是数据库的核心价值所在,通过对这些数据的查询、分析和处理,可以获取有意义的信息和知识,为业务决策和应用程序提供支持。 |
| 视图 | 是从一个或多个表中导出的虚拟表,它本身不存储数据,而是根据定义的查询语句动态生成结果集。 |
| 索引 | 是一种数据结构,用于提高数据库中数据的查询效率。可以在表的列上创建索引,类似于书籍的目录,使数据库能够快速定位到需要的数据行。 |
| 存储过程 | 是一组为了完成特定功能的SQL语句集合,它可以接受参数、执行一系列操作,并返回结果。存储过程可以在数据库服务器上存储和执行,提高了代码的复用性和执行效率。 |
| 函数 | 与存储过程类似,但函数通常用于返回一个单一的值,而不是执行一系列的操作。MySQL提供了许多内置函数,同时也允许用户自定义函数。 |
| 触发器 | 是一种特殊的存储过程,它会在特定的数据库事件(如插入、更新或删除数据)发生时自动触发执行。触发器可以用于实现数据的完整性检查、审计跟踪等功能。 |
| 事务 | 是一组数据库操作的逻辑单元,这些操作要么全部成功执行,要么全部回滚,以确保数据库的一致性。 |
| 约束 | 用于限制表中数据的完整性和一致性,包括主键约束、外键约束、唯一约束、非空约束等。 |
创建库、表、数据和类型属性
(以PHP示例)
一、连接myspl数据库
// 创建连接
$servername = "localhost";//如本地数据库IP与端口$servername = "192.168.91.52:45267";
$username = "root";//数据库账号
$password = "";//数据库密码
// 创建连接对象
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
die("连接失败: ". $conn->connect_error);
}
echo "连接成功
";
二、创建库与选择库
// 创建数据库mydatabase
$sql = "CREATE DATABASE IF NOT EXISTS mydatabase";
if ($conn->query($sql) === TRUE) {
echo "数据库创建成功
";
} else {
echo "创建数据库失败: ". $conn->error;
}
// 选择数据库mydatabase
$conn->select_db("mydatabase");
三、创建表并设置表的类型属性
// 创建表表名(customers)
$sql = "CREATE TABLE IF NOT EXISTS customers (
/*表格第1行
名字id
类型int(6)表示整数类型,宽度6位
排序规则空
属性UNSIGNED(无符号整数0~4294967295)
空否
默认无
注释空
额外AUTO_INCREMENT(自动递增列)
*/
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
/*表格第2行
名字firstname
类型VARCHAR(30)30位可变长度字符串类型
排序规则utf8m64_general_ci(字符集和排序规则ci表示不区分大小写)
属性空
空否
默认无
注释空
额外空
*/
firstname VARCHAR(30) NOT NULL,
/*表格第3行
名字lastname
类型VARCHAR(30)30位可变长度字符串类型
排序规则utf8m64_general_ci(字符集和排序规则ci表示不区分大小写)
属性空
空否
默认无
注释空
额外空
*/
lastname VARCHAR(30) NOT NULL,
/*表格第4行
名字email
类型VARCHAR(50)50位可变长度字符串类型
排序规则utf8m64_general_ci(字符集和排序规则ci表示不区分大小写)
属性空
空是
默认NULL
注释空
额外空
*/
email VARCHAR(50),
/*表格第5行
名字reg_date
类型TIMESTAMP(日期和时间数据类型)
排序规则空
属性空
空值否
默认DEFAULT(设置默认值CURRENT_TIMESTAMP,current_timestamp()是一个函数,代表当前的日期和时间。)
注释空
额外ON UPDATE CURRENT_TIMESTAMP(当向表中插入新记录时,如果没有为 reg_date 列显式指定值,那么该列会自动被赋值为插入记录时的当前日期和时间。)
*/
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "表创建成功
";
} else {
echo "创建表失败: ". $conn->error;
}
四、插入数据
// 插入数据
$sql = "INSERT INTO customers (firstname, lastname, email)
VALUES ('高', '富帅', '10000@diankb.cn')";
if ($conn->query($sql) === TRUE) {
echo "新记录插入成功";
} else {
echo "插入数据失败: ". $conn->error;
}
// 关闭连接
$conn->close();
存储后的myspl数据如下
通过之前创建数据库、表、数据,在myspl数据库中大概就是以下样子了。
| id |
姓 |
名 |
邮箱 |
时间 |
| 1 | 高 | 富帅 | 10000@diankb.cn | 2025-01-01 0:0:0 |
查询输出数据
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?php
// 数据库连接信息
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: ". $conn->connect_error);
}
// 假设你有一个名为 `users` 的表,包含 `id` 和 `name` 字段
$sql = "SELECT id, firstname FROM customers";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
echo "id: ". $row["id"]. " - Name: ". $row["firstname"]. "<br>";
}
} else {
echo "0 结果";
}
$conn->close();
?>
</body>
</html>
增加数据
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1">
<title>数据库数据写入与查询</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
table,
th,
td {
border: 1px solid #ccc;
}
form {
margin-bottom: 20px;
}
</style>
</head>
<body>
<!-- 数据插入表单 -->
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="firstname">名字:</label>
<input type="text" id="firstname" name="firstname" required><br>
<label for="lastname">姓氏:</label>
<input type="text" id="lastname" name="lastname" required><br>
<label for="email">邮箱:</label>
<input type="text" id="email" name="email" required><br>
<input type="submit" name="submit" value="插入数据">
</form>
<?php
// 数据库连接信息
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: ". $conn->connect_error);
}
// 处理表单提交,插入数据
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit"])) {
// ... 插入数据的代码 ...
$firstname = isset($_POST["firstname"])? $_POST["firstname"] : "";
$lastname = isset($_POST["lastname"])? $_POST["lastname"] : "";
$email = isset($_POST["email"])? $_POST["email"] : "";
// 使用预处理语句插入数据
$sqlInsert = "INSERT INTO customers (firstname, lastname, email) VALUES (?,?,?)";
$stmt = $conn->prepare($sqlInsert);
$stmt->bind_param("sss", $firstname, $lastname, $email);
if ($stmt->execute()) {
echo "数据插入成功";
} else {
echo "插入失败: ". $conn->error;
}
$stmt->close();
// 插入成功后重定向
header("Location: ".$_SERVER['PHP_SELF']);
exit();
}
// 查询数据
$sql = "SELECT id, firstname, lastname, email, reg_date FROM customers";
$result = $conn->query($sql);
if ($result === false) {
// 查询失败时的处理
echo "查询失败: ". $conn->error;
} elseif ($result->num_rows > 0) {
// 输出数据,使用 HTML 表格展示
echo "<table>";
echo "<tr><th>ID</th><th>First Name</th><th>Last Name</th><th>email</th><th>reg_date</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr><td>". $row["id"]. "</td><td>". $row["firstname"]. "</td><td>". $row["lastname"]. "</td><td>". $row["email"]. "</td><td>". $row["reg_date"]. "</td></tr>";
}
echo "</table>";
} else {
echo "0 结果";
}
$conn->close();
?>
</body>
</html>
删除数据
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1">
<title>数据库数据写入与查询</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
table,
th,
td {
border: 1px solid #ccc;
}
form {
margin-bottom: 20px;
}
.delete-btn {
background-color: #ff4444;
color: white;
border: none;
padding: 5px 10px;
border-radius: 3px;
cursor: pointer;
}
.delete-btn:hover {
background-color: #cc0000;
}
</style>
</head>
<body>
<!-- 数据插入表单 -->
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="firstname">名字:</label>
<input type="text" id="firstname" name="firstname" required><br>
<label for="lastname">姓氏:</label>
<input type="text" id="lastname" name="lastname" required><br>
<label for="email">邮箱:</label>
<input type="text" id="email" name="email" required><br>
<input type="submit" name="submit" value="插入数据">
</form>
<?php
// 数据库连接信息
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: ". $conn->connect_error);
}
// 处理删除请求
if (isset($_GET['delete_id'])) {
$delete_id = $_GET['delete_id'];
$sqlDelete = "DELETE FROM customers WHERE id = ?";
$stmt = $conn->prepare($sqlDelete);
$stmt->bind_param("i", $delete_id);
if ($stmt->execute()) {
echo "<p>记录删除成功</p>";
// 重定向以避免刷新时重复删除
header("Location: ".strtok($_SERVER["REQUEST_URI"], '?'));
exit();
} else {
echo "<p>删除失败: ". $conn->error . "</p>";
}
$stmt->close();
}
// 处理表单提交,插入数据
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit"])) {
$firstname = isset($_POST["firstname"]) ? $_POST["firstname"] : "";
$lastname = isset($_POST["lastname"]) ? $_POST["lastname"] : "";
$email = isset($_POST["email"]) ? $_POST["email"] : "";
// 使用预处理语句插入数据
$sqlInsert = "INSERT INTO customers (firstname, lastname, email) VALUES (?,?,?)";
$stmt = $conn->prepare($sqlInsert);
$stmt->bind_param("sss", $firstname, $lastname, $email);
if ($stmt->execute()) {
echo "<p>数据插入成功</p>";
// 插入成功后重定向
header("Location: ".$_SERVER['PHP_SELF']);
exit();
} else {
echo "<p>插入失败: ". $conn->error . "</p>";
}
$stmt->close();
}
// 查询数据
$sql = "SELECT id, firstname, lastname, email, reg_date FROM customers";
$result = $conn->query($sql);
if ($result === false) {
// 查询失败时的处理
echo "<p>查询失败: ". $conn->error . "</p>";
} elseif ($result->num_rows > 0) {
// 输出数据,使用 HTML 表格展示
echo "<table>";
echo "<tr><th>ID</th><th>First Name</th><th>Last Name</th><th>Email</th><th>注册日期</th><th>操作</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr>
<td>". $row["id"]. "</td>
<td>". $row["firstname"]. "</td>
<td>". $row["lastname"]. "</td>
<td>". $row["email"]. "</td>
<td>". $row["reg_date"]. "</td>
<td>
<a href='?delete_id=".$row["id"]."' class='delete-btn' onclick='return confirm(\"确定要删除这条记录吗?\")'>删除</a>
</td>
</tr>";
}
echo "</table>";
} else {
echo "<p>0 结果</p>";
}
$conn->close();
?>
</body>
</html>
😊感谢你的关注与支持,以上就是关于myspl的简单介绍和使用,如后续内容有所补充,会在第一时间更新。
diankb.cn