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 语句中的查询,可以用来进行复杂的数据筛选和计算。子查询可以出现在 SELECT
、INSERT
、UPDATE
和 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//…...

Ubuntu 20.04安装显卡驱动、CUDA和cuDNN(2024.06最新)
一、安装显卡驱动 1.1 查看显卡型号 lspci | grep -i nvidia我们发现输出的信息中有Device 2230,可以根据这个信息查询显卡型号 查询网址:https://admin.pci-ids.ucw.cz/mods/PC/10de?actionhelp?helppci 输入后点击Jump查询 我们发现显卡型号为RTX …...

二叉树的这五种遍历方法你们都会了吗?
说在前面 🎈二叉树大家应该都很熟了吧,那二叉树的这五种遍历方式你们都会了吗? 以这一二叉树为例子,我们来看看不同遍历方式返回的结果都是怎样的。 前序遍历 前序遍历的顺序是:首先访问根节点,然后递归地…...

使用模数转换器的比例电阻测量基础知识
A/D 转换器是比率式的,也就是说,它们的结果与输入电压与参考电压的比值成正比。这可用于简化电阻测量。 测量电阻的标准方法是让电流通过电阻并测量其压降 (见图 1)。然后,欧姆定律(V I x R) 可用于计算电压和电流的…...

(C++语言的设计和演化) C++的设计理念
文章目录 前言📖C 语言设计规则📐规则和原理📐一般性规则📐设计支持规则📐语言的技术性规则📐低级程序设计支持规则 📖标准化(扩充评判准则)📐它精确吗&#…...

AI音乐:创新引擎还是创意终结者?
✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…...

20240621每日后端---------如何优化项目中的10000个if-else 语句?
如何优化 10000 个 if-else 语句?有没有好的解决方案? 额,本身问题就很奇怪,怎么可能有这种代码。。。世界你让我陌生,但是我们还是假象着看看能不能解决一下。 解决方案1:策略模式 使用策略模式确实可以…...

【STM32】时钟树系统
1.时钟树简介 1.1五个时钟源 LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。 LSE是低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。 HSE是高速外部时钟,可接石英*/陶瓷谐振…...

docker换源
文章目录 前言1. 查找可用的镜像源2. 配置 Docker 镜像源3. 重启 Docker 服务4. 查看dock info是否修改成功5. 验证镜像源是否更换成功注意事项 前言 在pull镜像时遇到如下报错: ┌──(root㉿kali)-[/home/longl] └─# docker pull hello-world Using default …...

百度在线分销商城小程序源码系统 分销+会员组+新用户福利 前后端分离 带完整的安装代码包以及搭建部署教程
系统概述 百度在线分销商城小程序源码系统是一款集分销、会员组管理和新用户福利于一体的前后端分离的系统。它采用先进的技术架构,确保系统的稳定性、高效性和安全性。该系统的前端基于小程序开发,为用户提供了便捷的购物体验和交互界面。用户可以通过…...

Flutter【组件】富文本组件
简介 flutter 富文本组件。 github地址: https://github.com/ThinkerJack/jac_uikit pub地址:https://pub.dev/packages/jac_uikit 使用方式 运行 flutter pub add jac_uikit组件文档 使用方式: HighlightedTextWidget.builder(text: &…...