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.mzph.cn/diannao/54386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云栖大会Day1:云应用开发平台 CAP 来了

2024 云栖大会开幕&#xff0c;在大会第一天&#xff0c;阿里云正式发布全新产品——云应用开发平台 CAP。CAP 拥有丰富的场景化应用模板&#xff0c;可以极速体验&#xff0c;并且具备更低的成本优势以及灵活组装等特点&#xff0c;成为广大开发者与企业必备的一站式应用开发平…

Stable Diffusion绘画 | ControlNet应用-instant-ID控制器:快速生成人物多角度图片

使用 instant-ID 控制器&#xff0c;用户只需要提供一张正脸图片&#xff0c;就可以快速地给人物生成多角度图片的&#xff0c;从而很好的保持了人物的一致性。 对于要制作小说推文、创建人物故事情节的创作&#xff0c;是一个非常好用且高效的功能。 准备工作 使用该控制类型&…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第一篇-原理】

如果想直接制作&#xff0c;请看【第二篇】内容 这次做一个这样的东西&#xff0c;通过在2DRT上实时绘制&#xff0c;生成动态的体积纹理&#xff0c;也就是可以runtime的VDB 设想的文章流程: 对原理进行学习制作体积渲染制作实时绘制 第一篇&#xff08;本篇&#xff09;是对“…

vue3+element-plus icons图标选择组件封装

一、最终效果 二、参数配置 1、代码示例 <t-select-icon v-model"selectVlaue" />2、配置参数&#xff08;Attributes&#xff09;继承 el-input Attributes 参数说明类型默认值v-model绑定值string-prefixIcon输入框前缀iconstringSearchisShowSearch是否显…

机器翻译之创建Seq2Seq的编码器、解码器

1.创建编码器、解码器的基类 1.1创建编码器的基类 from torch import nn#构建编码器的基类 class Encoder(nn.Module): #继承父类nn.Moduledef __init__(self, **kwargs): #**kwargs&#xff1a;不定常的关键字参数super().__init__(**kwargs)def forward(self, X, *args…

python的基础语法

Python 的基础语法非常简洁明了&#xff0c;适合初学者快速上手。下面我将为你总结几个最重要的基础语法点&#xff0c;帮你快速掌握 Python 的核心概念。让我们从基础开始逐步深入&#xff0c;像刷副本一样一关一关地攻克它们&#xff01; 1. Hello, World! 每一种编程语言的…

LLM Prompt

Prompt总结 1、GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better. 2、GitHub - PlexPt/awesome-chatgpt-prompts-zh: ChatGPT 中文调教指南。各种场景使用指南。学习怎么让它听你的话。 开发类Prompt 关系抽取(RE)解…

多路转接之epoll的两种触发方式(LT,ET的效率对比,原理,epoll读取数据的过程)

目录 EPOLL的触发方式 水平触发 LT(Level Triggered) 边沿触发 ET(Eage Triggered) 比喻 过程 总结 回到epoll 效率 为什么要一次读完? 如何确保读完了所有数据? 举例 回到epoll 效率对比总结 本质 epoll接口介绍 -- epoll接口介绍,epoll模型介绍原理,接口和模…

Git入门学习(1)

Git 00.准备工作-gitee注册 今天Git的设置中需要用到gitee的注册信息&#xff0c;先自行完成注册工作&#xff0c;可以 参考笔记 或第二天视频&#xff08;10.Git远程仓库-概念和gitee使用准备&#xff09; 传送门: gitee&#xff08;码云&#xff09;:https://gitee.com/ 注…

详解:冒泡排序

1.是什么 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…

2024华为杯研赛D题保姆级教程思路分析+教程

2024年中国研究生数学建模竞赛D题保姆级教程思路分析 D题&#xff1a;大数据驱动的地理综合问题&#xff08;数学分析&#xff0c;统计学&#xff09; 关键词&#xff1a;地理、气候、统计&#xff08;细致到此题&#xff1a;统计指标、统计模型、统计结果解释&#xff09; …

c++249多态

#include<iostream> using namespace std; class Parent { public:Parent(int a){this->a a;cout << " Parent" << a << endl;} public:virtual void print()//在子类里面可写可不写 {cout << "Parent" <<a<&l…

OpenCV 2

目录 图像平滑处理 高斯与中值滤波 图像阈值 ​编辑 Canny边缘检测 非极大值抑制 边缘检测效果 轮廓检测方法 ​编辑 ​编辑​编辑 轮廓检测结果 轮廓特征与近似 图像平滑处理 以上两种出来的图片效果 以上的效果&#xff0c;因为填的是normalize False&#xff0c;越界…

Vue接入高德地图并实现基本的路线规划功能

目录 一、申请密钥 二、安装依赖 三、代码实现 四、运行截图 五、官方文档 一、申请密钥 登录高德开放平台&#xff0c;点击我的应用&#xff0c;先添加新应用&#xff0c;然后再添加Key。 如图所示填写对应的信息&#xff0c;系统就会自动生成。 二、安装依赖 npm i am…

艾丽卡的区块链英语小课堂

系列文章目录 IT每日英语&#xff08;三&#xff09; 文章目录 系列文章目录前言1.principle2.efficient3.implement4.accumulated5,occupation6.phases7.validator8.nominated9.commissions10.significantly 前言 欢迎来到艾丽卡的区块链英语小课堂&#xff0c;在这里&…

vmware + ubuntu + 初始配置(超级用户权限、vim安装、ssh登陆、共享文件夹、git)

1 VMware Ubuntu下载与安装 下载与安装 2 使用超级用户权限 &#xff08;1&#xff09;执行命令&#xff1a;sudo passwd root 然后在弹出的密码中输入密码即可&#xff0c;具体如下&#xff1a; 第一个密码是当前用户密码 后面两个是root用户密码 //推荐使用一个密码 3 vi…

航空航司reese84逆向

reese84逆向 Reese84 是一种用于保护网站防止自动化爬虫抓取的防护机制&#xff0c;尤其是在航空公司网站等需要严格保护数据的平台上广泛使用。这种机制通过复杂的指纹识别和行为分析技术来检测和阻止非人类的互动。例如&#xff0c;Reese84 可以通过分析访问者的浏览器指纹、…

Linux 清空redis缓存及查询key值

1.登录redis redis-cli -h 127.0.0.1 -p 6379# 如果有密码需要下面这一步 auth 你的密码直接带密码登录 redis-cli -h 127.0.0.1 -p 6379 -a 密码出现ok表示登录成功 2.标题查看所有key keys *3.查看某个key 的值 get keyName4.清空整个Redis服务器的数据 flushall5.查看…

C++学习笔记(34)

三十六、队列 示例&#xff1a; #include <iostream> using namespace std; typedef int ElemType; // 自定义队列的数据元素为整数。 struct LNode { ElemType data; // 存储队列中的元素。 struct LNode* next; // next 指针。 }; struct LinkQueue { LNode* head,*tai…

基于PHP的电脑线上销售系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的电脑线上销售系…