Node之单表基本查询

Node之单表基本查询

查询语句是我们在 mysql 主要用到的语句。它是重中之重,首先是在一张表里进行查询。

sql 复制代码
SELECT id,loginId,loginPwd,'abc' FROM `user`;

使用上面的语句进行查询,它是从 from 后面存储在硬盘里的物理表的数据一行一行拿出来放到内存的结果表里,并且可以在结果表里增加列数。

sql 复制代码
SELECT * ,'abc' AS 'extra' FROM `employee`;

如果想改变原来的列名,就在 as 后写上别名的名称,还可以省略 as 。* 表示所有的列名。

sql 复制代码
SELECT id,`name`,
CASE ismale
	WHEN 1 THEN
		'男'
	ELSE
		'女'
END sex,
salary FROM `employee`;

如果想进一步匹配数据,可以对某一列进行进一步的选择。case 后面跟表名,后面跟条件,最后使用 end 结束语句。并且可以在最后设置别名。

sql 复制代码
SELECT id,`name`,
CASE 
	WHEN ismale=1 THEN
		'男'
	ELSE
		'女'
END sex,
salary FROM `employee`;

或者可以这么写,不在 case 里写,都放到 when 里面。

sql 复制代码
SELECT id,`name`,
CASE 
	WHEN ismale=1 THEN
		'男'
	ELSE
		'女'
END sex,
CASE 
	WHEN salary>=10000 THEN
		'高'
	WHEN salary>=5000 THEN
    '中'
	ELSE
		'低'
END `level`,
salary
FROM `employee`;

还可以进行多个 when 语句,类似于 if-else 语句,前一句成立就不去匹配下一句。

from 后面有很多种写法,大多数后面跟表名。

sql 复制代码
SELECT * FROM employee
WHERE ismale=1;

有一个顺序的排列,先是 from 从物理表里拿出来,然后从 where 进行筛选,如果找不到就放弃这个条件。找到的话再从 select 里拿到要展示的列。所以在 where 里不能写 select 里面才进行设置的数据。

sql 复制代码
SELECT * FROM department
WHERE companyId IN (1,2)

使用 in 可以设定范围,查询指定范围的行。

sql 复制代码
SELECT * FROM employee
WHERE location IS NOT NULL;

想查询为 null 的行不能使用等号,要使用 is 或者 is not 。

还可以进行大于,小于,不大于,不小于进行表示。

sql 复制代码
SELECT * FROM employee
WHERE salary BETWEEN 10000 and 12000;

还可以使用 between 来筛选两个范围之间的数据。

sql 复制代码
SELECT * FROM employee
-- WHERE `name` like '%袁%';
WHERE `name` like '袁__';

还可以使用模糊查询,使用 % 可以匹配任意字符,使用 _ 来匹配一个字符。使用 like 关键字。

sql 复制代码
SELECT * FROM employee
WHERE `name` LIKE '张%' AND (ismale=0 AND salary>=12000
OR 
birthday>='1996-1-1');

还可以使用 and 和 or ,and 表示同时一起满足,or 表示满足任意一个,当然也可以使用大括号来进行组合,这是多条件的情况。

sql 复制代码
SELECT * ,
CASE ismale
	WHEN 1 THEN
		'男'
	ELSE
		'女'
END sex
FROM employee
ORDER BY sex ASC,salary DESC;

还可以进行顺序的排列,asc 表示升序,这是默认的, desc 表示降序,并且可以多条件排序,在前一个条件满足的基础上再满足后一个条件。

并且 order by 是在 select 之后进行排序,所以 select 里的内容 order by 可以用。

sql 复制代码
SELECT * FROM employee
LIMIT 2,3;

limit n,m 在 order by 之后执行,表示跳过 n 条数据,取出 m 条数据。

所以整体顺序是 from ,where ,select ,order by ,limit 。

相关推荐
ZhengEnCi11 小时前
如何看待 Fable 5.2 用纯代码生成 1.4MB 视觉作品:光追、水面、倒影、火光的程序化生成原理
前端
再吃一根胡萝卜12 小时前
DSH 插件的 Host 与 Client:为什么「只加载了 Host」,以及要不要自己写 Client 加载器
前端
parade岁月12 小时前
AI 写的前端代码为什么总像 5 年前的?Chrome 官方出手了
前端
新*12 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
tryCbest13 小时前
Vue系列——第 15 篇:内置组件全家桶——Transition、Teleport、Suspense、KeepAlive
前端·vue.js
易师傅13 小时前
技术面试已死?AI 时代,真正拉开程序员差距的是什么?
前端·后端·程序员
jay神13 小时前
基于深度学习的交通流量预测系统(Web 版)
前端·人工智能·深度学习·yolo·计算机毕业设计
OpsEye13 小时前
别再挨个充会员了:多模型编码,最麻烦的从来不是选模型
javascript·ai编程
AiMan13 小时前
别再把秘塔会话逐个点开:这可把秘塔多个会话一次导出?AI导出鸭
前端·后端·面试
AiMan13 小时前
你好,请问可以一键导出Dola多个对话框内容吗?一键导出一整年哦
前端