sql语法学习
学习 SQL(Structured Query Language)语法是数据库开发的基础,主要用于数据库的管理和操作。以下是 SQL 的基本语法和常用操作,涵盖数据查询、插入、更新、删除等。
1. 数据库基础
- 数据库:存储表和数据的集合。
- 表:由行(记录)和列(字段)组成。
- 字段:表中的列,表示数据属性。
- 记录:表中的行,表示具体的数据项。
2. SQL 基本操作
SQL 分为四种主要操作类型:
- 数据查询语言 (DQL):用于查询数据,如
SELECT。 - 数据操作语言 (DML):用于修改数据,如
INSERT、UPDATE、DELETE。 - 数据定义语言 (DDL):用于定义和修改数据库结构,如
CREATE、ALTER、DROP。 - 数据控制语言 (DCL):用于权限控制,如
GRANT、REVOKE。
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:求平均值。MAX和MIN:求最大值和最小值。
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:返回右表中的所有记录,即使左表中没有匹配。
- INNER 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连接字符串来连接数据库ÿ…...
java Nio的应用
Java NIO(New Input/Output)是Java 1.4引入的一种非阻塞I/O模型,适用于高性能和高并发的应用程序。以下是NIO的一些主要应用场景和特点: 1. 非阻塞I/O NIO支持非阻塞模式,这意味着线程可以在I/O操作进行时继续执行其…...
双十一有什么好物推荐?值得入手的五款产品
随着双十一狂欢的号角日益临近,这个一年一度的购物盛典即将拉开帷幕!为了让大家在海量的商品中精准定位,圆圆用心整理了一份购物清单,分享那些我亲身试用过,觉得超级值得购买的好物。 这些商品不但价格亲民࿰…...
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 产业链协同与生态构建 三、面临的挑战与应对策略…...
小程序体验版无法正常请求接口,开启 调试可以正常请求
在本地开发工具可以正常访问小程序,上传代码后打开体验版,界面无法请求接口,手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码…...
什么是动态数据脱敏?
原文地址 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)下载,而不是从其私有注册表下载。攻击者可以在公共注册表中上传一个与公司内部包同名的恶意包…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...
