SQL Syntax 入门(一)

本文介绍了SQL的基础语法,包括SELECT...FROM...、WHERE、ORDER BY、INSERT INTO、UPDATE和DELETE语句。适用于MySQL、SQL Server和MS Access等数据库,作为查询和操作数据库的参考。
部署运行你感兴趣的模型镜像

今天在W3school学习了SQL的Tutorial,便把要点记上一记。本文可以作为tutorial的类似等价物或者 Cheat Sheet,在忘记语法时可以作为参考。
话不多说,开始介绍 SQL的语法咯~

Introduction

SQL,全名 Structured Query Language,是一种用于改写、读写数据库的标准语言。不过SQL的版本有许多种,例如 MySQL, SQL Server, and MS Access。尽管它们各自的语法有一些微妙的不同,它们仍然有许多共通之处。例如 SELECT, UPDATE, DELETE, INSERT, WHERE。

Syntax

SELECT…FROM…

-- 语法格式
SELECT column1, column2, ...
FROM table_name;```
-- 例子
-- 选取所有数据
SELECT * FROM Customers;
--从Customers中选取 Column名为 CustomerName, City的数据
SELECT CustomerName, City FROM Customers;

如果希望选取不同的元素,使用 DISTINCT

-- 语法格式
SELECT DISTINCT column1, column2, ...
FROM table_name;
-- 实例:
SELECT DISTINCT Country FROM Customers;

WHERE…

如果希望加上其它筛选条件:

-- 语法格式
SELECT column1, column2, ...
FROM table_name
WHERE condition;
-- 实例:
SELECT * FROM Customers
WHERE Country='Mexico';
-- 注意,当筛选条件为 Numerical(数字)的时候,可以省略引号
SELECT * FROM Customers
WHERE CustomerID=1; -- This is equivalent to CustomerID="1"

值得一提的是,我们对于WHERE里的 Condition有如下合法操作:

OperatorDescription
=Equal
>Greater than
<Less than
>=Greater than or equal
<=Less than or equal
<>Not equal. Note: In some versions of SQL this operator may be written as !=
BETWEENBetween a certain range
LIKESearch for a pattern
INTo specify multiple possible values for a column

为了更好地 Filter数据,我们在 condition里面可以通过 AND, OR, NOT的操作来缩小/扩大筛选范围。

-- AND 例子
SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';
-- OR 例子
SELECT * FROM Customers
WHERE City='Berlin' OR City='München';
-- NOT 例子
SELECT * FROM Customers
WHERE NOT Country='Germany'; -- This is equivalent to: WHERE Country <> 'Germany'
-- 当然,这三个操作可以合并起来使用。例如:
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');

ORDER BY

我们常常会遇到需要将数据按照某个标准排序的需求。这就要我们使用 Order by了

-- 语法格式
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC; 
-- by ascending(ASC) order or descending(DESC) order
-- 例子:
SELECT * FROM Customers
ORDER BY Country; 
-- 默认排序方式是从小到大或者从 A到Z。故此语句等同于 ORDER BY Country ASC
SELECT * FROM Customers
ORDER BY Country DESC; -- 按照字母表降序排列

在讨论了通过某一 Column排序之后,我们讨论如何通过多个 Column排序。这样的需求是可能的,例如:在对顾客通过年龄排序后,我们希望通过首字母降序/升序排列。

-- 例子
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

INSERT INTO

在我们获得新的数据后,有写入数据库的需求。

-- 语法格式
-- 在特定的 column插入对应值
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-- 如果所有 column都有可以插入的值(或:值不缺失)
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
-- 例子:
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

注意,如果我们在写入数据时,某一行有数据缺失,那么该 entry将会得到 null value。它不支持 Comparison Operators 例如 >, <, <>。
对 null value可以做的合法操作:

-- IS NULL
FROM Customers
WHERE Address IS NULL;
-- IS NOT NULL
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;
-- For MySQL, use IFNULL function, which returns the set default value if the argument is NULL
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;

UPDADE

修改数据库。

-- 语法格式
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
-- 例子:将 CustomerID为1的 record的 ContactName和 City修改
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
-- 例子:将 Country为'Mexico'的 record的 ContactName修改 (可能不止一个 record)
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

WARNING: 如果丢失 WHERE condition, 语句会改写所有数据!!!

DELETE

删除数据库中已有的数据。

-- 语法格式
DELETE FROM table_name WHERE condition;
-- 例子
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
-- 我们也可以删除 所有数据:
-- 语法格式
DELETE FROM table_name;
-- 实例
DELETE FROM Customers;

End

对于 SQL Syntax的基础语法介绍就先到这里。下一篇文章会谈一谈(稍微更加)advanced的SQL语法。

出处:https://www.w3schools.com/sql/default.asp
(本文全篇 Credit to W3School,仅仅是原Tutorial的重新整理罢了)

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值