SQL常用语法详解

SQL 常用语法详解:数据库开发者的基础指南

Structured Query Language(SQL)是管理和操作关系型数据库的标准语言,广泛应用于数据查询、数据操控和数据库管理。无论是构建数据库、查询数据,还是更新表格,SQL 都是数据库开发者的核心工具。本文将详细介绍一些常用的SQL语法,帮助初学者掌握其基本操作。


1. SQL 查询:SELECT 语句

SQL 查询是从数据库中提取数据的最常用操作,基本的语法格式是:

SELECT 列名1, 列名2 FROM 表名 WHERE 条件;
  • SELECT *:提取表中的所有列。
  • WHERE:筛选符合特定条件的行。
  • ORDER BY:对结果按指定列排序。
  • LIMIT:限制返回的结果数。

示例:查询所有年龄大于25的用户,并按年龄降序排列。

SELECT name, age 
FROM users 
WHERE age > 25 
ORDER BY age DESC 
LIMIT 10;

2. 插入数据:INSERT INTO

INSERT INTO 用于向表中添加新数据,语法如下:

INSERT INTO 表名 (列名1, 列名2, ...)
VALUES (1,2, ...);
  • 插入数据必须与表的列结构匹配。

示例:向 users 表中插入一条新记录:

INSERT INTO users (name, age, email) 
VALUES ('Alice', 28, 'alice@example.com');

3. 更新数据:UPDATE

UPDATE 语句用于修改表中的数据,语法如下:

UPDATE 表名
SET 列名1 =1, 列名2 =2, ...
WHERE 条件;
  • WHERE 是可选的,但非常重要,因为未指定条件时会更新表中的所有记录。

示例:更新用户 Alice 的年龄:

UPDATE users 
SET age = 29 
WHERE name = 'Alice';

4. 删除数据:DELETE

DELETE 语句用于删除表中的记录,基本语法为:

DELETE FROM 表名 WHERE 条件;
  • 注意:没有 WHERE 子句的 DELETE 会删除表中的所有行。

示例:删除年龄小于18的用户记录:

DELETE FROM users 
WHERE age < 18;

5. 创建表:CREATE TABLE

创建新表时使用 CREATE TABLE 语句,语法格式为:

CREATE TABLE 表名 (列名1 数据类型 约束,列名2 数据类型 约束,...
);
  • 每个列都要指定数据类型(如 INT, VARCHAR, DATE 等)。
  • 可以定义约束,如 PRIMARY KEY, NOT NULL, UNIQUE

示例:创建一个 employees 表:

CREATE TABLE employees (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,position VARCHAR(50),hire_date DATE
);

6. 修改表:ALTER TABLE

ALTER TABLE 语句用于修改现有表的结构,如添加或删除列:

ALTER TABLE 表名 
ADD 列名 数据类型 约束;

示例:为 employees 表添加 salary 列:

ALTER TABLE employees 
ADD salary DECIMAL(10, 2);

7. 连接表:JOIN

JOIN 允许从多个表中联合查询数据,常见的连接类型有:

  • INNER JOIN:只返回两表中匹配的数据。
  • LEFT JOIN:返回左表所有记录及其匹配数据。
  • RIGHT JOIN:返回右表所有记录及其匹配数据。
  • FULL JOIN:返回两表中所有匹配和不匹配的数据。

示例:将 orders 表和 customers 表连接,获取每个订单及其客户信息:

SELECT orders.order_id, customers.name, customers.email 
FROM orders 
INNER JOIN customers ON orders.customer_id = customers.customer_id;

8. 聚合函数与分组:GROUP BYHAVING

SQL 提供了多种聚合函数来统计数据,如 COUNT(), SUM(), AVG(), MIN(), MAX()。通过 GROUP BY 对数据进行分组,并使用 HAVING 过滤聚合结果。

示例:统计每个职位的员工数量:

SELECT position, COUNT(*) AS num_employees 
FROM employees 
GROUP BY position
HAVING COUNT(*) > 1;

9. 子查询(Subqueries)

子查询是在查询中嵌套另一个查询,用于复杂的查询操作。

示例:查询员工数量大于 10 的部门:

SELECT department_name 
FROM departments 
WHERE (SELECT COUNT(*) FROM employees WHERE employees.department_id = departments.department_id) > 10;

10. 视图:CREATE VIEW

VIEW 是一个虚拟表,基于 SQL 查询生成,可以像表一样进行查询。视图可以简化复杂的查询,提升可读性。

示例:创建一个显示高薪员工的视图:

CREATE VIEW high_salary_employees AS 
SELECT name, salary 
FROM employees 
WHERE salary > 10000;

11. 事务控制:BEGIN, COMMIT, ROLLBACK

事务确保一组操作要么全部执行成功,要么全部回滚到操作前的状态。主要的事务控制命令包括:

  • BEGIN TRANSACTION:启动事务。
  • COMMIT:提交事务,确认更改。
  • ROLLBACK:回滚事务,撤销更改。

示例:在事务中更新两张表,确保数据一致性:

BEGIN TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;COMMIT;

12. 索引:CREATE INDEX

索引用于加速查询,提高数据检索的速度。常用于查询频繁的列。

示例:为 employees 表的 name 列创建索引:

CREATE INDEX idx_name ON employees(name);

SQL 是数据管理的核心语言,掌握常用的 SQL 语法对于数据库开发与维护至关重要。本文介绍了从数据查询、插入、更新、删除,到更复杂的连接、分组、子查询等操作,帮助读者全面了解SQL的基本功能。SQL 在实际应用中非常灵活,可以用于复杂的数据操作和分析,是每个开发者和数据工程师必备的技能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145197.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网站SEO,该如何规范目标网站URL配置!

随着互联网技术的飞速发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;在网站建设和运营中的重要性日益凸显。优化目标网站的URL配置&#xff0c;作为SEO策略中的关键环节&#xff0c;对于提升网站在搜索引擎中的排名和曝光度具有至关重要的作用。大连蝙蝠侠科技将从U…

掌握IT资产发现的三个步骤

IT 资产生态系统非常复杂&#xff0c;因为资产不断变化&#xff0c;包括新增资产、移除过时资产或修改现有资产。在这种动态环境中&#xff0c;IT 资产管理者很难全面查看所有拥有的资产。 根据Gartner的预测&#xff0c;到 2025 年&#xff0c;大约 30% 的关键基础设施组织将…

Hutool树结构工具-TreeUtil构建树形结构

1 pom.xml <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.26</version> </dependency> 2 核心代码 import cn.beijing.satoken.domain.ZhiweiCityArea; import cn.beijing.sa…

机器人上的DPDK使用思考

引言 项目背景 人形机器人作为智能技术的集大成者&#xff0c;正逐步从科幻电影走进现实生活&#xff0c;广泛应用于工业制造、医疗健康、家庭服务等多个领域。在这一发展过程中&#xff0c;传感器技术的飞速发展和物联网技术的广泛应用&#xff0c;极大地提升了人形机器人对…

【AI视频】Runway:Gen-2 运镜详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;Camera Control&#xff08;运镜&#xff09;&#x1f4af;Camera Control功能测试Horizonta&#xff08;左右平移&#xff09;Vertical&#xff08;上下平移&#xff0…

双token无感刷新

文章目录 &#x1f7e2;双token无感刷新1、token过期续期的五种方案对比2、双token的基本概念3、双token无感刷新的原理4、双token无感刷新的实现方式5.前端实现 ✒️总结 &#x1f7e2;双token无感刷新 对于token无感刷新这个东西有复杂度的话&#xff0c;它主要在后端&#x…

【使用Hey对vllm接口压测】模型并发能力

使用Hey对vllm进行模型并发压测 docker run --rm --networkknowledge_network \registry.cn-shanghai.aliyuncs.com/zhph-server/hey:latest \-n 200 -c 200 -m POST -H "Content-Type: application/json" \-H "Authorization: xxx" \-d {"model"…

如何查询论文的SCI检索号?

一、登录Web of Science 不要自己登录&#xff0c;需要选择机构为CHINA CERNET Federation&#xff0c;否则无法查询文章。 然后转到机构&#xff0c;选择对应的大学。 更具对应文章名查询文献。 二、查询文献名

CUDA并行架构

一、CUDA简介 CUDA(Compute Unified Device Architecture)是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU(Graphics Processing Unit)能够对复杂的计算问题做性能速度优化。 二、串并行模式 高性能计算的关键是利用多核处理器进行并行计算。 串行模式&#…

使用Anaconda安装pyTorch

1.Anaconda简介 Anaconda 是一个流行的 Python 数据科学和机器学习平台&#xff0c;它简化了包管理和部署&#xff0c;使得安装、运行和升级包及其依赖变得非常容易。Anaconda 通过其内置的 Conda 包和环境管理器&#xff0c;提供了一个强大的环境&#xff0c;用于科学计算&…

鸿蒙手势交互(四:多层手势)

四、多层手势 指父子组件嵌套时&#xff0c;父子组件均绑定了手势或事件。有两种&#xff0c;一种默认多层级手势事件&#xff0c;一种自定义多层级手势事件。 默认多层级手势事件&#xff1a;需要分清两个概念&#xff0c;触摸事件&#xff0c;手势与事件 触摸事件&#xf…

介绍个酷炫,适合装逼的命令

Hollywood - 给你的命令行加点魔法般的动画效果 作为命令行的重度用户,你是否想让枯燥的终端界面来点生动有趣的元素?Hollywood来了!这是一个无比诙谐、小巧玲珑而又功能强大的动画效果命令行工具。 Hollywood可以为文本添加各种动画效果,让你的输出显示得像电影般生动活泼。…

powerbi -L10-文件夹内的文件名

powerbi -L10-文件夹内的文件名 Folder.Contents letSource Folder.Contents("\\your_folder\ your_folder "),#"Removed Other Columns" Table.SelectColumns(Source,{"Name", "Date modified", "Folder Path"}), in#&q…

小新-13 2019 Intel款IML版【81UQ】原装出厂Win10系统镜像下载

恢复lenovo联想开箱状态&#xff0c;自带预装OEM系统安装包 链接&#xff1a;https://pan.baidu.com/s/1wwPriBoIwNOAfL-YcX1F7g?pwdg7ki 提取码&#xff1a;g7ki 联想原装出厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软…

视频单目标跟踪研究

由于对视频单目标跟踪并不是很熟悉&#xff0c;所以首先得对该领域有个大致的了解。 视频目标跟踪是计算机视觉领域重要的基础性研究问题之一&#xff0c;是指在视频序列第一帧指定目标 后&#xff0c;在后续帧持续跟踪目标&#xff0c;即利用边界框&#xff08;通常用矩形框表…

solana项目counter,测试过程中执行报错记录分享

跟随HackQuest部署counter项目&#xff0c;使用 Solana 官方提供的 playgroud 。这个平台让我们的部署和测试过程变得更加简便高效。 合约代码 lib.rs中复制以下代码 use anchor_lang::prelude::*; use std::ops::DerefMut;declare_id!("CVQCRMyzWNr8MbNhzjbfPu9YVvr97…

扣子智能体实战:一键生成公众号图文,AI时代文盲也能写公众号,赚钱秘籍

文章目录 一&#xff0c;需求简述二&#xff0c;智能体制作1&#xff0c;智能体人设和技能2&#xff0c;流程开发2.1 设置开始节点2.2 增加一个生成标题的大模型节点2.3 增加一个代码节点 2.4 增加一个插件节点用以生成文章配图2.4 增加一个大模型节点-根据标题和思路生成文章大…

树与图的深度优先遍历(dfs的图论中的应用)

模板题 846. 树的重心 给定一颗树&#xff0c;树中包含 nn 个结点&#xff08;编号 1∼n&#xff09;和 n−1条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树中的一个结点&#xff…

EmptyDir-数据存储

1.EmptyDir EmptyDir是最基础的Volume类型&#xff0c;一个EmptyDir就是Host上的一个空目录。 EmptyDir是在Pod被分配到Node时创建的&#xff0c;它的初始内容为空&#xff0c;并且无须指定宿主机上对应的目录文件&#xff0c;因为kubernetes会自动分配一个目录&#xff0c;当…

无监督神经组合优化的扩散模型框架

文章目录 Abstract1. Introduction2. Problem Description2.1 无监督神经组合优化3. Neural Probabilistic Optimization Objective for Approximate Likelihood Models3.1 具有联合变分上界的训练扩散模型Abstract 从离散集合的不可处理分布中进行采样,而不依赖相应的训练数据…