肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!

INSERT INTO 插入语句

该INSERT INTO语句用于在表中插入新记录。

INSERT语法

可以INSERT INTO 用两种方式编写语句:

1- 指定要插入的列名和值:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

2-如果要为表的所有列添加值,则无需在 SQL 查询中指定列名。但是,请确保值的顺序与表中的列顺序相同。在这里, INSERT INTO语法如下:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

我们假设还是有着样一个Customers表:

1.png

INSERT示例

以下 SQL 语句在“Customers”表中插入一条新记录:

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

运行显示如下:

image.png


练习:

表中插入一条新记录。

INSERT INTO Customers 
(
CustomerName, 
Address, 
City, 
PostalCode,
Country
)
VALUES
(
'Hekkan Burger',
'Gateveien 15',
'Sandnes',
'4306',
'Norway'
)
;

NULL 空值

具有 NULL 值的字段是没有值的字段。如果表中的字段是可选的,则可以在不向该字段添加值的情况下插入新记录或更新记录。然后,该字段将保存为 NULL 值。

注意: NULL 值不同于零值或包含空格的字段。具有 NULL 值的字段是在创建记录期间留空的字段!

如何测试 NULL 值?

无法使用比较运算符(例如 =、< 或 <>)测试 NULL 值。我们将不得不改用IS NULL和 IS NOT NULL运算符。

IS NULL 语法

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL 语法

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

我们还是以”Customers”表为例子:

1.png

IS NULL 运算符

列出了 "Address"字段中具有 NULL 值的所有客户:

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

提示:始终使用 IS NULL 来查找 NULL 值。

IS NOT NULL 运算符

该IS NOT NULL运算符用于测试非空值(NOT NULL 值)。

列出了在 "Address”字段中具有值的所有客户:

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

练习:

从列为空的Customers位置选择所有记录PostalCode。

SELECT * FROM Customers
WHERE PostalCode IS NULL;

UPDATE更新语句

UPDATE语句用于修改表中的现有记录。

UPDATE 语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

注意: 更新表中的记录时要小心!注意 WHERE语句中的子句UPDATE。该WHERE子句指定应该更新哪些记录。如果省略该WHERE子句,表中的所有记录都将被更新!

我们还是以“Customers”表为例:

1.png

更新表

更新CustomerID = 1的用户名字和城市数据

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

更新过后将会如下:

1.png

更新多条记录

该WHERE子句确定将更新多少条记录。

将国家为"Mexico"的所有记录的 ContactName 更新为“Juan”:

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

更新后将会变成:

1.png

更新警告!

更新记录时要小心。如果省略该 WHERE子句,则所有记录都将被更新!

例如:

UPDATE Customers
SET ContactName='Juan';

则会导致如下结果:1.png

练习:

更新表City中所有记录的Customers列。

UPDATE Customers
SET City = 'Oslo';

DELETE删除语句

该DELETE语句用于删除表中的现有记录。

删除语法

DELETE FROM table_name WHERE condition;

注意: 删除表中的记录时要小心!注意 WHERE语句中的子句 DELETE。该WHERE条款指定应删除哪些记录。如果省略该WHERE子句,表中的所有记录都将被删除!

哈哈哈哈,我们还是以“Customers”表为例子如下:

1.png

删除示例

从“Customers”表中删除客户“Alfreds Futterkiste”:

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

于是就变成这样:

1.png

删除所有记录

可以在不删除表的情况下删除表中的所有行。这意味着表结构、属性和索引将保持不变

DELETE FROM table_name;

例如:删除“Customers”表中的所有行,但不删除该表:

DELETE FROM Customers;

练习:从Customers表中删除Country值为“挪威”的所有记录。

DELETE FROM Customers
WHERE Country = 'Norway';

TOP、LIMIT、FETCH FIRST 或 ROWNUM限制子句

SELECT TOP 子句

SELECT TOP子句用于指定要返回的记录数。SELECT TOP子句在具有数千条记录的大表上很有用。返回大量记录会影响性能。

注意: 并非所有数据库系统都支持该 SELECT TOP子句。MySQL 支持LIMIT子句选择有限数量的记录,而 Oracle 使用FETCH FIRST n ROWSONLYROWNUM

Server / MS 访问语法:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

MySQL 语法:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

Oracle 12 语法:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;

比如还是“Customers”表如下

1.png

TOP、LIMIT 和 FETCH FIRST示例

从 "Customers表中选择前三个记录(用于 SQL Server/MS Access):

SELECT TOP 3 * FROM Customers;

MySQL 的等效示例:

SELECT * FROM Customers
LIMIT 3;

Oracle 的等效示例:

SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;

TOP PERCENT 示例

从"Customers“表中选择前 50% 的记录(用于 SQL Server/MS Access):

SELECT TOP 50 PERCENT * FROM Customers;

Oracle 的等效示例:

SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;

添加 WHERE 条款

从“Customers”表中选择前三个记录,其中国家是“Germany”(对于 SQL Server/MS Access):

SELECT TOP 3 * FROM Customers
WHERE Country='Germany';

MySQL 的等效示例

SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;

Oracle 的等效示例:

SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
SQL 存储 数据库
新建数据集SQL命令详解及技巧
在数据库管理中,新建数据集(即创建新表)是常见的操作之一
|
1月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
1月前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
1月前
|
SQL 安全 关系型数据库
sql注入原理和sqlmap命令的基础命令以及使用手法
sql注入原理和sqlmap命令的基础命令以及使用手法
|
2月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
3月前
|
SQL 数据处理 数据库
|
3月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 数据库 开发者
深入理解SQL中的ALIAS命令
【8月更文挑战第31天】
84 0