当前位置: 首页 > 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…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...

git: early EOF

macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

c# 局部函数 定义、功能与示例

C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...