[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 的选项匹配。

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

相关推荐
Wang's Blog2 小时前
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践
数据库·笔记·postgresql
阮胜昌5 小时前
MySQL 中的动态数据脱敏:无需更改应用程序即可保护敏感数据
android·mysql·adb
IZero075 小时前
Elasticsearch 学习笔记筑基-文档操作篇
笔记·学习·elasticsearch
公爵爱学习5 小时前
安装Ubuntu20.04遇到的问题 简要简述笔记
笔记
小白说大模型6 小时前
AI驱动的个性化学习路径:知识图谱与知识点关联的存储与推理
大数据·人工智能·学习·mysql·机器学习·prompt·知识图谱
这个DBA有点耶7 小时前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba
程序员夏洛7 小时前
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
Wang's Blog7 小时前
PostgreSQL笔记28: PostgreSQL ACID 特性与实现机制深度解析
大数据·笔记·postgresql
卓怡学长8 小时前
w180springboot基于Java的悠扬乐器管理
java·spring boot·mysql·spring·maven·intellij-idea
u0103055278 小时前
正则表达式find与matches区别详解
笔记