SQL从入门到入魔之select简单查询

准备数据:

/*新建学生表stu*/

create table stu(

id int not null PRIMARY key auto_increment comment'主键',

name varchar(12) comment'姓名',

age varchar(12)

 )

/*插入数据*/

insert into stu(id,name,age)values

(1001,'coco',18),

(1002,'sunny',19),

(1003,'rose',20),

  (1004,'jack',19);

一、SELECT语句

使用select查询表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。

#1.查询单个列:

select id from stu;

未排序数据 如果没有明确排序查询结果,可能会发现显示输出的数据顺序与原表不同,返回的数据的顺序没有特殊意义,可能是数据被添加到表中的顺序,也可能不是,只要返回相同数目的行就是正常的。

结束SQL语句 多条SQL语句以分号(;)分隔。

SQL语句和大小写 SQL语句不区分大小写,SELECT与select是相同的。同样,写成Select也没有关系。许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样使代码更易于阅读和调试。

使用空格和空行 在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行,多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。

#2.查询多个列:查询学生表的id,name两列的值

select id,name from stu;

在select关键字后给出多个列名,列名之间以逗号分隔,最后一个列名后不加逗号。

#3.查询所有列:查询学生表所有列的值

select * from stu;

使用*通配符 一般,除非确实需要表中的每个列,否则最好别使用*通配符。不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。

检索未知列 不明确指定列名(因为星号检索每个列),所以能检索出名字未知的列。

#4.查询不同的行(distinct去重):查询学生表所有学生的年龄

select distinct age from stu ;

使用DISTINCT关键字,它必须直接放在列名的前面。

不能部分使用DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列,除非指定的两个列都不同,否则所有行都将被检索出来。

#5.1 限制结果(limit分页):查询学生表前4行的学生ID

select id from stu limit 4;

#5.2 限制结果(limit m,n:从行m开始往后n行,第1行的m为0):查询学生表倒数三个学生的ID

select id from stu limit 1,3;

带一个值的LIMIT总是从第一行开始,给出的数为总的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。

行0开始 检索出来的第一行为行0而不是行1。因此,LIMIT 1, 1将检索出第二行而不是第一行。

行数不够时 LIMIT中指定要检索的行数为检索的最大行数,如果没有足够的行(例如,给出LIMIT 10, 5,但只有13行),MySQL将只返回它能返回的那么多行。

以上

That's all.

快来星标 置顶 关注

 T ester

原文地址:https://www.cnblogs.com/ITester520/p/13203408.html