MYSQL一些命令②

4 阅读4分钟

as关键字

使用SQL语句显示结果的时候,往往在屏幕显示的字段名并不具备良好的可读性,此时可用as起一个别名。

使用as给字段起别名

select id as 序号,name as 名字,gender as 性别 from students;

可以通过as给表起别名

如果是表单查询,可以省略表名

select id,name,gender from students;

表名.字段名

select students.id,students.name,students.gender from students;

可以通过as给表起别名

select s.id,s.name,s.gender from students as s;
  • 在这里给表起别名看起来没有什么意义,然而并不是这样,自链接的时候,必须对表起别名。

distinct关键字

distinct可以去除重复数据行

select distinct1,... from 表名;
select name,gender from students;
- 下面可以去重
select distinct name,gender from students;

总结

  • as关键字可以给表中字段或者表名起别名
  • distinct关键字可以去除重复数据行。

where条件查询

支持的运算符:

  1. 比较运算符
  2. 逻辑运算符
  3. 模糊查询
  4. 范围查询
  5. 空判断

where条件查询语法格式

select * from 表名 where 条件;
select * from studnets where id=1;

比较运算符查询

  1. 等于=
  2. 大于>
  3. 大于等于>=
  4. 小于<
  5. 小于等于<=
  6. 不等于!=或<>

例:查询编号大于3的学生信息

select * from students where id>3;

查询编号不大于4的学生

select * from students where id<=4;

查询姓名不是“黄蓉“的学生

select * from students where name!='黄蓉';

查询没被删除的学生

select * from students where id_delete=0;
- id_delete只是一个状态,判断是否删除,不直接删除是方便找回

逻辑运算符

  1. and
  2. or
  3. not

例子:查询编号大于3的女同学

 select * from students where id>3 and gender=0;

查询编号小于4或没有被删除的学生

select * from id<4 and id_delete=0;

查询年龄不在10岁到15岁之间的学生

select * from students where age<10 and age>15;
select * from students wehre not(age>10 and age<15);
- 多个条件判断想要作为一个整体,可以使用()

模糊查询

  1. like是模糊查询关键字
  2. %表示任意多个任意字符
  3. _表示一个任意字符

查询姓黄的学生

select * from students where name='黄%';

查询姓黄并且”名“是一个字的学生

select * from students where name='黄_';

查询姓黄或叫靖的学生

select * from students where name='黄%'and name='_靖';

范围查询

between...and...表示在一个连续的范围内查询

in表示在一个非连续的范围内查询

例:查询编号为3到8的学生

select * from students where id between 3 and 8;

查询编号不是3到8的男生

select * from students where (not id between 3 and 8)and gender='男';
select * from students where id<3 and id>8 and gender='男';

空判断查询

判断为空使用:is null

判断非空使用:is not null

查询没有填写身高的学生

select * from students where height is null;

注意

  1. 不能使用where height =null判断为空
  2. 不能使用where height !=null判断非空
  3. null不等于''空字符串

总结

  • 常见的比较运算符>,<,>=,<=,!=,<>
  • 逻辑运算符and表示多个条件同时成立则为真,or表示多个条件有一个成立则为真,not表示对条件取反
  • like和%结合使用表示多个任意字符,like和_结合使用表示一个任意字符
  • between-and限制连续使用范围 in限制非连续性范围
  • 判断为空使用is null
  • 判断非空使用is not null

排序查询语法

select * from 表名 order by 列1 asc|desc ,列2 asc|desc...;

语法说明

  1. 先按照列1进行排序,如果列1的值相同,则按照列2排序,以此类推
  2. asc从小到大排序,既升序
  3. desc从大到小排序,既降序
  4. 默认按照列值从小到大排序(asc)

例:查询未删除男生信息,按照学号降序

select * from students where gender=1 and is_delete=0 order by id desc;

显示所有学生信息,先按照年龄从大到小排序,当年龄相同时,按照身高从高到矮排序

select * from students oder by age desc , height desc;

总结

  1. 排序使用order by关键字
  2. asc表示升序
  3. desc表示降序

分页查询

 select * from 表名 limit start(从第几条开始),count(显示多少条);
  1. limit是分页查询关键字
  2. start表示开始行索引,默认0
  3. count表示查询条数

例:查询前3行男生

select * from students gender=1 limit 0,3;
select * from students gender=1 limit 3;

分页查询案例

已知每页显示m条数据,求第n页显示的数据

提示:关键是求每页的开始行索引

查询学生表,获取第n页数据的SQL

select * from students limit m*(n-1),n;

总结

  • 使用limit关键字可以限制数据显示数量,通过limit关键字可以完成分页查询
  • limit关键字后的第一个参数是开始行索引(默认0,不写就是0),第二个参数是查询条数。