当前位置: 首页 > news >正文

SQL之DML(查询语句:select、where)

🎯 本文专栏:MySQL深入浅出
🚀 作者主页:小度爱学习

在这里插入图片描述

select查询语句

在开发中,查询语句是使用最多,也是CRUD中,复杂度最高的sql语句。

查询的语法结构

select *|字段1 [, 字段2 ……] from 表名称 [, 表名称2……] [where 条件] 
[group by 字段 [having 分组后的筛选]] 
[order by 字段 [desc|asc] [字段2 [desc|asc] ……]] 
[limit 分页]

简单的sql查询

-- 查询所有数据
select * from t_user;-- 查询需要的字段信息
select id, name, password from t_user;
-- 查询一个字段,一个等值条件
select name from t_user where id = 1;select 字段列表
from 表名称
where 条件/*等值查询
*/
select password from t_user where name="小度";
select * from t_user where age = 21;
alter table t_user add birthday datetime default now();
select * from t_user where birthday='2025-04-13 20:52:12';

select语句中的特殊情况:

对数值型数据列、变量、常量可以使用算数操作符创建表达式(+ - * /)
对日期型数据列、变量、常量可以使用部分算数操作符创建表达式(+ -)
运算符不仅可以在列和常量之间进行运算,也可以在多列之间进行运算。
select name,age*10 from t_user;
+----------+--------+
| name     | age*10 |
+----------+--------+
| 小度     |    210 |
| 小度3    |    170 |
| 小度4    |    190 |
| 张三     |    190 |
| xiaodu   |    190 |
| 小嘟     |    170 |
| 小嘟2    |    170 |
| xiaoxiao |   NULL |
| ls       |   NULL |
| zs       |   NULL |
+----------+--------+
10 rows in set (0.00 sec)补充:+ 说明
-- MySQL的+默认只有一个功能:运算符
SELECT 100+80; # 结果为180
SELECT '123'+80; # 只要其中一个为数值,则试图将字符型转换成数值,转换成功做预算,结果为203
SELECT 'abc'+80; # 转换不成功,则字符型数值为0,结果为80
SELECT 'This'+'is'; # 转换不成功,结果为0
SELECT 'This'+'30is'; # 猜测下这个结果是多少?依旧是30
SELECT NULL+80; # 只要其中一个为NULL,则结果为NULL

等值判断

条件中,出现了相等值的判断,一般采用=进行判断。

  • = 判断两次的值是否相等
  • is 判断空null
  • is not null来判断不为空
  • <=> 可以判断null或者普通值

不等判断

  • != 不等于
  • <>也是不等于

逻辑运算符

逻辑运算符是多条件关联的一种方式。

与或非

  • and
  • or
  • not

注意:在sql中,如果要提升条件的运行顺序,或者提高条件的优先级别,则需要使用括号来提升。

查询时的别名使用

查询时,将结果的显示字段,使用一个其他名称来代替,就是别名。

mysql> select count(*) from t_user;
+----------+
| count(*) |
+----------+
|       10 |
+----------+
1 row in set (0.01 sec)mysql> select count(*) as c from t_user;
+----+
| c  |
+----+
| 10 |
+----+
1 row in set (0.00 sec)mysql> select count(*) as 总人数 from t_user;
+--------+
| 总人数 |
+--------+
|     10 |
+--------+
1 row in set (0.00 sec)mysql> select count(*) 总人数 from t_user;
+--------+
| 总人数 |
+--------+
|     10 |
+--------+
1 row in set (0.00 sec)

常见的条件查询

使用WHERE子句限定返回的记录
WHERE子句在FROM 子句后SELECT[DISTINCT] {*, column [alias], ...}FROM table[WHEREcondition(s)];WHERE中的字符串和日期值
字符串和日期要用单引号扩起来
字符串是大小写敏感的,日期值是格式敏感的select name,age,password from t_user where name='xiaodu';WHERE中比较运算符:select name,age,password from t_user where age<25;其他比较运算符
使用BETWEEN运算符显示某一值域范围的记录select name,age,password from t_user where age between 20 and 25; SELECTlast_name, salary使用IN运算符使用IN运算符获得匹配列表值的记录select id,name,age,password from t_user where id in (5,6,7);使用LIKE运算符使用LIKE运算符执行模糊查询查询条件可包含文字字符或数字(%) 可表示零或多个字符( _ ) 可表示一个字符SELECT nameFROM t_userWHERE name LIKE '小%';使用IS NULL运算符查询包含空值的记录select id,name,age from t_user where age is null;逻辑运算符使用AND运算符AND需要所有条件都满足.    select * from t_user where age=19 and password='123456';使用OR运算符OR只要两个条件满足一个就可以  select * from t_user where age=19 or password='123456';使用NOT运算符NOT是取反的意思select * from t_user where age not in(19);使用正则表达式:REGEXP<列名> regexp '正则表达式'select * from t_user where age regexp '^1';

相关文章:

  • 数据通信学习笔记之OSPF的区域
  • AIGC赋能插画创作:技术解析与代码实战详解
  • 自由的控件开发平台:飞帆中使用 css 和 js 库
  • LeetCode283.移动零
  • HTTP 1.0 和 2.0 的区别
  • 阿拉丁神灯-第16届蓝桥第4次STEMA测评Scratch真题第2题
  • Redis 缓存—处理高并发问题
  • 对于网络资源二级缓存的简单学习
  • 【嵌入式人工智能产品开发实战】(二十一)—— 政安晨:源码搭建小智AI嵌入式终端的后端服务(服务器)环境 - 助力嵌入式人工智能开发
  • 测试基础笔记第七天
  • [FPGA]设计一个DDS信号发生器
  • 每天学一个 Linux 命令(28):ln
  • CentOS stream 中部署Zabbix RPM软件包公钥验证错误
  • 20.3 使用技巧6
  • 自定义 strlen 函数:递归实现字符串长度计算
  • 如何使用人工智能大模型,免费快速写工作计划?
  • kotlin,编码、解码
  • 存储图表数据的模板类QCPDataContainer
  • TDengine 性能监控与调优实战指南(二)
  • 一文粗通 Celery 分布式任务队列
  • 经济参考报:安全是汽车智能化的终极目标
  • 对话地铁读书人|来自法学副教授的科普:读书日也是版权日
  • 今年1-3月全国吸收外资2692.3亿元人民币
  • 广西东兰官方通报“村民求雨耕种”:摆拍,恶意炒作
  • 科技如何赋能社会治理?帮外卖员找新家、无人机处理交通事故……
  • 针灸学专家夏玉清逝世,20岁时奔赴抗美援朝战场救护伤员