本博文源于mysql,旨在对简单的查询语句做相应学习与练习。内容涉及查询的基础语法,limit关键字、DISTINCT关键词、给字段设置别名、orderby关键子、where关键字查询、单一条件查询、多条件查询、使用like模糊查询。非常精彩!
在学习之前,首先需要创建表
create table tb_students_info
(id INT(11) PRIMARY KEY,
name VARCHAR(10),dept_id INT(11),
age INT(11),sex VARCHAR(4),height FLOAT,login_date DATE);
然后插入记录
insert into tb_students_info values(1,'Dany',1,25,'F',160,'2015-09-10');
insert into tb_students_info values(2,'Green',3,23,'F',158,'2016-10-22');
insert into tb_students_info values(3,'Henry',2,23,'M',159,'2016-10-23');
insert into tb_students_info values(4,'Jane',1,22,'F',156,'2016-10-12');
insert into tb_students_info values(5,'Jim',1,24,'M',158,'2016-10-22');
insert into tb_students_info values(6,'John',2,21,'M',152,'2016-10-24');
insert into tb_students_info values(7,'Lily',6,22,'F',160,'2016-10-25');
insert into tb_students_info values(8,'Susan',4,23,'F',166,'2016-10-26');
insert into tb_students_info values(9,'Green',3,22,'M',170,'2016-10-27');
insert into tb_students_info values(10,'Green',4,23,'M',193,'2016-10-23');
然后开始练习
SELECT
{* | <字段列名>}
[
FROM <表1>,<表2>....
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator><expression>}...]]
在SELECT语句中使用星号“*”
通配符查询所有字段。SELECT查询记录最简单的形式是从一个表中检索所有记录,实现的方法是使用星号通配符指定查找所有列的名称,语法格式如下:
SELECT * FROM 表名;
同样的可以将*换为所有字段的名称,然后进行查询,这就是查询表中指定的字段。如果多列用逗号
隔开
select name from tb_students_info;
英文中distinct意思就是不重复。因此如果想要不重复就需要用到这个关键字
select age from tb_students_info;
select distinct age from tb_students_info;
格式<表名> [AS] <别名>
select stu.name,stu.height FROM tb_students_info as stu;
这个取别名,体现在列名!在前面的学习中我们可以为列取别名,比如
select max(height) as max_height from tb_students_info;
查询指定行数
第一个参数“位置偏移量”指示mysql从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,依次类推);第二个参数“行数”指示返回的记录条数。
来例子加深影响
select * from tb_students_info limit 4;
偏移量从0开始。
select * from tb_students_info limit 3,5;
格式ORDER BY {<列名> | <表达式> | <位置>} [ASC | DESC]
,下面对语法格式说明
应该注意的方面:
select height as sort_height from tb_students_info order by height;
select height as sort_height,
name as sort_name from tb_students_info order by height ASC,name DESC;
语法格式如下:
WHERE <查询条件> {<判定运算1>,<判定运算2>...}
对于判定运算有以下分类:
常用的运算符就是对分类做详细的介绍,如果大家学过高级语言,一些通用的核可以不表示。最想强调的是<=>
这个叫做安全等与运算符
算术运算符+ - * / %
相信大家都在高级语言里见过,就不细表
其中有以下几种
这一部分就是将上面的讲过的进行单条件联系
select name,height from tb_students_info where height=166;
select * from tb_students_info where height>160 and age>20;
这个like模糊查询涉及到% 和 _
其中%
就是匹配任何字符串,给定位置可以是0,1或多个字符;同理_
就是匹配单个字符,体会例子。如果对匹配机制感兴趣,可以查看这篇博文,讲的是自动机理论匹配模式
js|正则表达式原理底层–有限状态机
select * from tb_students_info where name like 'G%';
select * from tb_students_info where name like '%e%';
select * from tb_students_info where name like '___y';
这个小节也是用之前的常用运算符进行练习,不过是对日期字段进行练习罢了。
select * from tb_students_info where login_date<'2016-10.25';
select * from tb_students_info where login_date between '2016-10-1' and '2016-10-15';