MySQL 知识量:16 - 40 - 165
从MySQL数据库中查询数据是最常用的一项操作,这将用到select查询语句。select语句的基本结构为:
select ... from ...
SQL语句都是由一些简单的英文单词构成的,这些单词称为关键字或保留字。
以上代码中“select”和“from”都是关键字。其中,select后面跟要查询的内容(查什么),from后面跟要查询的表(从哪查)。
select name from student;
以上代码的意思是:从表student中查询name列的信息。结果如下:
+-------+ | name | +-------+ | Susan | | Jame | | Bob | | Robot | | Jen | | Toney | +-------+
以上结果中的数据没有刻意排序,它们的顺序可能是数据被添加入数据表时的顺序,也可能不是,随后再谈论排序问题。
编写SQL语句时要注意的是:
多条语句必须以分号(;)结束,单条语句在MySQL中不要求,但最好也这样做,好习惯很重要。
SQL语句一般不区分大小写,但是建议一直小写或使用自己特定的写法,且保持前后一致,以避免特殊情况出现。
要查询多个列,只需要在select后面多添加几个列名即可。
select name,age from student;
从表student中查询姓名和年龄信息,结果为:
+-------+-----+ | name | age | +-------+-----+ | Susan | 11 | | Jame | 12 | | Bob | 11 | | Robot | 10 | | Jen | 11 | | Toney | 10 | +-------+-----+
除了查询指定列以外,如果需要查询一个表的所有列,可以使用通配符“*”来完成,把它放到select的后面替代具体列名就可以了。
select * from student;
查询表student的所有列,结果为:
+----+-------+-----+--------+ | id | name | age | sex | +----+-------+-----+--------+ | 1 | Susan | 11 | female | | 2 | Jame | 12 | male | | 3 | Bob | 11 | male | | 4 | Robot | 10 | male | | 5 | Jen | 11 | female | | 6 | Toney | 10 | male | +----+-------+-----+--------+
注意:虽然使用*通配符很方便,还可以查询出未知的列,但是因为查询性能问题,除非真的需要查询所有列的信息,尽量不要使用*通配符。
如果想要查询的结果值都是唯一的,也就是不要重复内容,可以使用关键字distinct,将它放到目标列的前面即可。
select distinct age from student;
从表student中查询年龄age信息,要求年龄不能有重复项。结果为:
+-----+ | age | +-----+ | 11 | | 12 | | 10 | +-----+
如果查询出的结果较多,想要限制输出的结果,例如想要查询的第一行或前3行信息等,可以使用limit子句。其语法为:
limit number; 或者 limit number1,number2;
如果关键字limit后面只有一个数字,表示保留查询结果的前几行;如果是“数字1,数字2”的形式,表示保留查询结果的从数字1开始的数字2个行。
1、第1种形式:
select * from student limit 3;
查询表student的所有信息的前3行。结果为:
+----+-------+-----+--------+ | id | name | age | sex | +----+-------+-----+--------+ | 1 | Susan | 11 | female | | 2 | Jame | 12 | male | | 3 | Bob | 11 | male | +----+-------+-----+--------+
2、第2种形式:
select * from student limit 1,3;
查询表student的所有信息,显示从第2行开始的3行数据。结果为:
+----+-------+-----+------+ | id | name | age | sex | +----+-------+-----+------+ | 2 | Jame | 12 | male | | 3 | Bob | 11 | male | | 4 | Robot | 10 | male | +----+-------+-----+------+
特别注意:
MySQL查询结果的编码从0开始,因此第一行实际是行0,“limit 0,3”表示:从第1行开始的3行,等同于“limit 3”。
如果limit子句表示的查询范围超出了实际可以查询的范围,MySQL将只返回能够查到的数据。
前面的查询语句在引用表名时只有表名本身,在某些情况下,特别是涉及不同数据库的查询,可能会遇到表同名问题,这时就需要使用完全限定的表名,简单讲就是在表名前面加上数据库的名字,以便更精确的表示是哪里的哪个表。
select student.name from school.student;
查询数据库school的表student的列name的信息。结果为:
+-------+ | name | +-------+ | Susan | | Jame | | Bob | | Robot | | Jen | | Toney | +-------+
以上代码中,通过使用“.”将数据库名与表名进行连接,以进一步进行准确表达。其中,列名name也通过这种形式与表名进行了关联,原理是一样的。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6