首页 > 数据库 >开心档之MySQL WHERE 子句

开心档之MySQL WHERE 子句

时间:2023-03-31 18:26:10浏览次数:59  
标签:WHERE 子句 MySQL true SELECT kxdang

MySQL WHERE 子句

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

语法

以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:


SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

以下为操作符列表,可用于 WHERE 子句中。

下表中实例假定 A 为 10, B 为 20

操作符描述实例
= 等号,检测两个值是否相等,如果相等返回true (A = B) 返回false。
<>, != 不等于,检测两个值是否相等,如果不相等返回true (A != B) 返回 true。
> 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true (A > B) 返回false。
< 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true (A < B) 返回 true。
>= 大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true (A >= B) 返回false。
<= 小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true (A <= B) 返回 true。

如果我们想在 MySQL 数据表中读取指定的数据,WHERE 子句是非常有用的。

使用主键来作为 WHERE 子句的条件查询是非常快速的。

如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。


从命令提示符中读取数据

我们将在SQL SELECT语句使用WHERE子句来读取MySQL数据表 kxdang_tbl 中的数据:

实例

以下实例将读取 kxdang_tbl 表中 kxdang_author 字段值为 Sanjay 的所有记录:

SQL SELECT WHERE 子句

SELECT * from kxdang_tbl WHERE kxdang_author='菜鸟教程';

输出结果:


MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。

如下实例:

BINARY 关键字

mysql> SELECT * from kxdang_tbl WHERE BINARY kxdang_author='kxdang.com';
Empty set (0.01 sec)
 
mysql> SELECT * from kxdang_tbl WHERE BINARY kxdang_author='RUNOOB.COM';
+-----------+---------------+---------------+-----------------+
| kxdang_id | kxdang_title  | kxdang_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 3         | JAVA 教程   | RUNOOB.COM    | 2016-05-06      |
| 4         | 学习 Python | RUNOOB.COM    | 2016-03-06      |
+-----------+---------------+---------------+-----------------+
2 rows in set (0.01 sec)

实例中使用了 BINARY 关键字,是区分大小写的,所以 kxdang_author='kxdang.com' 的查询条件是没有数据的。


使用PHP脚本读取数据

你可以使用 PHP 函数的 mysqli_query() 及相同的 SQL SELECT 带上 WHERE 子句的命令来获取数据。

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

实例

以下实例将从 kxdang_tbl 表中返回使用 kxdang_author 字段值为 RUNOOB.COM 的记录:

MySQL WHERE 子句测试:

<?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");
 
// 读取 kxdang_author 为 RUNOOB.COM 的数据
$sql = 'SELECT kxdang_id, kxdang_title, 
        kxdang_author, submission_date
        FROM kxdang_tbl
        WHERE kxdang_author="RUNOOB.COM"';
 
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>菜鸟教程 MySQL WHERE 子句测试<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['kxdang_id']}</td> ".
         "<td>{$row['kxdang_title']} </td> ".
         "<td>{$row['kxdang_author']} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
// 释放内存
mysqli_free_result($retval);
mysqli_close($conn);
?>

标签:WHERE,子句,MySQL,true,SELECT,kxdang
From: https://www.cnblogs.com/sdges/p/17277135.html

相关文章

  • 开心档之MySQL 序列使用
    MySQL序列使用MySQL序列是一组整数:1,2,3,...,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。本章我们将介绍如何使用MySQL的序列。使用AUTO_INCREMENTMySQL中最简单使用序列的方法就是使用MySQLAUTO_INCREMEN......
  • 使用EFCore的Code First和MySql数据库迁移(转载 )
    下辈子还当程序员 博客园首页新随笔联系订阅管理随笔-4  文章-0  评论-9  阅读- 44432使用EFCore的CodeFirst和MySql数据库迁移 1.感慨一下    随着.netcore的持续更新和升级,至少对于从事.net开发的人员和即将踏入这个领域......
  • mysql——null值和空值
    参考:https://blog.csdn.net/xp178171640/article/details/103065271?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-103065271-blog-107128984.235%5Ev27%5Epc_relevant_3mothn_strategy_and_data_recovery......
  • mysql全文索引
    建立索引语句1.需要字段字符集一致utf8mb4根据自己字段定义ALTERTABLEuserADDFULLTEXT(name,email,phone,external_id)WITHPARSERngramCHARSETutf8mb4;索引占用空间user表大约80M,创建的全文索引占用空间约100M(不含表大小)使用全文索引两种查法:select*from......
  • Mysql之SQL语句基础1
    一、基本概念——后续的内容将会记录作者在计科学习内容DB(数据库):存储数据的仓库,数据是有组织进行存储DBMS(数据库管理系统):操纵和管理数据库的大型软件SQL:操纵关系数据库的编程语言,是一套标准有Mysql,Oracle,SQLSever,PostgreSQlRDBMS(关系型......
  • mysql Error:index column size too large. the maximum column size is 767 bytes
    问题现象mysql在执行脚本create创建表时,提示以下错误:indexcolumnsizetoolarge.themaximumcolumnsizeis767bytes异常原因INNODB引擎,UTF-8,主键字符串默认最大767,需要修改解决方案对数据库进行设置setglobalinnodb_large_prefix=ON参考博客......
  • php站点导入大mysql文件(linux系统)
    问题描述:站点数据多,mysql导出后大于1G,使用phpmyadmin,导入一半报错,白白浪费等待时间,使用navicat导入,执行时间过长提示错误解决思路:1.拆分mysql文件,分批次导入,亲测还是比较花费时间,小于100M可以尝试,大于100M不推荐2.推荐使用进入linux系统导入mysql,步骤如下:2.1:把导出的.sql大文......
  • mysql的查询--子查询,order by,group by,having
    一、1.多表查询 格式1: select字段列表 from表1join表2on表1.字段1=表2.字段1 where查询条件 格式2: select字段列表 from表1join表2on表1.字段1=表2.字段1 join表3on表2.字段2=表3.字段2 where查询条件 格式......
  • mysql,pg连接重试参数配置
    PostgreSQLJDBCURL连接重试的示例:StringdbUrl="jdbc:postgresql://localhost:5432/mydb?autoReconnect=true&maxReconnects=5&connectTimeout=5000";Connectionconnection=null;try{connection=DriverManager.getConnection(dbUrl,"user......
  • 在 MySQL 数据库中删除重复记录的步骤
    在MySQL数据库中删除重复记录的步骤当我们在处理数据库中的数据时,有时候会出现重复记录的情况,这些重复记录会影响数据的正确性,需要将其删除。下面是在MySQL数据库中删除重复记录的步骤:1.查找重复记录首先,我们需要找到数据库表中的重复记录。可以使用以下SQL语句查询表中......