SQL (一) select语句(最常用的SQL语句)

  • Post author:
  • Post category:其他

检索一列(不过滤不排序)

SELECT prod_name FROM Products;

select后面是列名,from后面是表名
在这里插入图片描述
返回了所有行,因为没指定顺序,所以没有顺序,行数对就行
在这里插入图片描述
所以关键字可以小写

select prod_price from Products;

甚至这么写都可以::::

seleCt prod_price from Products;

我发现mysql对于表,列名也是不区分大小写的:(其他DBMS不一定)

seleCt prod_desC from pRoducts;

还是正确拿到了结果
在这里插入图片描述

注意SQL语言忽略所有空格,所以可以这么写:

select 
prod_name
from 
products;

或者这样

select 
prod_name from 
products;

都正确

而且很多SQL开发人员都觉得写成多行多便于阅读和调试,他们不赞成写成长长的一行

检索多列 (逗号)

在这里插入图片描述

select prod_id, prod_name, prod_price 
from products;

在这里插入图片描述

检索所有列(*通配符)

select * from products;

在这里插入图片描述在这里插入图片描述
通配符有好有坏,如果明确知道自己要检索的是哪些列就不用*,如果想知道有哪些你还不知道名字的列就可以用。双刃剑。

注意SQL检索语句返回的数据一般是没有格式的,我们看到的格式是workbench做的工作和贡献。平时访问数据库也是,返回的数据需要应用程序自己来调整显示格式。

检索时显示唯一值(distinct关键字)

select vend_id 
from products;

因为有9种产品,所以显示了9行,但是有一些产品的供应商是一样的,所以我想只显示唯一值,只返回一列中不同的值
在这里插入图片描述

select distinct vend_id 
from products;

在这里插入图片描述

但是distinct关键字作用于后面的所有列,只要有两列不一样,就会显示所有行

select vend_id, prod_id
from products;

在这里插入图片描述

限制只输出某几行(limit,offset,不同DBMS实现不同)

只输出前5行,使用limit关键字

select prod_name 
from products
limit 5;

在这里插入图片描述

返回从第5行开始(包括第5行)的5行数据(行号从0开始)

select prod_name 
from products
limit 5 offset 5;

由于一共只有9行,所以只返回4行
在这里插入图片描述

总结:

  • limit指定返回的行数
    limit后面是0 ,则返回0行;后面是1则返回1行
select prod_name 
from products
limit 0 offset 1;

在这里插入图片描述

select prod_name 
from products
limit 1 offset 1;

在这里插入图片描述

  • offset指定返回的行是从哪一行开始的,包含offset后面的数字那一行,注意行数从0开始

比如lIimit 5 offset 5,返回5行,从第5行开始,所以返回的是5,6,7,8行。因为一共只有9行,最大行号为8,所以只返回了4行

返回第0行

select prod_name 
from products
limit 1 offset 0;

在这里插入图片描述

但是!在这里可以引入一个很重要的点!!!那就是:不同的DBMS软件的SQL实现会有很多小的差异!比如这节说的这个功能,选中间某几行,在mysql使用limit和offset关键字实现的,但是其实在其他DBMS中都不一样!
在这里插入图片描述在这里插入图片描述在这里插入图片描述

注释

  • 行内注释:两个连字符–
    也有人像Python那样用#表示行内注释,但是很多DBMS都不支持
select prod_name 
from products
limit 1 offset 0;
-- select prod_id from products;

第二条注释,就执行第一行。其实本来只会执行第二行的。
在这里插入图片描述
注意–后面一定要加空格,否则报错

  • 多行注释:/**/,和C一样
select prod_name 
from products
limit 1 offset 0;
/*select prod_id from products;
select prod_price from products;*/

在这里插入图片描述

总结

涉及关键字:

  • select
  • from:其实from是select语句的子句(clause)
  • limit
  • offset
  • distinct

用到了逗号分隔符,*通配符

明白了不同DBMS对SQL的实现的差异


版权声明:本文为qq_36607894原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。