MySQL 教程 2.1

news2024/11/16 21:26:43

MySQL 插入数据

MySQL 表中使用 INSERT INTO 语句来插入数据。

你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。

语法

以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

参数说明:

  • table_name 是你要插入数据的表的名称。
  • column1column2column3, ... 是表中的列名。
  • value1value2value3, ... 是要插入的具体数值。

如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。

一个简单的实例,插入了一行数据到名为 users 的表中:

INSERT INTO users (username, email, birthdate, is_active)
VALUES ('test', 'test@runoob.com', '1990-01-01', true);
  • username: 用户名,字符串类型。
  • email: 邮箱地址,字符串类型。
  • birthdate: 用户生日, 日期类型。
  • is_active: 是否已激活,布尔类型。

如果你要插入所有列的数据,可以省略列名:

INSERT INTO users
VALUES (NULL,'test', 'test@runoob.com', '1990-01-01', true);

这里,NULL 是用于自增长列的占位符,表示系统将为 id 列生成一个唯一的值。

如果你要插入多行数据,可以在 VALUES 子句中指定多组数值:

INSERT INTO users (username, email, birthdate, is_active)
VALUES
    ('test1', 'test1@runoob.com', '1985-07-10', true),
    ('test2', 'test2@runoob.com', '1988-11-25', false),
    ('test3', 'test3@runoob.com', '1993-05-03', true);

以上代码将在 users 表中插入三行数据。


通过命令提示窗口插入数据

以下我们将使用 INSERT INTO 语句向 MySQL 数据表 runoob_tbl 插入数据

实例

以下实例中我们将向 runoob_tbl 表插入三条数据:

实例

root@host# mysql -u root -p password;
Enter password:*******
mysql> USE RUNOOB;
DATABASE changed
mysql> INSERT INTO runoob_tbl
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES
    -> ("学习 PHP", "菜鸟教程", NOW());
Query OK, 1 ROWS affected, 1 warnings (0.01 sec)
mysql> INSERT INTO runoob_tbl
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES
    -> ("学习 MySQL", "菜鸟教程", NOW());
Query OK, 1 ROWS affected, 1 warnings (0.01 sec)
mysql> INSERT INTO runoob_tbl
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES
    -> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
Query OK, 1 ROWS affected (0.00 sec)
mysql>

注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条 SQL 语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;。

在以上实例中,我们并没有提供 runoob_id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数,该函数返回日期和时间。

接下来我们可以通过以下语句查看数据表数据:

读取数据表:

select * from runoob_tbl;

输出结果:


使用 PHP 脚本插入数据

你可以使用 PHP 的 mysqli_query() 函数来执行 INSERT INTO命令来插入数据。

该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

语法

mysqli_query(connection,query,resultmode);
参数描述
connection必需。规定要使用的 MySQL 连接。
query必需,规定查询字符串。
resultmode

可选。一个常量。可以是下列值中的任意一个:

  • MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
  • MYSQLI_STORE_RESULT(默认)

实例

以下实例中程序接收用户输入的三个字段数据,并插入数据表中:

添加数据

<?php $dbhost = 'localhost'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } echo '连接成功<br />'; // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $runoob_title = '学习 Python'; $runoob_author = 'RUNOOB.COM'; $submission_date = '2016-03-06'; $sql = "INSERT INTO runoob_tbl ". "(runoob_title,runoob_author, submission_date) ". "VALUES ". "('$runoob_title','$runoob_author','$submission_date')"; mysqli_select_db( $conn, 'RUNOOB' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法插入数据: ' . mysqli_error($conn)); } echo "数据插入成功\n"; mysqli_close($conn); ?>

对于含有中文的数据插入,需要添加 mysqli_query($conn , "set names utf8"); 语句。

接下来我们可以通过以下语句查看数据表数据:

读取数据表:

select * from runoob_tbl;

输出结果:

网友笔记整理

INSERT 插入多条数据

INSERT INTO table_name  (field1, field2,...fieldN)  VALUES  (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;

 

添加数据的时候可以规定列进行添加。

如果所有的列都要添加数据可以不规定列进行添加数据:

mysql> INSERT INTO runoob_tbl
    -> VALUES
    -> (0, "JAVA 教程", "RUNOOB.COM", '2016-05-06');

第一列如果没有设置主键自增(PRINARY KEY AUTO_INCREMENT)的话添加第一列数据比较容易错乱,要不断的查询表看数据。

如果添加过主键自增(PRINARY KEY AUTO_INCREMENT)第一列在增加数据的时候,可以写为0或者null,这样添加数据可以自增, 从而可以添加全部数据,而不用特意规定那几列添加数据。

MySQL 查询数据

MySQL 数据库使用 SELECT 语句来查询数据。

你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过 PHP 脚本来查询数据。

语法

以下为在 MySQL 数据库中查询数据通用的 SELECT 语法:

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];

参数说明:

  • column1column2, ... 是你想要选择的列的名称,如果使用 * 表示选择所有列。
  • table_name 是你要从中查询数据的表的名称。
  • WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。
  • ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。
  • LIMIT number 是一个可选的子句,用于限制返回的行数。

MySQL SELECT 语句简单的应用实例:

实例

-- 选择所有列的所有行
SELECT * FROM users;

-- 选择特定列的所有行
SELECT username, email FROM users;

-- 添加 WHERE 子句,选择满足条件的行
SELECT * FROM users WHERE is_active = TRUE;

-- 添加 ORDER BY 子句,按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;

-- 添加 ORDER BY 子句,按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;

-- 添加 LIMIT 子句,限制返回的行数
SELECT * FROM users LIMIT 10;

SELECT 语句可以是灵活的,我们可以根据实际需求组合和使用这些子句,比如同时使用 WHERE 和 ORDER BY 子句,或者使用 LIMIT 控制返回的行数。

在 WHERE 子句中,你可以使用各种条件运算符(如 =<><=>=!=),逻辑运算符(如 ANDORNOT),以及通配符(如 %)等。

以下是一些进阶的 SELECT 语句实例:

实例

-- 使用 AND 运算符和通配符
SELECT * FROM users WHERE username LIKE 'j%' AND is_active = TRUE;

-- 使用 OR 运算符
SELECT * FROM users WHERE is_active = TRUE OR birthdate < '1990-01-01';

-- 使用 IN 子句
SELECT * FROM users WHERE birthdate IN ('1990-01-01', '1992-03-15', '1993-05-03');


通过命令提示符获取数据

以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 runoob_tbl 的数据:

实例

以下实例将返回数据表 runoob_tbl 的所有记录:

读取数据表:

select * from runoob_tbl;

输出结果:


使用 PHP 脚本来获取数据

使用 PHP 函数的 mysqli_query() 及 SQL SELECT 命令来获取数据。

该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来使用或输出所有查询的数据。

mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有 返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

以下实例为从数据表 runoob_tbl 中读取所有记录。

实例

尝试以下实例来显示数据表 runoob_tbl 的所有记录。

使用 mysqli_fetch_array MYSQLI_ASSOC 参数获取数据:

<?php $dbhost = 'localhost'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT runoob_id, runoob_title, runoob_author, submission_date FROM runoob_tbl'; mysqli_select_db( $conn, 'RUNOOB' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2>菜鸟教程 mysqli_fetch_array 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) { echo "<tr><td> {$row['runoob_id']}</td> ". "<td>{$row['runoob_title']} </td> ". "<td>{$row['runoob_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下所示:

以上实例中,读取的每行记录赋值给变量 $row,然后再打印出每个值。

注意:记住如果你需要在字符串中使用变量,请将变量置于花括号。

在上面的例子中,PHP mysqli_fetch_array() 函数第二个参数为 MYSQLI_ASSOC, 设置该参数查询结果返回关联数组,你可以使用字段名称来作为数组的索引。

PHP 提供了另外一个函数 mysqli_fetch_assoc(), 该函数从结果集中取得一行作为关联数组。 返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。

实例

尝试以下实例,该实例使用了 mysqli_fetch_assoc() 函数来输出数据表 runoob_tbl 的所有记录:

使用 mysqli_fetch_assoc 获取数据:

<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT runoob_id, runoob_title, runoob_author, submission_date FROM runoob_tbl'; mysqli_select_db( $conn, 'RUNOOB' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2>菜鸟教程 mysqli_fetch_assoc 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_assoc($retval)) { echo "<tr><td> {$row['runoob_id']}</td> ". "<td>{$row['runoob_title']} </td> ". "<td>{$row['runoob_author']} </td> ". "<td>{$row['submission_date']} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下所示:

你也可以使用常量 MYSQLI_NUM 作为 PHP mysqli_fetch_array() 函数的第二个参数,返回数字数组。

实例

以下实例使用 MYSQLI_NUM 参数显示数据表 runoob_tbl 的所有记录:

使用 mysqli_fetch_array MYSQLI_NUM 参数获取数据:

<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT runoob_id, runoob_title, runoob_author, submission_date FROM runoob_tbl'; mysqli_select_db( $conn, 'RUNOOB' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2>菜鸟教程 mysqli_fetch_array 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>

输出结果如下所示:

以上三个实例输出结果都一样。


内存释放

在我们执行完 SELECT 语句后,释放游标内存是一个很好的习惯。

可以通过 PHP 函数 mysqli_free_result() 来实现内存的释放。

以下实例演示了该函数的使用方法。

实例

尝试以下实例:

使用 mysqli_free_result 释放内存:

<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn , "set names utf8"); $sql = 'SELECT runoob_id, runoob_title, runoob_author, submission_date FROM runoob_tbl'; mysqli_select_db( $conn, 'RUNOOB' ); $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('无法读取数据: ' . mysqli_error($conn)); } echo '<h2>菜鸟教程 mysqli_fetch_array 测试</h2>'; echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; // 释放内存 mysqli_free_result($retval); mysqli_close($conn); ?>

输出结果如下所示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1295495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 核心 数据监听 computed | watch

Vue 核心 数据监听 computed | watch 一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 &#xff08;演示&…

【ArcGIS Pro微课1000例】0053:基于SQL Server创建与启用地理数据库

之前的文章有讲述基于SQL Server创建企业级地理数据库,本文讲述在SQL Server中创建常规的关心数据库,然后在ArcGIS Pro中将其启用,转换为企业级地理数据库。 1. 在SQL Server中创建数据库** 打开SQL Server 2019,连接到数据库服务器。 展开数据库连接,在数据库上右键→新…

一个不错的文章伪原创系统程序源码

一款文章伪原创系统程序源码免费分享&#xff0c;程序是站长原创的。 一共花了站长几天时间写的这个文章伪原创平台&#xff0c;程序无需数据库。 程序前端采用BootStrap框架搭建&#xff0c;后端采用PHP原生书写。 前端伪原创采用Ajax无刷新提交&#xff0c;Ajax转换到词库…

时域频域(学习记录1)

1 小伙伴们&#xff0c;今天让我们一起来聊聊Something about DATA 系列。我们先回顾一下本系列对NVH测试中的数据采集做的整体介绍&#xff1a; A 数据采集过程&#xff1b; B 硬件设备&#xff1b; C 数采软件&#xff1b; D ATOM中的数据采集&#xff1b; 接下来的几篇文章…

zotero关闭翻译自动创建标签

zotero中文社区&#xff1a;https://plugins.zotero-chinese.com/#/

代码去除注释Remove Comments、合并行Join Lines、代码压缩Minify等vscode功能

1. 去除注释 通过vscode商店扩展 Remove Comments 移除注释。 Just copy-pasted some code from somewhere and it’s obscenely documented with unnecessary comments everywhere? Remove Comments will help you undocument the code and remove all the comments present…

AUTOSAR CP Int-Watchdog简介

Int Watchdog 1 简介2 EB 中配置 TC39X3 Wdg 在代码中使用1 简介 内部看门狗驱动[sws_Wdg_00161]要访问内部看门狗硬件,对应的 Wdg 模块实例应该直接访问看门狗服务的硬件。提示:内部看门狗驱动程序是微控制器抽象层的一部分,它允许直接的硬件访问。注意:内部看门狗的日常服…

unity3d摄像机和观察对象坐标轴修正

让摄像机与观察对象在场景层级并列&#xff0c;以世界坐标看齐 &#xff0c;在local模式&#xff0c;只调整模型或者摄像机方向

超越GPT4.0,5分钟介绍谷歌Gemini最新功能,以及登录体验

上段时间还在吃OpenAI后宫争斗戏的瓜&#xff0c;今天又迎来了AI圈子地震的大事件&#xff0c;因为号称GPT4.0强劲对手的Google-Gemini正式发布啦&#xff01;作为新一代多模态AI模型&#xff0c;以强大的性能和广泛的应用前景吸引了全球AI圈友们的关注。 AI进化速度真的太快了…

计算机方向的一些重要缩写和简介

参考&#xff1a; 深度学习四大类网络模型 干货|机器学习超全综述&#xff01; 机器学习ML、卷积神经网络CNN、循环神经网络RNN、马尔可夫蒙特卡罗MCMC、生成对抗网络GAN、图神经网络GNN——人工智能经典算法 MLP&#xff08;Multi Layer Perseption&#xff09;用在神经网络中…

Hibernate 框架 (2023年架构师下半年案例分析题)

Hibernate 是一种对象和关系之间映射的框架&#xff0c;是 Java 应用和关系数据库之间的桥梁。它可以将数据库资源映射为一个或者多个 POJO。将面向数据库资源的各种业务操作以 POLO 的属性和方法的形式实现&#xff0c;使人们摆脱烦琐的 JDBC 代码&#xff0c;将精力更多地集中…

一个 postman实现参数化让我丢掉了一份20k的offer

什么时候会用到参数化 比如&#xff1a;一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块&#xff1a;正确的用户名&#xff0c;密码 成功&#xff1b;错误的用户名&#xff0c;正确的密码 失败 postman实现参数化 在实际的接口测试中&#xff0c;部分参数…

探究注塑行业MES系统的价值与应用:实现生产优化与成本控制

工业自动化程度的提高&#xff0c;要求注塑行业去寻求提升生产效率和降低成本的方式。目前注塑行业的大部分公司可能都面临着相同的问题&#xff0c;比如生产计划制定不科学&#xff0c;也无法协调各生产车间的生产管理&#xff1b;对车间现场信息无法实时共享&#xff0c;工艺…

JVM虚拟机:执行Java程序并指定JVM参数

本文重点 在前面我们设置参数值的时候&#xff0c;需要在eclipse中的VM中进行参数设置&#xff0c;查询的时候需要先jps&#xff0c;然后jinfo。这里尝试动态的设置和查询&#xff0c;也就是说在运行程序的时候就对其进行设置&#xff0c;并且进行查询。 过程 为了确定参数修…

第 6 部分 — 对 LLM 的对抗性攻击。数学和战略分析

第 6 部分 — 对 LLM 的对抗性攻击。数学和战略分析 一、说明 针对大型语言模型&#xff08;LLM&#xff09;的对抗性攻击代表了人工智能安全中一个复杂的关注领域&#xff0c;需要数学严谨性和战略远见的复杂结合。这些攻击旨在操纵 LLM 产生意想不到的输出&#xff0c;范围从…

多线程并发Ping脚本

1. 前言 最近需要ping地址&#xff0c;还是挺多的&#xff0c;就使用python搞一个ping脚本&#xff0c;记录一下&#xff0c;以免丢失了。 2. 脚本介绍 首先检查是否存在True.txt或False.txt文件&#xff0c;并在用户确认后进行删除&#xff0c;然后从IP.txt的文件中读取IP地…

【MVP矩阵】投影矩阵推导与实现

相机空间和NDC空间示意图&#xff08;来自奇乐编程学院&#xff09; 相机坐标系一般都是右手坐标系, 相机朝向是 z 的负半轴 裁剪空间和NDC空间示意图 投影矩阵推导 【本文仅用于自身备忘】 正交投影推导结果如下 透视投影推导结果如下 备注 一般情况下&#xff0c;透…

“爆款大健康产品背后的创新营销策略“

我的朋友去年创立了一家创新型大健康产品公司&#xff0c;并在短短三个月内将其业务规模推到了2300万用户的高峰。你相信吗&#xff1f; 这位朋友是一个有着冒险精神的企业家&#xff0c;他并没有任何大健康产品方面的经验。他先找到了一家领先的科技公司&#xff0c;帮助他把他…

AZURE==SQL managed instances

创建资源 创建DB 创建完成后&#xff0c;拿着刚才的账号密码依然连接不上 远程连接 需要开启公网访问和开放相关端口 参考Configure public endpoint - Azure SQL Managed Instance | Microsoft Learn 连接成功

认识系统服务daemons

什么是daemon与服务&#xff08;service) 常驻内存的是进程&#xff0c;可以提供一些系统或网络功能&#xff0c;这就是服务。实现service的程序称为daemon。也就是说要想提供某种服务&#xff0c;daemon实在后台运行的。 daemon的分类&#xff1a; 1&#xff09;可独立启动…