SQL in 10 Minutes总结

这篇博客总结了SQL的基础操作,包括检索数据、排序、过滤、创建计算字段、使用函数、分组数据等。在检索中,讲解了如何选择单列、多列、所有列以及使用DISTINCT和LIMIT。数据排序涉及按列、多个列和位置,过滤数据则用到WHERE子句。还介绍了如何创建计算字段、应用各种函数,如文本和数值处理函数以及聚集函数。在表的管理上,阐述了创建、更新和删除表的操作,并提及视图的创建和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

检索

检索数据

  • 检索单列

    SELECT prod_name
    FROM Products;
    
  • 检索多列

    SELECT prod_id, prod_name, prod_price
    FROM Products;
    
  • 检索所有列(降低检索和应用程序性能)

    SELECT *
    FROM Products;
    
  • DISTINCT,指示数据库只返回不同的值

    SELECT DISTINCT vend_id
    FROM Products;
    
  • 限制结果,LIMITOFFSET

    SELECT prod_name
    FROM Products
    LIMIT 5 OFFSET 6;
    

    检索返回从第 6 行起第 5 行数据

检索条件SELECT 语句说明
单列SELECT prod_name
多列SELECT prod_id, prod_name, prod_price
所有列SELECT *
不同的值SELECT DISTINCT vend_id
限制结果LIMIT 5 OFFSET 6

数据排序

  • 按列排序

    SELECT prod_name
    FROM Products
    ORDER BY prod_name;
    
  • 按多个列排序

    SELECT prod_id, prod_name, prod_price
    FROM Products
    ORDER BY prod_price, prod_name;
    
  • 按位置排序

    SELECT prod_id, prod_name, prod_price
    FROM Products
    ORDER BY 2, 3;
    
  • 降序排序 DESC

    SELECT prod_id, prod_name, prod_price
    FROM Products
    ORDER BY prod_price DESC;
    
  • 升序 ASC

过滤数据

使用 WHERE 子句

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
操作符说明WHERE 子句子句说明
=WHERE prod_price = 3.49
<>不等于
!=不等于
<
<=
!<不小于
>
>=
!>不大于
BETWEEN在指定的两个值之间WHERE prod_price BETWEEN 5 AND 10
IS NULL为 NULL 值WHERE prod_price IS NULL返回没有价格的产品
AND并且WHERE vend_id = 'DLL01' AND prod_price <= 4返回 vend_id 是 DLL01 并且 prod_price 小于等于 4 的行
OR或者WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
IN指定范围WHERE vend_id IN ( 'DLL01', 'BRS01' )
NOTWHERE NOT vend_id = 'DLL01'
LIKE通配符
%任何字符出现任意次数WHERE prod_name LIKE 'Fish%'找出所有以Fish开头的产品_
WHERE prod_name LIKE '%Fish%'包含Fish的值
_单个字符WHERE prod_name LIKE '__Fish'abFish将被匹配
[]字符集WHERE prod_name LIKE '[FH]ish'Fish、Hish将被匹配

创建计算字段

拼接 ConcatSELECT Concat(vend_name, ' (' , vend_country, ')')
别名 ASSELECT Concat(vend_name, ' (' , vend_country, ')') AS vend_title
执行算术计算( ±*/)SELECT a, b, a*b AS c

函数

文本处理函数

函数说明
LEFT()
LENGTH()
LOWER()
LTRIM()
RIGHT()
RTRIM
SOUNDEX
UPPER

数值处理函数

函数说明
ABS()
COS()
EXP()
PI()
SIN()
SQRT()
TAN()

聚集函数

函数说明
AVG()返回某列的平均值
COUNT()行数
MAX()最大值
MIN()最小值
SUM()
SELECT AVG(prod_price) AS avg_price

分组数据

  • GROUP BY子句创建分组

    SELECT vend_id, COUNT(*) AS num_prods
    FROM Products
    GROUP BY vend_id;
    

    SELECT 指定两列,GROUP BY 子句 指示 DBMS 按 vend_id 排序并分组数据,在每组内执行 计算字段

  • HAVING 过滤分组

    SELECT vend_id, COUNT(*) AS num_prods
    FROM Products
    GROUP BY vend_id
    HAVING COUNT(*) >= 2;
    

    在创建分组的基础上,执行 HAVING 过滤分组 条件,获取 num_prods 大于等于 2 的分组

插入数据

创建和更新表

创建表

使用 CREATE TABLE 创建表

  • 表名:Products
  • 表列的名字和定义

格式:

CREATE TABLE tablename
(
    column datatype [NULL|NOT NULL] [CONSTRAINTS]
)

示例:

CREATE TABLE Products
(
    prod_id      CHAR(10)      NOT NULL,
    vend_id      CHAR(10)      NOT NULL,
    prod_name    CHAR(254)     NOT NULL,
    prod_price   DECIMAL(8,2)  NOT NULL,
    prod_desc    VARCHAR(1000) NULL
);

更新表

使用 ALTER TABLE 更新表

格式:

ALTER TABLE tablename
(
    ADD|DROP column datatype [NULL|NOT NULL] [CONSTRAINTS],
)

示例:

ALTER TABLE Vendors
ADD vend_phone CHAR(20);

删除表

格式:

DROP TABLE tablename;

视图

创建视图

格式:

CREATE VIEW viewname AS
SELECT column, ...
FROM tables, ...
[WHERE ...]
[GROUP BY ...]
[HAVING ...]

删除视图

DROP VIEW viewname;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值