🎯 本文专栏: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 name
    FROM t_user
    WHERE 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';



















