mysql aesc_SQL | SQL 必知必会笔记 (一 )

本文介绍了SQL的基本概念,包括关键字不区分大小写、空格忽略、多条语句以分号分隔等。讲解了如何使用SELECT从何处选择数据,选择单个或多个列,以及使用DISTINCT去除重复值。还详细阐述了如何限制结果集,如在不同数据库中使用TOP、FETCH、LIMIT和OFFSET等,并讲解了ORDER BY子句对数据进行排序的方法,包括多列排序和指定排序方向。此外,文章还介绍了WHERE子句用于过滤数据,包括等于、不等于、范围值和空值检查的操作符。
摘要由CSDN通过智能技术生成

基本概念

一些规则多条 SQL 语句必须以分号分隔。

SQL 不区分大小写,但一般习惯关键字用大写,列名和表名使用小写。

处理 SQL 语句时,所有空格都会被忽略。一般认为写成多行更容易维护。

选择多个列时,一定要在列名之间加上逗号,但最后一个列名不加。如果在最后一个列名加了逗号,会出现错误。

SQL 一般返回原始的、无格式的数据。

第一个检索的行是第 0 行,而不是第 1 行。

并非所有 SQL 实现方式 都一样。虽然基本的语句容易移植,但是较复杂的语句会有区别。

检索出来的数据默认是不排序,会以其在底层表中出现的顺序显示。

检索数据

SQL 语句是由简单的英语单词构成的。这些单词称为 关键字,每个 SQL 语句都是由一个或多个关键字构成的。使用 SELECT 关键字检索表数据,必须给出想选择什么(SELECT)和从什么地方选择两条信息(FROM)。

选择单个列

SELECT prod_name

FROM Products;

处理 SQL 语句时,所有空格都会被忽略。下面三个例子可以实现同样的效果,一般认为写成多行更容易维护。

# 语法1

SELECT prod_name

FROM Products;

# 语法2

SELECT prod_name FROM Products;

# 语法3

SELECT

prod_name

FROM

Products;

检索多个列

SELECT prod_id, prod_name, prod_price

FROM Products;

检索所有列

SELECT *

FROM Products;

实际列名的位置使用星号(*)通配符可以选择所有列。除非实际需要检索所有的列,不然检索不需要的列或降低检索和应用程序的性能。

检索不同的值

SELECT vend_id

FROM Products;

使用 DISTINCT 关键字只返回不同的(唯一的)值。

SELECT DISTINCT vend_id

FROM Products;

DISTINCT 关键字作用于所有列,不仅仅是跟在其后那一列。比如 SELECT DISTINCT vend_id, prod_id, prod_price 因为指定的两列不完全相同,所以所有的行都会被检索出来。

限制结果

默认显示所有满足条件的行,可以只显示指定的行吗?**可以,但是在不同数据库实现方式不同。

在 SQL Server 和 Access 中使用 SELECT 时,可以使用 TOP 关键字来限制最多返回的行。

SELECT TOP 5 prod_name

FROM Products;

如果使用 DB2 :

SELECT prod_name

FROM Products

FETCH FIRST 5 ROWS ONLY;

如果使用 Oracle ,需要基于 ROWNUM(行计数器)来计算行:

SELECT prod_name

FROM Products

WHERE ROWNUM > 5;

如果使用 MySQL,MariaDB,PostgreSQL或者 SQLite,则需要使用 LIMIT 子句:

SELECT prod_name

FROM Products

LIMIT 5;

返回第 5 行起的第 5 行数据。第一个数字是检索的行数,第二个数字是指从哪儿开始。

SELECT prod_name

FROM Products

LIMIT 5 OFFSET 5;

MySQL、MariaDB 和 SQLite 支持简化版的 LIMIT 4 OFFSET 3 语句,即 LIMIT 3,4 。

使用注释

行注释 1:注释使用 --(两个连字符)嵌在行内。

SELECT prod_name --这是一条注释

FROM Products;

行注释 2:使用 # 号

# 这是一条注释

SELECT prod_name

FROM Products;

块注释:使用 /* 和 */

/* SELECT prod_name, vend_id

FROM Products; */

SELECT prod_name

FROM Products;

排序检索数据

本节讲授如何使用 SELECT 的 ORDER BY 子句,根据需要排序检索数据。

排序数据

SELECT prod_name

FROM Products

ORDER BY prod_name;

/* ORDER BY prod_id;

也可以是非检索行排序*/

在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中的最后一条子句。

按多列排序

SELECT prod_id, prod_name, prod_price

FROM Products;

ORDER BY prod_price, prod_name;

上面的语句,首先按照价格,然后按名称排序。

按列位置排序

除了能用列名排序顺序外,ORDER BY 还支持按相对列位置进行排序。

SELECT prod_id, prod_name, prod_name

FROM Products

ORDER BY 2,3; --,2,3表示清单中的列;表示先按prod_price,再按prod_name排序

指定排序方向

默认使用升序排序(从 A 到 Z),通过指定 DESC (DESCENDING) 关键字实现降序排序。可以通过 AESC (AESCENDING)升序排序,但实际没有多大用处,因为默认就是使用升序排序。

SELECT prod_id, prod_name, prod_price

FROM Products

ORDER BY prod_price DESC;

DESC 只应用到直接位于其前面的列名。如果想在多个列上降序排序,必须对每一列指定 DESC 关键字。

SELECT prod_id, prod_name, prod_price

FROM Products

ORDER BY prod_price DESC, prod_name;

区分大小写和排序数据?在对文本数据排序的时候,A 和 a 是一样的吗?这不是理论问题,取决于数据库的设置。

过滤数据

本节讲授使用 WHERE 关键字指定搜索条件。

使用 WHERE 句子

只检索所需数据指定搜索条件(search criteria),搜索条件也被称为过滤条件(fliter condition)。

SELECT prod_name, prod_price

FROM Products

#检索 prod_price 为 3.49 的行

WHRER prod_price = 3.49;

注意:在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后。

WHERE 子句操作符

注意:<>和!=通常可以互换。但是并非所有 DBMS 都支持这两种不等于操作符。比如,Microsoft Access 支持 <> 而不支持 !=。

检查单个值与不匹配检查

SELECT prod_name, prod_price

FROM Products

WHERE prod_price <= 10;

# WHERE vend_id != 'DLL01';

范围值检查

SELECT prod_name, prod_price

FROM Products;

WHERE prod_price BEtween 5 AND 10;

空值检查

NULL 表示空值,确定是否空值,不能简单的 = NULL,SELECT 语句有一个特殊的 WHERE 子句 IS NULL ,可用来检查具有 NULL 值的列。

SELECT prod_name

FROM Products

WHERE prod_price IS NULL;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值