SQL查询
语法
select 列名1,列名2 # 查询列
from 表名 # 从 某张表中
#可选
where 条件表达式
group by 列名
order by 列名
limit ?,? 分页
特点:
1 :我们想查询该表的那些列 可以直接写列名 ,顺序可以自定义
select `name`,age,address,sex from student;
2 :如果需要所有列都被查询 ,可以使用 select * , *号代表所有列
select * from student;
* 匹配所有
速度慢,一般项目中使用列名直接匹配
3 :列和表都可以起别名(别名只有在起别名的那句SQL中才能识别此时表的别名 在多表查询的时候需要用到)。
select s.`name`,s.age+3 a,s.address from student s;
此时 a 就是 s.age+3这一列的别名 s就是student 表的别名
4 :查询中列支持运算
select s.`name`,s.age+3 a,s.address from student s;
去重查询
特点:尽量少用,会影响性能
select distinct 列名 from 表名;
条件查询where 语句
SQL语句中的条件表达式:查询条件、判断条件、修改条件
条件运算符:= > < >= <= 不等:<> 和 !=
算术运算符:+ - * / %(mod) 不支持:++ – 复合赋值 += -=
逻辑运算符:
- and(&&):并且 :多个条件同时成立 就true 否则返回false
- not(!):非 :取反
- or(||):或 ,多个条件只要有一个成立,结果:true ,都不成立:false
①:条件运算符
#查询年龄大于19的学生
select * from student where age > 19;
②:多条件查询
#查询3班年龄大于19的学生
select * from student where age > 19 and classid = 3;
③:范围查询 ;
#查询年龄19到22的学生
select * from student where age > 19 and age < 22;
④: between a and b; 根据某个字段值的区间范围来查询符合条件的记录,这个范围内有多少数据并不明确
#查询年龄19--22之间的学生
select * FROM studentinfo where age BETWEEN 19 and 21;
# 查询1990-1991的学生
select * from studentinfo where birthday >='1990-01-01' and birthday<='1991-12-31';
select * from student where birthday BETWEEN '2017-03-03' and '2020-03-03';
⑤:in (在。。内);用来匹配某个字段的值是几个可数的选项值之一
#查询2班的周口的学生 或者3班的郑州的学生
select * from student where (classid,address) in ((2,'周口'),(3,'郑州'));
模糊查询
正则通配符
正则模式REGEXP操作符