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

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

相关推荐
冰暮流星16 分钟前
javascript之history对象介绍
前端·笔记
quan26311 小时前
20260529,日常开发-数据库主从问题
java·mysql·主从·延迟
jialiguo2 小时前
博客摘录「 尚硅谷Vue3入门到实战,最新版Vue3+TypeScript前端开发教程」2024年8月7日
笔记
風清掦2 小时前
【STM32学习笔记-14】WDG看门狗 - 14.2 WWDG窗口看门狗
笔记·stm32·单片机·嵌入式硬件·学习·fpga开发
晓梦林3 小时前
bughush靶场学习笔记
笔记·学习
DIY源码阁4 小时前
JavaSwing宿舍管理系统 - MySQL版
java·数据库·mysql·eclipse
cfm_29144 小时前
MySQL8.0 InnoDB Cluster
数据库·mysql
sakiko_4 小时前
Swift学习笔记34-MVC架构,SwiftUI与UIkit混编练习
笔记·学习·swiftui·mvc·swift
Afans_fire4 小时前
多渠道广告归因:3种逻辑解决效果分配难题
笔记·内容运营·广告投放·广告营销·徐州巨量星河
泉飒4 小时前
qt软件无法打开编译
笔记·工业视觉