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

sql语法学习

学习 SQL(Structured Query Language)语法是数据库开发的基础,主要用于数据库的管理和操作。以下是 SQL 的基本语法和常用操作,涵盖数据查询、插入、更新、删除等。

1. 数据库基础

  • 数据库:存储表和数据的集合。
  • :由行(记录)和列(字段)组成。
  • 字段:表中的列,表示数据属性。
  • 记录:表中的行,表示具体的数据项。

2. SQL 基本操作

SQL 分为四种主要操作类型:

  • 数据查询语言 (DQL):用于查询数据,如 SELECT
  • 数据操作语言 (DML):用于修改数据,如 INSERTUPDATEDELETE
  • 数据定义语言 (DDL):用于定义和修改数据库结构,如 CREATEALTERDROP
  • 数据控制语言 (DCL):用于权限控制,如 GRANTREVOKE

3. 常用 SQL 语法

3.1. 创建数据库和表
-- 创建数据库
CREATE DATABASE my_database;-- 使用数据库
USE my_database;-- 创建表
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100),email VARCHAR(100),age INT
);
  • CREATE DATABASE:创建一个新数据库。
  • CREATE TABLE:创建一个新表,定义字段及其数据类型。
3.2. 插入数据
-- 向表中插入数据
INSERT INTO users (name, email, age)
VALUES ('Alice', 'alice@example.com', 25);-- 插入多行数据
INSERT INTO users (name, email, age)
VALUES 
('Bob', 'bob@example.com', 30),
('Charlie', 'charlie@example.com', 22);
  • INSERT INTO:插入新记录到表中。
3.3. 查询数据
-- 查询所有数据
SELECT * FROM users;-- 查询特定列的数据
SELECT name, email FROM users;-- 查询带条件的数据
SELECT * FROM users WHERE age > 25;-- 使用别名(Alias)查询
SELECT name AS 'User Name', email AS 'Email Address' FROM users;-- 排序查询结果
SELECT * FROM users ORDER BY age DESC;-- 限制查询结果
SELECT * FROM users LIMIT 5;
  • SELECT:从表中查询数据。
  • WHERE:条件查询。
  • ORDER BY:排序查询结果,ASC 为升序,DESC 为降序。
  • LIMIT:限制查询返回的记录数。
3.4. 更新数据
-- 更新数据
UPDATE users
SET age = 28
WHERE name = 'Alice';
  • UPDATE:修改表中的记录,通常配合 WHERE 条件使用。
3.5. 删除数据
-- 删除记录
DELETE FROM users WHERE name = 'Charlie';-- 删除表中的所有记录
DELETE FROM users;
  • DELETE:删除表中的数据。注意:如果不加 WHERE 条件,会删除所有记录。

4. 复杂查询

4.1. 聚合函数
-- 统计记录总数
SELECT COUNT(*) FROM users;-- 求平均年龄
SELECT AVG(age) FROM users;-- 查询最大和最小年龄
SELECT MAX(age), MIN(age) FROM users;
  • COUNT:计数。
  • AVG:求平均值。
  • MAXMIN:求最大值和最小值。
4.2. 分组查询(GROUP BY)
-- 按年龄分组统计人数
SELECT age, COUNT(*) FROM users
GROUP BY age;
  • GROUP BY:用于将查询结果按某列分组,通常与聚合函数一起使用。
4.3. 联合查询(JOIN)
-- 创建 orders 表
CREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,product_name VARCHAR(100),amount DECIMAL(10, 2)
);-- 插入数据
INSERT INTO orders (user_id, product_name, amount)
VALUES (1, 'Laptop', 1000.00), (2, 'Phone', 500.00), (1, 'Tablet', 300.00);-- 联合查询:查询用户及其订单
SELECT users.name, orders.product_name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;
  • JOIN:用于关联两个或多个表。
    • INNER JOIN:默认的 JOIN 类型,返回两张表中满足条件的记录。
    • LEFT JOIN:返回左表中的所有记录,即使右表中没有匹配。
    • RIGHT JOIN:返回右表中的所有记录,即使左表中没有匹配。
4.4. 子查询
-- 查询年龄最大的用户
SELECT * FROM users
WHERE age = (SELECT MAX(age) FROM users);
  • 子查询:在查询中嵌套其他查询。

5. 数据库的修改和删除

5.1. 修改表结构
-- 添加新列
ALTER TABLE users ADD phone VARCHAR(20);-- 修改列的数据类型
ALTER TABLE users MODIFY age SMALLINT;-- 删除列
ALTER TABLE users DROP COLUMN phone;
  • ALTER TABLE:修改表的结构,如添加、修改或删除列。
5.2. 删除表和数据库
-- 删除表
DROP TABLE users;-- 删除数据库
DROP DATABASE my_database;
  • DROP:用于删除表或数据库,删除操作不可恢复。

6. 事务(Transaction)

事务确保一组 SQL 操作要么全部执行成功,要么全部回滚。

-- 开启事务
START TRANSACTION;-- 插入和更新操作
INSERT INTO users (name, email, age) VALUES ('Dave', 'dave@example.com', 40);
UPDATE users SET age = 41 WHERE name = 'Dave';-- 提交事务
COMMIT;-- 如果出现错误,回滚事务
ROLLBACK;
  • START TRANSACTION:开始事务。
  • COMMIT:提交事务,使修改生效。
  • ROLLBACK:回滚事务,撤销未提交的修改。

7. 总结

SQL 是管理和操作关系型数据库的关键工具,掌握 SQL 基本语法和查询技巧可以高效地与数据库交互。通过学习创建、查询、更新、删除数据,以及如何执行复杂查询和事务操作,你可以有效地管理数据库中的数据。

相关文章:

sql语法学习

学习 SQL(Structured Query Language)语法是数据库开发的基础,主要用于数据库的管理和操作。以下是 SQL 的基本语法和常用操作,涵盖数据查询、插入、更新、删除等。 1. 数据库基础 数据库:存储表和数据的集合。表&am…...

滚雪球学SpringCloud[5.3讲]: 配置管理中的高可用与容错

全文目录: 前言高可用配置中心的搭建为什么需要高可用配置中心?多实例与负载均衡数据一致性实战示例:使用Nginx实现高可用配置中心 Spring Cloud Config中的高可用性高可用性的进一步优化 配置管理中的故障处理策略分布式系统中的常见故障故障…...

电商安全新挑战:筑起数字防御长城,守护业务与数据安全

在当今这个数字化时代,电商行业正以前所未有的速度发展,大数据、人工智能等技术的融入不仅重塑了消费模式,更激发了行业新的增长点。然而,这片繁荣景象之下,隐藏着一个不容忽视的暗流——网络安全威胁。从数据泄露到恶…...

Python 单元测试:深入理解与实战应用20240919

Python 单元测试:深入理解与实战应用 引言 在动态语言如 Python 中,代码的灵活性和动态特性使得开发效率大大提升,但也带来了潜在的风险:小的改动可能导致不可预见的功能失效。因此,确保代码逻辑的正确性和稳健性至关…...

二、MySQL环境搭建

文章目录 1. MySQL的卸载步骤1:停止MySQL服务步骤2:软件的卸载步骤3:残余文件的清理步骤4:清理注册表(选做)步骤5:删除环境变量配置 2. MySQL的下载、安装、配置2.1 MySQL的4大版本2.2 软件的下…...

mongoDB 读取数据python版本实现

要使用Python从MongoDB读取数据,你可以使用pymongo库。首先确保你已经安装了pymongo,如果没有安装,可以通过pip来安装它: pip install pymongo 接下来,我将展示如何使用给定的MongoDB连接字符串来连接数据库&#xff…...

java Nio的应用

Java NIO(New Input/Output)是Java 1.4引入的一种非阻塞I/O模型,适用于高性能和高并发的应用程序。以下是NIO的一些主要应用场景和特点: 1. 非阻塞I/O NIO支持非阻塞模式,这意味着线程可以在I/O操作进行时继续执行其…...

双十一有什么好物推荐?值得入手的五款产品

随着双十一狂欢的号角日益临近,这个一年一度的购物盛典即将拉开帷幕!为了让大家在海量的商品中精准定位,圆圆用心整理了一份购物清单,分享那些我亲身试用过,觉得超级值得购买的好物。 这些商品不但价格亲民&#xff0…...

Nuxt Kit 使用日志记录工具

title: Nuxt Kit 使用日志记录工具 date: 2024/9/23 updated: 2024/9/23 author: cmdragon excerpt: 摘要:本文介绍在Nuxt 3框架的Nuxt Kit中使用日志记录工具的方法,重点讲解useLogger函数的应用,通过创建示例项目一步步展示如何配置和使用日志记录功能来监控应用状态、…...

视频相关处理

1、概念 (1)FPS 是 “Frames Per Second” 的缩写,意思是“每秒帧数”。它表示每秒钟屏幕上显示的图像帧数,用来衡量动画、视频或游戏画面的流畅度。 FPS 越高,画面越流畅,通常来说,30 FPS 被认为是基本流畅,60 FPS 及以上则非常顺滑。FPS 过低 会导致画面卡顿,尤其是…...

关于循环Socket创建超Linux文件句柄限制现象分析

项目场景: 在操作系统的世界中万物皆文件。之前拜读过一些作品:针对于socket的创建,Linux也相应创建文件(专业术语中也称文件句柄),于是,我想做一些关于极限的操作,看看这些极限操作…...

简单说说MySQL中 SELECT 语句执行流程

流程讲解 MySQL 中 SELECT 语句的执行流程分为多个步骤,通常从用户发出查询请求到 MySQL 返回结果包含以下过程: 客户端/服务器通信: 用户向 MySQL 服务器发送 SELECT 查询语句。 查询解析(Parser): MySQ…...

国产游戏技术:迈向全球引领者的征途

目录 国产游戏技术能否引领全球? 一、国产游戏技术的崛起之路 1.1 初期探索与积累 1.2 技术创新的加速 1.3 文化自信的体现 二、国产游戏技术的核心竞争力 2.1 本地化与定制化策略 2.2 技术创新与应用 2.3 产业链协同与生态构建 三、面临的挑战与应对策略…...

小程序体验版无法正常请求接口,开启 调试可以正常请求

在本地开发工具可以正常访问小程序,上传代码后打开体验版,界面无法请求接口,手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码&#xf…...

什么是动态数据脱敏?

原文地址 https://www.bytebase.com/blog/what-is-dynamic-data-masking/ 动态数据脱敏(DDM)动态更改返回给应用程序或用户的数据库记录,以此来实时保护敏感数据,且不会更改静态数据。 DDM 与静态数据脱敏(SDM&#x…...

【机器学习】11——矩阵求导

机器学习11——矩阵求导 打公式不太好标注,全图警告!!! 文章目录 机器学习11——矩阵求导1.1标量对向量1.2标量对矩阵2.1向量对标量2.2向量对向量2.3向量对矩阵 1.1标量对向量 1.2标量对矩阵 X是m*n的矩阵,不严谨&am…...

Spring Boot 实战:结合策略模式实现动态定价服务

引言 在现代商业环境中,价格策略的灵活性对于吸引客户和提高市场竞争力至关重要。传统的定价方法往往固定不变,而随着市场的变化和技术的发展,能够根据不同的条件和场景来调整价格的动态定价策略变得越来越重要。Spring Boot 框架以其简洁的…...

Serverless架构

Serverless架构:漂浮在云端的轻盈与自由 类似于 Fn Project 的 Serverless 开源服务有很多,它们都旨在简化函数即服务(FaaS)的开发流程,使得开发者可以更专注于业务逻辑而不是底层基础设施。下面列举了一些知名的 Serverless 开源平台和服务…...

9.20日学习记录及相关问题解答

部分一 今天看了一本古老的书。学到了一些有关计算机的远古的知识。弥补了一些之前没有意识到的空白点。 原来上个世纪就有AI这个东西了 现阶段的主流模式,在许多年前其实是将来要发展的对象。 B/S指的是客户机/服务器结构模式 C/S是在B/S基础上发展过来的。三层结…...

【网络安全】依赖混淆漏洞实现RCE

未经许可,不得转载。 文章目录 正文 依赖混淆是一种供应链攻击漏洞,发生在企业的内部依赖包错误地从公共库(如npm)下载,而不是从其私有注册表下载。攻击者可以在公共注册表中上传一个与公司内部包同名的恶意包&#xf…...

Qwen3.5-2B多场景落地:跨境电商独立站商品图→多语言标题+卖点文案+SEO关键词

Qwen3.5-2B多场景落地:跨境电商独立站商品图→多语言标题卖点文案SEO关键词 1. 跨境电商内容创作的痛点与机遇 跨境电商独立站运营者每天面临三大内容挑战: 商品图片处理:需要专业摄影和后期,成本高周期长多语言文案创作&#…...

Emotion2Vec+ Large多语种支持实测:中文英文情感识别效果对比

Emotion2Vec Large多语种支持实测:中文英文情感识别效果对比 1. 引言 语音情感识别技术正在改变我们与机器交互的方式。想象一下,当你在电话客服中表达不满时,系统能立即识别你的愤怒情绪并转接高级客服;当你在语言学习中发音时…...

BERT文本分割模型5分钟快速部署:零基础搭建智能分段工具

BERT文本分割模型5分钟快速部署:零基础搭建智能分段工具 1. 引言:告别文字“墙”,让长文本秒变清晰段落 你有没有过这样的经历?辛辛苦苦听完一场两小时的线上会议,语音转文字工具生成了一份上万字的逐字稿。你满怀期…...

AI编程赋能研发效率:核心能力与实践经验总结

作为常年泡在代码里的开发者,想必大家都有过这样的体验:用AI插件补几行代码很快,但一到实际项目,环境配置、多任务并行、代码审查这些环节还是得靠人工一点点磨;不同的AI编程能力各有优势,切换适配却十分繁…...

Graphormer多任务预测指南:property-guided与catalyst-adsorption双模式切换详解

Graphormer多任务预测指南:property-guided与catalyst-adsorption双模式切换详解 1. Graphormer模型概述 Graphormer是一种基于纯Transformer架构的图神经网络,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。这个创…...

OpenClaw+千问3.5-35B-A3B-FP8:个人知识库自动化更新系统

OpenClaw千问3.5-35B-A3B-FP8:个人知识库自动化更新系统 1. 为什么需要自动化知识库更新 作为一个长期依赖个人知识库的技术写作者,我深刻体会到手动维护知识库的痛点。每当遇到新资料,我需要经历"阅读→摘录→分类→归档"的全流…...

JDK-02 | 我为什么越来越喜欢用 Java 的 Text Blocks

这是专栏第 2 篇。 如果第一篇 record 是在“模型表达”上让我轻松,Text Blocks 则是在“日常编码和代码审查”上让我明显省力。 我先给结论:Text Blocks 不只是少写几个 +,它真正解决的是多行文本在代码中的可读性、可评审性和可回归性。 一、我为什么会认真用这个特性 …...

OpenClaw安全沙箱:Qwen3-32B镜像的权限隔离实验

OpenClaw安全沙箱:Qwen3-32B镜像的权限隔离实验 1. 为什么需要安全沙箱 当我第一次看到OpenClaw能够直接操作我的电脑文件时,既兴奋又担忧。兴奋的是它能够帮我自动化处理大量重复工作,担忧的是如果AI不小心执行了rm -rf这样的危险命令怎么…...

域名 WHOIS 信息对于 SEO 优化有什么作用

域名 WHOIS 信息对于 SEO 优化有什么作用 在当今互联网时代,搜索引擎优化(SEO)已经成为了每个网站运营者必须掌握的技能之一。其中,域名 WHOIS 信息也扮演了一定的角色。许多人可能对这一点并不十分了解,本文将详细探…...

多源数据驱动的农害预测模型

基于多源数据与集成学习的农作物病虫害预测及防控优化模型 标签:农业AI 机器学习 XGBoost LSTM Stacking SHAP 遗传算法 风险建模 一、整体技术路线概览 我们构建了一个五层递进式智能决策系统,从原始数据到最终可解释的防控建议,层层…...