🎯 本文专栏: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
判断空nullis 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';