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

SQL 基础入门教程

目录

什么是 SQL?

SQL 的基本操作

数据库的创建和删除

表的创建和删除

数据的插入

数据的查询

数据的更新

数据的删除

SQL 的高级操作

表的连接

聚合函数

分组和排序

子查询

视图

索引

SQL 的数据完整性和约束

总结


SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。无论是查询数据、更新记录,还是创建数据库和表结构,SQL 都提供了强大的功能。本文旨在为初学者提供一份全面的 SQL 基础入门教程,帮助你快速上手并掌握 SQL 的基本操作。

什么是 SQL?

SQL 是一种用于访问和操作数据库的标准语言。它最早由 IBM 在 1970 年代开发,并在 1986 年被美国国家标准学会(ANSI)和国际标准化组织(ISO)采纳为标准。SQL 的主要功能包括:

  • 数据查询
  • 数据插入
  • 数据更新
  • 数据删除
  • 数据库和表的创建和修改
  • 数据库权限管理

SQL 的基本操作

数据库的创建和删除

在开始操作数据库之前,我们需要先创建一个数据库。以下是创建和删除数据库的基本语法:

-- 创建数据库
CREATE DATABASE 数据库名称;-- 删除数据库
DROP DATABASE 数据库名称;

例如,创建一个名为 TestDB 的数据库:

CREATE DATABASE TestDB;

删除 TestDB 数据库:

DROP DATABASE TestDB;

表的创建和删除

数据库创建好之后,我们需要在数据库中创建表。表是数据库的基本存储结构,由行和列组成。以下是创建和删除表的基本语法:

-- 创建表
CREATE TABLE 表名称 (列名称1 数据类型 约束条件,列名称2 数据类型 约束条件,...
);-- 删除表
DROP TABLE 表名称;

例如,创建一个名为 Employees 的表:

CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),BirthDate DATE,Salary DECIMAL(10, 2)
);

删除 Employees 表:

DROP TABLE Employees;

数据的插入

创建表后,我们可以向表中插入数据。以下是插入数据的基本语法:

INSERT INTO 表名称 (列名称1, 列名称2, ...) VALUES (值1, 值2, ...);

例如,向 Employees 表中插入一条记录:

INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, Salary) 
VALUES (1, 'John', 'Doe', '1980-01-01', 50000.00);

数据的查询

查询数据是 SQL 中最常用的操作之一。以下是基本的查询语法:

SELECT 列名称1, 列名称2, ... FROM 表名称 WHERE 条件;

例如,查询 Employees 表中的所有记录:

SELECT * FROM Employees;

查询 Employees 表中 Salary 大于 30000 的记录:

SELECT * FROM Employees WHERE Salary > 30000;

数据的更新

有时我们需要修改表中的数据。以下是更新数据的基本语法:

UPDATE 表名称 SET 列名称1 = 新值1, 列名称2 = 新值2, ... WHERE 条件;

例如,更新 Employees 表中 EmployeeID 为 1 的记录,将 Salary 修改为 55000:

UPDATE Employees SET Salary = 55000 WHERE EmployeeID = 1;

数据的删除

删除表中的数据也是常见操作之一。以下是删除数据的基本语法:

DELETE FROM 表名称 WHERE 条件;

例如,删除 Employees 表中 EmployeeID 为 1 的记录:

DELETE FROM Employees WHERE EmployeeID = 1;

SQL 的高级操作

表的连接

在实际应用中,我们经常需要从多个表中查询数据。表的连接(JOIN)操作可以实现这一点。以下是基本的连接语法:

SELECT 列名称1, 列名称2, ... FROM 表1 JOIN 表2 ON 表1.列名称 = 表2.列名称;

例如,有两个表 Departments 和 Employees,我们可以通过部门 ID(DepartmentID)将这两个表连接起来:

CREATE TABLE Departments (DepartmentID INT PRIMARY KEY,DepartmentName VARCHAR(50)
);INSERT INTO Departments (DepartmentID, DepartmentName) VALUES (1, 'HR'), (2, 'Engineering');SELECT Employees.FirstName, Employees.LastName, Departments.DepartmentName
FROM Employees
JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

聚合函数

SQL 提供了一些聚合函数,用于对数据进行汇总和统计。常见的聚合函数包括:

  • COUNT:计算行数
  • SUM:求和
  • AVG:平均值
  • MAX:最大值
  • MIN:最小值

例如,计算 Employees 表中的员工总数:

SELECT COUNT(*) FROM Employees;

计算 Employees 表中所有员工的平均工资:

SELECT AVG(Salary) FROM Employees;

分组和排序

分组(GROUP BY)和排序(ORDER BY)操作是 SQL 中的两个重要功能。分组用于将数据按某一列进行分组,并对每组数据进行聚合计算;排序用于对查询结果按照某一列进行升序或降序排列。

例如,按照部门分组,计算每个部门的平均工资:

SELECT DepartmentID, AVG(Salary) AS AvgSalary
FROM Employees
GROUP BY DepartmentID;

按照工资降序排列查询结果:

SELECT * FROM Employees
ORDER BY Salary DESC;

子查询

子查询是嵌套在其他 SQL 语句中的查询,可以用来进行复杂的数据筛选和计算。子查询可以出现在 SELECTINSERTUPDATE 和 DELETE 语句中。

例如,查询工资最高的员工:

SELECT * FROM Employees
WHERE Salary = (SELECT MAX(Salary) FROM Employees);

视图

视图(View)是基于 SQL 查询结果的虚拟表,可以简化复杂查询并提高数据安全性。以下是创建和删除视图的基本语法:

-- 创建视图
CREATE VIEW 视图名称 AS
SELECT 查询内容;-- 删除视图
DROP VIEW 视图名称;

例如,创建一个仅包含员工姓名和工资的视图:

CREATE VIEW EmployeeSalaries AS
SELECT FirstName, LastName, Salary FROM Employees;

查询 EmployeeSalaries 视图:

SELECT * FROM EmployeeSalaries;

索引

索引(Index)用于提高数据库查询性能。以下是创建和删除索引的基本语法:

-- 创建索引
CREATE INDEX 索引名称 ON 表名称 (列名称);-- 删除索引
DROP INDEX 索引名称;

例如,创建一个基于 LastName 列的索引:

CREATE INDEX idx_lastname ON Employees (LastName);

SQL 的数据完整性和约束

在设计数据库时,确保数据的完整性和一致性非常重要。SQL 提供了多种约束条件来保证数据的正确性和有效性,常见的约束条件包括:

  • PRIMARY KEY:主键,唯一标识表中的每一行记录
  • FOREIGN KEY:外键,用于建立表之间的关系
  • UNIQUE:唯一约束,确保列中的值唯一
  • NOT NULL:非空约束,确保列中的值不能为空
  • CHECK:检查约束,确保列中的值符合指定条件

例如,创建一个 Orders 表,包含上述约束:

CREATE TABLE Orders (OrderID INT PRIMARY KEY,EmployeeID INT,OrderDate DATE NOT NULL,Amount DECIMAL(10, 2) CHECK (Amount > 0),FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);

总结

通过本文的学习,相信你已经掌握了 SQL 的基本操作和一些高级功能。SQL 是一个功能强大且灵活的工具,可以帮助你高效地管理和操作数据库。在实际应用中,理解和熟练使用 SQL 将大大提高你的工作效率。

为了进一步提升你的 SQL 技能,建议你多动手实践,多尝试不同的查询和操作。同时,可以参考更多的 SQL 教程和文档,不断深入学习和探索 SQL 的高级功能。希望本文能为你的 SQL 学习之旅提供一个良好的起点。

相关文章:

SQL 基础入门教程

目录 什么是 SQL? SQL 的基本操作 数据库的创建和删除 表的创建和删除 数据的插入 数据的查询 数据的更新 数据的删除 SQL 的高级操作 表的连接 聚合函数 分组和排序 子查询 视图 索引 SQL 的数据完整性和约束 总结 SQL(Structured Que…...

<Python><paddleocr>基于python使用百度paddleocr实现图片文字识别与替换

前言 本文是使用百度的开源库paddleocr来实现对图片文字的识别,准确度还不错,对图片文字的替换,则利用opencv来完成。 环境配置 系统:windows 平台:visual studio code 语言:python 库:paddleocr、opencv、pyqt5 依赖库安装 本例所需要的库可以直接用pip来安装。 安装…...

小程序开发的费用简介篇

小程序的价格跟很多因素有关系,比如你想要的复杂度、功能多不多等等 今天我就来具体说说开发一款APP/小程序到底需要多少 ❶功能复杂度:功能越多越复杂,开发时间和费用就越高,费用就会高 ❷设计要求:高级的…...

torch.unflod与torch.nn.functional.pad用法

PyTorch 中的两个函数:torch.unfold 和 torch.nn.unfold。它们分别用于不同的目的,让我们分别来理解一下: torch.nn.Unfold 类功能: 类似于函数 torch.unfold,torch.nn.Unfold 类也用于沿着指定维度滑动提取窗口并将每个窗口展平。与函数不同的是,torch.nn.Unfold 是一个…...

江苏 服务器性能监控包含哪些方面?

服务器的性能监控主要是为了确保服务器能够正常运行工作和性能优化的重要手段,接下来就来看一下服务器性能监控所包含的内容有哪些吧! 首先对于服务器的系统资源进行一定的监控,CPU作为服务器的核心组件之一,所以我们要监控CPU的使…...

卓越的 App UI 风格引领潮流

卓越的 App UI 风格引领潮流...

BirdTalk IM集群中消息流转策略讨论

BirdTalk IM集群中消息流转策略讨论 目前群聊的存储策略是1写多读方案;每个群组一个队列,按时间顺序排列,不区分用户; 私聊的存储是写扩散的,每个人都有自己的消息队列,按时间顺序 保存所有的消息&#x…...

重磅!2024年最新影响因子正式发布,附Excel下载

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 激动人心的时刻终于来了,2024年影响因子已全面发布!废话不多说,大家一起来看看最新的发布的结果吧! 神刊:CA-A CANCER JOURNA…...

【会议征稿】2024年应用计算智能、信息学与大数据国际会议(ACIIBD 2024,7月26-28)

2024年应用计算智能、信息学与大数据国际学术会议(ACIIBD 2024)将于2024年7月26-28日在中国广州举办。会议将聚焦于计算智能及其应用、信息、大数据等相关的研究领域, 广泛邀请国内外知名专家学者,共同探讨相关学科领域的最新发展…...

【代码发布】Quantlab4.3:lightGBM应用于全球大类资产的多因子智能策略(代码+数据)

原创文章第566篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天,Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码数据),我们完成了因子集构建,并尝试…...

【毕业设计】Django 校园二手交易平台(有源码+mysql数据)

此项目有完整实现源码,有需要请联系博主 Django 校园二手交易平台开发项目 项目选择动机 本项目旨在开发一个基于Django的校园二手交易平台,为大学生提供一个安全便捷的二手物品买卖平台。该平台将提供用户注册和认证、物品发布和搜索、交易信息管理等…...

文章自动生成器,在线AI写作工具

随着人工智能AI技术的发展,AI技术被应用到越来越多的场景。对于需要创作内容的同学来说,AI写作-文章内容自动生成器是一个非常好的辅助工具。AI写作工具可以提升我们的创作效率,快速的生成文章,然后在根据需求进行调整修改即可。下…...

Matlab初识:什么是Matlab?它的历史、发展和应用领域

目录 一、什么是Matlab? 二、Matlab的历史与发展 三、Matlab的应用领域 四、安装和启动Matlab 五、界面介绍 六、第一个Matlab程序 七、总结 一、什么是Matlab? Matlab 是由 MathWorks 公司开发的一款用于数值计算、可视化以及编程的高级技术计算…...

大模型之-Seq2Seq介绍

大模型之-Seq2Seq介绍 1. Seq2Seq 模型概述 Seq2Seq(Sequence to Sequence)模型是一种用于处理序列数据的深度学习模型,常用于机器翻译、文本摘要和对话系统等任务。它的核心思想是将一个输入序列转换成一个输出序列。 Seq2Seq模型由两个主…...

NSSCTF-Web题目12

目录 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 3、思路 [UUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 3、思路 [羊城杯 2020]easycon 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 命令执行,tee命令 3、思路…...

22、架构-资源与调度

1、资源与调度 调度是容器编排系统最核心的功能之一,“编排”一词本身便包 含“调度”的含义。调度是指为新创建的Pod找到一个最恰当的宿主机 节点来运行它,这个过程成功与否、结果恰当与否,关键取决于容器 编排系统是如何管理与分配集群节点…...

mac 常用工具命令集合

Iterm2 Command T:新建标签 Command W:关闭当前标签 Command ← →:在标签之间切换 Control U:清除当前行 Control A:跳转到行首 Control E:跳转到行尾 Command F:查找 Command …...

服务器雪崩的应对策略之----限流

限流是一种控制流量的技术,旨在防止系统在高并发请求下被压垮。通过限流,可以确保系统在负载高峰期依然能保持稳定运行。常见的限流策略包括令牌桶算法、漏桶算法、计数器算法和滑动窗口算法。 常见的限流方法 1. 令牌桶算法 (Token Bucket Algorithm)2…...

Python12 列表推导式

1.什么是列表推导式 Python的列表推导式(list comprehension)是一种简洁的构建列表(list)的方法,它可以从一个现有的列表中根据某种指定的规则快速创建一个新列表。这种方法不仅代码更加简洁,执行效率也很…...

threejs 光影投射-与场景进行交互(六)

效果 场景中有三个立方体,三种颜色.点击变成红色,再点恢复自身原有颜色 代码 import ./style.css import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { log } from three/examples/jsm/nodes/Nodes.js//…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...

李沐--动手学深度学习--GRU

1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本: 2.2.4.0 内核版本: 5.15.153.1-2 WSLg 版本: 1.0.61 MSRDC 版本: 1.2.5326 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.2609…...

中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点

中科院1区顶刊|IF14:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点 当下,免疫与代谢性疾病的关联研究已成为生命科学领域的前沿热点。随着研究的深入,我们愈发清晰地认识到免疫系统与代谢系统之间存在着极为复…...

Yolo11改进策略:Block改进|FCM,特征互补映射模块|AAAI 2025|即插即用

1 论文信息 FBRT-YOLO(Faster and Better for Real-Time Aerial Image Detection)是由北京理工大学团队提出的专用于航拍图像实时目标检测的创新框架,发表于AAAI 2025。论文针对航拍场景中小目标检测的核心难题展开研究,重点解决…...

联邦学习带宽资源分配

带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...