MySql中的查询语法(一)

1.普通查询

SELECT * FROM student;

SELECT是关键字,表示将要执行一个查询,*表示“所有列”,FROM表示将要从哪个表查询。

注意:查询结果也是一个二维表,它包含列名和每一行的数据

select语句并不是一定要包含from字句。例如

select 100+200;

2.条件查询

查询班级号为 20201001 的学生

SELECT * FROM student where class_num = '20201001';

查询班级号为 20201001 的学生姓名和性别,当需要查询多列的时,可以使用 ',' 来进行分割。

SELECT name,sex FROM student where class_num = '20201001';

'or'和'and'可以在条件语句中表示子条件的或者与并且。

SELECT name FROM student where class_num = '20201001' or sex = '男';
SELECT name,sex FROM student where class_num = '20201001' and sex = '男';

'not'表示之后一个子条件的否定

SELECT name FROM student where not class_num = '20201001' ;

IN 操作符允许在 WHERE 子句中规定多个值。

查询出用户id为1和3的用户记录

select * from  student where id in (1,3)

3.去重查询

SELECT DISTINCT sex from student

4.模糊查询

模糊查询 like 通配符(% 任意多个字符 _单个字符)

查询出所有姓王的同学

SELECT * FROM student WHERE name like '王%';

查询姓王且名字只有两个字的学生

SELECT * FROM student WHERE name like '王_';

查询出所有含有花字的同学的名称

SELECT * FROM student WHERE name like '%花%';

5.排序

我们使用SELECT查询时,细心的读者可能注意到,查询结果集通常是按照id排序的,也就是根据主键排序。这也是大部分数据库的做法。如果我们要根据其他条件排序怎么办?可以加上ORDER BY子句。例如按照年龄从低到高进行排序:

SELECT * FROM student ORDER BY age;

如果要反过来,按照年龄从高到底排序,我们可以加上DESC表示降序:

SELECT * FROM student ORDER BY age DESC;

按照年龄降序,学号升序

SELECT * FROM student ORDER BY age DESC,sno;

默认的排序规则是ASC:“升序”,即从小到大。ASC可以省略,即ORDER BY score ASC和ORDER BY score效果一样。

6.分页查询(限制查询)

使用SELECT查询时,如果结果集数据量很大,比如几万行数据,放在一个页面显示的话数据量太大,不如分页显示,每次显示100条。

分页实际上就是从结果集中“截取”出第M~N条记录。这个查询可以通过LIMIT OFFSET 子句实现。我们先把所有学生按照成绩从高到低进行排序:

现在,我们把结果集分页,每页3条记录。要获取第1页的记录,可以使用:

SELECT * FROM student LIMIT 3 OFFSET 0;

上述查询LIMIT 3 OFFSET 0表示,对结果集从0号记录开始,最多取3条。注意SQL记录集的索引从0开始。

如果要查询第2页,那么我们只需要“跳过”头3条记录,也就是对结果集从3号记录开始查询,把OFFSET设定为3:

SELECT * FROM student LIMIT 3 OFFSET 3;

可见,分页查询的关键在于,首先要确定每页需要显示的结果数量pageSize(这里是3),然后根据当前页的索引pageIndex(从1开始),确定LIMIT和OFFSET应该设定的值:

  • LIMIT总是设定为pageSize;
  • OFFSET计算公式为pageSize * (pageIndex - 1)。

可以使用另外一种形式表示第页的查询:

SELECT * FROM student limit 6,3;

limit之后第一个数表示开始截取的记录的索引,第二个数表示pageSize。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值