[24年单独笔记] MySQL 中的简单查询搜索示例

Work with MySQL < Search_WHERE

WHERE 范围限定在 MySQL 属于核心部分,数据量基本上以万为单位计算,足够任何教程单独开一个专题章节!后面的查询内容基本围绕此展开。

在进行此部分内容学习时,我们推荐你先了解 Linux/Shell 命令是如何运行的,以及它的参数分割(传参)原理!

存入数据库的数据不意味着完全理想、安全,在正式生产环境你必须根据需求确定采用其他安全措施!

请注意,从此开始。我们将对 MySQL 关键词采用二级标题、应用环境采用三级标题的方式进行深入介绍!

sql 复制代码
-- where_init.sql
-- 初始化示例环境
USE maic;
DROP TABLE IF EXISTS info;
CREATE TABLE info
(
    name varchar(32) DEFAULT NULL,
    id_number char(18) NOT NULL,
    tel char(11) DEFAULT NULL
);
INSERT INTO info
VALUES
('小A','020104198008070432','13612312368'),
('小B','020104198002230756','15712312375'),
('小C','010455198912080431','15712312312'),
('小D','030455198912080421',NULL),
('小E','040455198912080421',NULL);
SELECT * FROM info;

-- 注意,这里 maic_user 表已经被更名为 profile
-- 如果忘记如何对表结构更名,请查阅 Frame_Table_MySQL

TRUNCATE profile;
INSERT INTO profile(id,uid,email,pwd,nick)
VALUES
(1,0,'h@maichc.club','xsadw','zomaii'),
(2,1,'he@maichc.club','xsadw','liubin'),
(3,2,'hel@maichc.club','xsadw',NULL),
(4,3,'hell@maichc.club','xsadw',NULL),
(5,4,'hello@maichc.club','xsadw',NULL);

WHERE 拓展介绍

使用 WHERE 意味着装载了一个应用环境,即WHERE关键词后均是应用环境。同时需要引入一个编程概念:任何关键词和应用环境都要附加参数,参数可以是程序返回值、变量或常量!

WHERE 的表达式如下:

sql 复制代码
SELECT ... FROM ... WHERE 范围内的查询条件 {[命令] 命令参数}

无论你是否规定了WHERE范围,以下代码在特定条件下的选择效果等同!

sql 复制代码
-- 提醒 tel 类型 CHAR(11) DEFAULT NULL
SELECT * FROM info WHERE tel;

SELECT * FROM info WHERE tel IS NOT NULL;

WHERE支持的部分运算符如下,你应该能明白科学性编程和业务性编程在指导上的一些大区别:

值得注意的是,逻辑符 必须出现在 常量关键词 前!如 NOT NULLBETWEEN ... AND ...NOT BETWEEN 等诸如此类的例子!
...
AND - 输出与判断要求的并集`A∪B` OR - 输出与判断要求的交集`A∩B` NOT - 输出基于上面取反、补集`∁uA` XOR - 输出如果结果包含一真、一假返回真,输出。
`+,−,∗,/,=` !=
逻辑运算符
数学运算符
关系运算符

完全查询

sql 复制代码
--- WHERE 实际是一个循环取值的过程
--- 后面表达,运算结果为 True 才会输出 
SELECT * FROM `profile`;

SELECT * FROM `profile`
WHERE TRUE;

SELECT * FROM `profile`
WHERE 1=1;

查询指定字段(列,填写表结构作为命令参数)

sql 复制代码
SELECT nick "昵称 NULL为不可见",email "邮件地址"
FROM profile;

通过数学运算符方式查询

sql 复制代码
SELECT * FROM profile WHERE nick="zomaii";
SELECT * FROM profile WHERE uid=1;

复合式查询

sql 复制代码
--- 限制uid范围
SELECT 
nick AS '用户昵称',
email AS '邮箱地址'
FROM maic.profile
WHERE uid >= 0 AND uid < 4;
--- 多条件限制
SELECT 
nick AS '用户昵称',
email AS '邮箱地址'
FROM maic.profile
WHERE uid >= 0 AND nick IS NOT NULL;

多表查询

反单引号代表将关键词与表结构相分割,单引号或双引号代表字符串别名!

sql 复制代码
-- DISTINCT代表去重复内容
SELECT DISTINCT
info.`name` AS 'info 表格的 name 数据',
`profile`.email AS 邮件
FROM 
maic.info,
maic.`profile`;

最简单的查询学习以及完成,接下来是业务查询内容。

包括但不限于 ORDER BY 的排序 LIMIT x,x的取名次 AVG() 的求平均

以及 LIKE '_','%' 的模糊搜索 和 IN() OR 的选项匹配。

你将会处理 时间、价格-浮点(整数)、字符串、邮箱、电话等,你需要明白匹配这些类型(需求)的表达方式!

相关推荐
乐观勇敢坚强的老彭19 分钟前
信奥C++一维数组笔记
开发语言·c++·笔记
昕光xg36 分钟前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
garuda herb1 小时前
生成专题页Blog--建立并返回 MySQL 数据库连接
python·mysql
学计算机的计算基1 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
奶糖 肥晨1 小时前
DBeaver 安装与 MySQL 连接配置教程
数据库·mysql
AOwhisky1 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
砚凝霜1 小时前
软考网络工程师|第 2 章 信道延迟、传输介质、数据编码、数字调制、PCM 完整备考笔记
网络·笔记·pcm
万亿少女的梦1682 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
Database_Cool_3 小时前
阿里云 RDS MySQL 降本增效实战:从规格选型到成本优化,月成本降低64%全攻略
mysql·阿里云·云计算
Cloud云卷云舒13 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换