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.mfbz.cn/a/883048.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EfficientNet(2019):基于复合缩放的自动化架构搜索高效网络!

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks EfficientNet&#xff1a;重新思考卷积神经网络的模型扩展 论文下载地址&#xff1a; https://arxiv.org/abs/1905.11946 学习笔记参考了这位大佬&#xff1a;https://blog.csdn.net/qq_37541097/ar…

ProgrammerAI—AI辅助编程学习指南

前言 随着AIGC&#xff08;AI生成内容&#xff09;技术的快速发展&#xff0c;诸如ChatGPT、MidJourney和Claude等大语言模型相继涌现&#xff0c;AI辅助编程工具正逐步改变程序员的工作方式。这些工具不仅可以加速代码编写、调试和优化过程&#xff0c;还能帮助解决复杂的编程…

python标识符和关键字

1、标识符 1.1 写法 标识符由字母、下划线和数字组成&#xff0c;且数字不能开头。严格区分大小写。不能使用关键字。 # 标识符由字母、下划线和数字组成&#xff0c;且数字不能开头。 # a_1_$ 1 # print(a_1_$)# 严格区分大小写。 # Animal 1 # print(animal)# 不能使用关…

仓颉编程入门2,启动HTTP服务

上一篇配置了仓颉sdk编译和运行环境&#xff0c;读取一个配置文件&#xff0c;并把配置文件简单解析了一下。 前面读取配置文件&#xff0c;使用File.readFrom()&#xff0c;这个直接把文件全部读取出来&#xff0c;返回一个字节数组。然后又创建一个字节流&#xff0c;给文件…

vscode[c、cmake]:某些引用可能丢失,因为在 查找所有引用 启动时,工作区分析不完整

1. 问题描述 vscode 调试一个c语言工程&#xff0c;利用cmake编译调试&#xff0c;通过cmakelist.txt传递宏标识来条件编译代码。但是&#xff0c;在build之后&#xff0c;传递的宏标识不能让vscode自动转跳相关代码&#xff0c;猜测为代码分析时未包含宏标识。提示&#xff1a…

双向链表的基本结构及功能实现

1.基本结构: 双向链表是一种链表数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含三个部分&#xff1a; (1).数据域&#xff1a;存储节点的数据 (2).前驱指针:指向前一个节点 (3).后驱指针:指向下一个节点 2.基本特性&#xff1a; 双向链接: 与单向链表…

不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!

非局域网环境下&#xff0c;怎么远程桌面&#xff1f;还能做到吗&#xff1f; 在企业管理中&#xff0c;远程桌面访问已成为提高工作效率、实现跨地域协同工作的关键工具。 然而&#xff0c;当被控端与控制端不在同一局域网时&#xff0c;如何实现远程桌面连接成为了许多企业…

【Android】页面启动耗时统计流程梳理

文章基于Android 11 写在前面&#xff1a; 最近的文章都会放流程图&#xff0c;时序图之类的图片&#xff0c;解释下为什么这么做&#xff1a; 图片的好处&#xff1a; 流程清晰&#xff0c;一目了然很多代码&#xff0c;如同老太太的裹脚布&#xff0c;又臭又长。影响理解&a…

【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台

一、介绍 果蔬识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了12种常见的水果和蔬菜&#xff08;‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’&#xff09;…

基于SpringBoot+Vue的校园快递代取管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

CNN网络训练WISDM数据集:模型仿真及可视化分析

卷积神经网络&#xff08;CNN&#xff09;因其强大的特征提取能力和深度学习架构而备受推崇&#xff0c;CNN在处理图像数据时展现出的卓越性能&#xff0c;使其成为解决各种视觉识别任务的首选工具。WISDM数据集是一个广泛用于运动估计研究的基准数据集&#xff0c;它包含了多个…

14年408-计算机网络

第一题&#xff1a; 解析&#xff1a;OSI体系结构 OSI由下至上依次是&#xff1a;物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题&#xff1a; 解析&#xff1a;数据链路层-交换机的自学习和帧转发 主机a1向交换…

关于养育孩子的一点想法

我们许多人总是很看重结果&#xff0c;不重视过程&#xff0c;在工作中有时候确实会这样&#xff0c;但这种想法会经常蔓延到生活中&#xff0c;比如养育孩子&#xff0c;我们总有一个目标&#xff0c;希望他成才&#xff0c;实现某种理想&#xff0c;弥补你人生中的某种缺憾&a…

开通微信视频号直播的流程

首先我们要了解什么是视频号&#xff1f; 视频号其实就是腾讯家的“抖音”/“快手”&#xff0c;可以发布视频和直播&#xff08;包括直播带货&#xff09;。 微信视频号不同于订阅号、服务号&#xff0c;它是一个全新的内容记录与创作平台&#xff0c;也是一个了解他人、了解…

AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成

AIGC专栏15——CogVideoX-Fun详解 支持图&文生视频 拓展CogVideoX到256&#xff5e;1024任意分辨率生成 学习前言项目特点生成效果相关地址汇总源码下载地址 CogVideoX-Fun详解技术储备Diffusion Transformer (DiT)Stable Diffusion 3EasyAnimate-I2V 算法细节算法组成InPa…

计算机出现msvcp140.dll丢失的6种解决方法,亲测有效

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来困扰。本文将总结6种解决msvcp140.dll丢失的方法&#xff0c;帮助大家轻松解决这个问题。 一&…

随机梯度下降的学习

梯度下降&#xff08;Gradient-Descent&#xff09; 在机器学习的旅途中&#xff0c;不可避免需要与它打交道&#xff0c;那么该如何初步理解它的用途呢&#xff1f; 好的&#xff0c;想象你在一个山谷中&#xff0c;想要找到最低点&#xff08;山谷的底部&#xff09;。你现…

如何使用 Bittly 为基于 HTTP 的 API 快速创建 UI 操作界面

在开发 Web 应用或服务时&#xff0c;通常会提供不同数量的 API 接口给客户端或其他第三方使用&#xff0c; 当 API 数量达到一定数量的时候&#xff0c;在处理接口间的调用链以及参数关系时就会变得异常麻烦。 在这种情况下便可通过 Bittly 的面板功能将这些 API 结构进行组装…

电子元件制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

5G智能工厂与物联数字孪生平台的融合应用&#xff0c;不仅为电容器制造业注入了新的活力&#xff0c;更为整个制造业的数字化转型树立了新的标杆。电子元件制造过程中&#xff0c;数字孪生平台通过实时监测生产线的各个环节&#xff0c;实现了生产流程的可视化监控。管理人员可…

es的封装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…