当前位置: 首页 > news >正文

SQL 语法

好的,下面是对 SQL 语法的简洁总结,涵盖了常见的 SQL 操作和基本语法结构。

创建一个表 (CREATE TABLE)

首先,我们需要创建一个表 users,如果还没有的话:
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), age INT );
这条语句创建了一个名为 users 的表,包含三个字段:id(整数类型,主键)、name(最大长度为 100 的字符串)和 age(整数类型)。

1. SELECT 语句

用于从数据库表中查询数据。
语法:
SELECT column1, column2, ... FROM table_name WHERE condition ORDER BY column1 [ASC|DESC] LIMIT number;
  • SELECT:指定要查询的列。
  • FROM:指定查询的数据来源表。
  • WHERE:条件过滤,只返回满足条件的记录。
  • ORDER BY:排序,ASC 为升序,DESC 为降序。
  • LIMIT:限制返回的记录数。
示例:
SELECT name, age FROM users WHERE age > 20 ORDER BY age DESC LIMIT 5;
解释:
  • SELECT name, age:查询 users 表中的 name 和 age 列。
  • FROM users:数据来自 users 表。
  • WHERE age > 20:条件是只查询 age 大于 20 的用户。
  • ORDER BY age DESC:按照 age 列的降序排列查询结果,年龄大的排在前面。
  • LIMIT 5:限制查询结果最多返回 5 条记录。
意思:从 users 表中查询所有 age 大于 20 的用户的名字和年龄,并按年龄降序排列,最多返回前 5 条记录。

2. INSERT INTO 语句

用于向表中插入数据。
语法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  • INSERT INTO:指定要插入数据的表。
  • VALUES:指定插入的值。
示例:
INSERT INTO users (name, age) VALUES ('Alice', 30);
解释:
  • INSERT INTO users:向 users 表插入数据。
  • (name, age):插入数据的列名,分别是 name 和 age。
  • VALUES ('Alice', 30):插入的具体值,name 为 'Alice',age 为 30。
意思:向 users 表插入一条新记录,其中 name 是 'Alice',age 是 30。

3. UPDATE 语句

用于更新表中现有的记录。
语法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
  • UPDATE:指定要更新的表。
  • SET:指定更新的列和新值。
  • WHERE:限定更新的记录。
示例:
UPDATE users SET age = 31 WHERE name = 'Alice';
解释:
  • UPDATE users:更新 users 表的数据。
  • SET age = 31:将 age 列的值更新为 31。
  • WHERE name = 'Alice':只更新 name 为 'Alice' 的用户的记录。
意思:将 users 表中名字为 'Alice' 的用户的年龄更新为 31。

4. DELETE 语句

用于删除表中的记录。
语法:
DELETE FROM table_name WHERE condition;
  • DELETE FROM:指定要删除记录的表。
  • WHERE:限定删除的记录。
示例:
DELETE FROM users WHERE age < 18;
解释:
  • DELETE FROM users:从 users 表中删除数据。
  • WHERE age < 18:只删除 age 小于 18 的记录。
意思:删除 users 表中所有年龄小于 18 的用户记录。

5. JOIN 语句

用于连接多个表,通过某个公共列来组合数据。
语法:
SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column_name = table2.column_name;
  • JOIN:指定要连接的表。
  • ON:指定连接条件。
示例:
SELECT users.name, orders.order_date FROM users INNER JOIN orders ON users.id = orders.user_id;
解释:
  • SELECT users.name, orders.order_date:查询 users 表中的 name 列和 orders 表中的 order_date 列。
  • FROM users:数据来自 users 表。
  • INNER JOIN orders:将 users 表与 orders 表进行内连接。
  • ON users.id = orders.user_id:连接条件是 users 表的 id 列与 orders 表的 user_id 列匹配。
意思:查询所有用户的姓名和他们的订单日期,连接条件是 users.id 和 orders.user_id 相等(即用户与他们的订单进行匹配)。

6. GROUP BY 语句

用于对查询结果进行分组,通常配合聚合函数使用(如 COUNT、SUM)。
语法:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
  • GROUP BY:根据指定的列对数据进行分组。
示例:
SELECT age, COUNT(*) FROM users GROUP BY age;
解释:
  • SELECT age, COUNT(*):查询 age 列,并计算每个年龄段的用户数。
  • FROM users:数据来自 users 表。
  • GROUP BY age:按 age 列对数据进行分组。
意思:统计 users 表中每个年龄段的用户数量。例如,输出类似:20岁有 5 个用户,25岁有 8 个用户等。

7. ORDER BY 语句

用于对查询结果进行排序。
语法:
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC];
  • ORDER BY:指定排序的列,ASC 升序,DESC 降序。
示例:
SELECT name, age FROM users ORDER BY age DESC;
解释:
  • SELECT name, age:查询 users 表中的 name 和 age 列。
  • FROM users:数据来自 users 表。
  • ORDER BY age DESC:按 age 列进行排序,DESC 表示降序(从大到小)。
意思:查询 users 表中的 name 和 age,并按年龄降序排列,年龄较大的用户排在前面。

8. LIMIT 语句

用于限制查询结果返回的记录数量。
语法:
SELECT column1, column2, ... FROM table_name LIMIT number;
  • LIMIT:限制查询结果返回的记录数。
示例:
SELECT name, age FROM users LIMIT 5;
解释:
  • SELECT name, age:查询 users 表中的 name 和 age 列。
  • FROM users:数据来自 users 表。
  • LIMIT 5:限制查询结果返回 5 条记录。
意思:查询 users 表中的前 5 条记录,返回 name 和 age。

总结:

每个 SQL 语句示例都对应一个具体的操作或查询,它们的目的是:
  • SELECT:查询数据。
  • INSERT INTO:插入数据。
  • UPDATE:更新数据。
  • DELETE:删除数据。
  • JOIN:连接表。
  • GROUP BY:分组数据。
  • ORDER BY:排序数据。
  • LIMIT:限制结果的行数。
这些操作可以灵活组合,满足各种数据库管理和数据分析的需求。
SQL 语句的基本结构通常由:
  • 动词(Verb):表示操作类型(如 SELECT、INSERT、UPDATE、DELETE)。
  • 主语(Subject):指定要操作的表和列。
  • 谓语(Predicate):用于定义操作条件、排序和限制等。
SQL 是一种功能强大的查询语言,用于操作数据库中的数据。通过灵活使用各种 SQL 语句,你可以高效地管理和分析数据库中的数据。

相关文章:

  • Rust实现高性能目录扫描工具ll的技术解析
  • 【优秀三方库研读】【C++基础知识】odygrd/quill -- 折叠表达式
  • 功能脑网络较新的方法[和ai讨论的方向和学习资源]
  • SQLPandas刷题(LeetCode3451.查找无效的IP地址)
  • linux嵌入式(进程与线程1)
  • react 子组件暴露,父组件接收
  • Redis持久化机制深度解析:RDB、AOF与混合持久化
  • 计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
  • (第一篇)Springcloud简介与工程搭建
  • Winddows11官网下载安装VMware Workstation Pro17(图文详解)
  • Redis LFU 策略参数配置指南
  • 【C++基础知识】namespace前加 inline
  • 初识Redis · 主从复制(上)
  • 10天学会嵌入式技术之51单片机-day-8
  • Kotlin Multiplatform--01:项目结构基础
  • ctfhow——web入门214~218(时间盲注开始)
  • 【FAQ】安装Agent的主机,为何不能更改显示分辨率
  • SQL Server 2008 R2中varchar(max)的含义
  • Hive 数据同步到 Doris 最佳实践方案:从场景适配到性能调优全解析
  • Python3 基础:控制流结构(条件语句、循环)
  • 政治局会议:优化存量商品房收购政策,持续巩固房地产市场稳定态势
  • 中越海警2025年第一次北部湾联合巡逻圆满结束
  • “70后”女博士张姿卸任国家国防科技工业局副局长
  • 法治日报:强制统一店铺广告牌匾事件何以频发?
  • 开发国内首个泌尿专科智能体,医生们将临床经验转变为知识图谱
  • 视频丨普京称积极对待任何和平倡议