SQL入门通识:轻松掌握数据库查询语言

文章目录

      • 什么是SQL?
      • SQL的基本概念
      • SQL的基本操作
        • 查询(SELECT)
        • 插入(INSERT)
        • 更新(UPDATE)
        • 删除(DELETE)
      • 结合操作:联表查询和排序
        • 联表查询(JOIN)
        • 排序(ORDER BY)
      • SQL的数据类型
      • SQL的函数
      • SQL的高级特性
      • SQL的索引
      • SQL的事务
      • SQL的权限管理
      • 结语

本文将介绍SQL的基本概念和使用方法。SQL是一种非常实用的技能,无论你是程序员、数据分析师还是想要提高工作效率的普通职员,学习SQL都会为你带来很大的帮助。

什么是SQL?

SQL(Structured Query Language,结构化查询语言)是一种用于操作和查询关系型数据库的编程语言。关系型数据库是一种以表格形式存储数据的数据库,如MySQL、Oracle、SQL Server和SQLite等。通过使用SQL,你可以轻松地从数据库中获取、插入、更新和删除数据。

SQL的基本概念

在开始学习SQL之前,我们需要了解一些基本概念:

  1. 数据库(Database):数据库是一个存储数据的集合。一个数据库可以包含多个表格(Table)。
  2. 表格(Table):表格是数据库中存储数据的基本单位。一个表格由行(Row)和列(Column)组成,类似于Excel中的工作表。
  3. 字段(Field):字段是表格中的某一列,用于描述数据的属性。例如,一个员工表格可能包含姓名、年龄、职位等字段。
  4. 记录(Record):记录是表格中的某一行,表示一条数据。例如,员工表格中的每一行都代表一个员工的信息。

SQL的基本操作

学习SQL,首先要掌握四个基本操作:查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)。下面我们分别介绍这四个操作的用法。

查询(SELECT)

查询是SQL中最常用的操作之一,用于从表格中获取数据。查询操作的基本语法如下:

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

例如,我们有一个员工表格(employees),包含以下字段:id、name、age和position。如果我们想要查询所有员工的姓名和职位,可以使用以下SQL语句:

SELECT name, position
FROM employees;

如果我们只想要查询年龄大于30的员工,可以加上WHERE子句设置条件:

SELECT name, position
FROM employees
WHERE age > 30;
插入(INSERT)

插入操作用于向表格中添加新的记录。插入操作的基本语法如下:

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

例如,我们想要向员工表格(employees)中插入一条新的记录,可以使用以下SQL语句:

INSERT INTO employees (name, age, position)
VALUES ('张三', 25, '工程师');
更新(UPDATE)

更新操作用于修改表格中已有的记录。更新操作的基本语法如下:

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

例如,我们想要将员工表格(employees)中年龄大于60的员工的职位改为“退休”,可以使用以下SQL语句:

UPDATE employees
SET position = '退休'
WHERE age > 60;
删除(DELETE)

删除操作用于从表格中移除记录。删除操作的基本语法如下:

DELETE FROM 表名
WHERE 条件;

例如,我们想要删除员工表格(employees)中已经离职的员工,可以使用以下SQL语句:

DELETE FROM employees
WHERE position = '离职';

结合操作:联表查询和排序

除了基本操作外,SQL还提供了一些高级功能,如联表查询和排序。下面我们简要介绍这两种操作。

联表查询(JOIN)

联表查询用于从多个表格中获取数据。例如,我们有一个员工表格(employees)和一个部门表格(departments),每个员工都属于一个部门。如果我们想要查询每个员工所属的部门名称,可以使用JOIN操作:

SELECT employees.name, departments.name
FROM employees
JOIN departments ON employees.department_id = departments.id;

这个SQL语句将员工表格和部门表格联接在一起,根据员工的department_id和部门的id进行匹配。

排序(ORDER BY)

排序操作用于对查询结果进行排序。例如,我们想要查询员工表格(employees)中的所有员工,并按照年龄从小到大排序,可以使用ORDER BY子句:

SELECT name, age
FROM employees
ORDER BY age ASC;

在这个SQL语句中,ASC表示升序排列,如果想要降序排列,可以使用DESC关键字。

SQL的数据类型

在创建数据库表格时,我们需要为每个字段指定数据类型。SQL支持多种数据类型,以下是一些常见的数据类型:

  1. INTEGER:整数,如1、2、3等。
  2. FLOAT:浮点数,如1.23、3.14等。
  3. VARCHAR(n):可变长度的字符串,最大长度为n。例如,VARCHAR(255)可以存储最长为255个字符的字符串。
  4. BOOLEAN:布尔值,只能是TRUE或FALSE。
  5. DATE:日期,格式为YYYY-MM-DD。
  6. TIME:时间,格式为HH:MM:SS。

SQL的函数

SQL还提供了一些内置函数,用于处理各种计算和转换任务。以下是一些常用的SQL函数:

  1. COUNT():计算行数。例如,SELECT COUNT(*) FROM employees可以获取员工表格的行数。
  2. SUM():计算总和。例如,SELECT SUM(salary) FROM employees可以获取所有员工的工资总和。
  3. AVG():计算平均值。例如,SELECT AVG(age) FROM employees可以获取所有员工的平均年龄。
  4. MIN()和MAX():获取最小值和最大值。例如,SELECT MIN(age), MAX(age) FROM employees可以获取员工的最小和最大年龄。
  5. UPPER()和LOWER():将字符串转换为大写或小写。例如,SELECT UPPER(name) FROM employees可以获取所有员工名字的大写形式。

SQL的高级特性

除了基本操作和函数,SQL还有一些高级特性,如子查询、视图和存储过程等。以下是这些特性的简要介绍:

  1. 子查询(Subquery):子查询是嵌套在其他查询中的查询。例如,我们可以使用子查询来查询工资高于平均工资的员工:SELECT name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees)
  2. 视图(View):视图是一个虚拟的表格,它的内容由查询定义。视图可以简化复杂的查询,提高数据安全性。
  3. 存储过程(Stored Procedure):存储过程是一组预编译的SQL语句,可以作为一个单元执行。存储过程可以提高性能,减少网络流量。

SQL的索引

索引是数据库中用于优化查询性能的一种数据结构。通过为表格中的一个或多个字段创建索引,可以加快查询速度。然而,索引并非没有代价,它会占用额外的存储空间,并在插入、更新和删除操作时带来额外的开销。因此,在创建索引时需要权衡查询性能和存储空间的需求。

以下是创建索引的基本语法:

CREATE INDEX 索引名
ON 表名 (列名1, 列名2, ...);

例如,我们可以为员工表格(employees)中的姓名字段创建一个索引,以加快按照姓名查询的速度:

CREATE INDEX idx_name
ON employees (name);

SQL的事务

事务是一组顺序执行的SQL操作,它们作为一个整体来维护数据的完整性和一致性。事务具有以下四个特性,通常称为ACID特性:

  1. 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败。如果其中一个操作失败,整个事务将回滚到初始状态。
  2. 一致性(Consistency):事务应确保数据库从一个一致性状态转换为另一个一致性状态。在事务开始和结束时,数据库的完整性约束必须得到满足。
  3. 隔离性(Isolation):事务允许多个用户并发访问数据库,同时保证每个用户看到的数据是一致的。一个事务的中间状态对其他事务是不可见的。
  4. 持久性(Durability):一旦事务成功完成,对数据库的更改将永久保存。

以下是一个简单的事务示例:

BEGIN TRANSACTION; -- 开始事务UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- 从账户1扣除100
UPDATE accounts SET balance = balance + 100 WHERE id = 2; -- 向账户2添加100COMMIT; -- 提交事务

这个示例表示从账户1向账户2转账100。通过使用事务,我们可以确保转账操作的原子性和一致性。

SQL的权限管理

数据库通常包含敏感信息,因此需要对访问权限进行管理。SQL提供了一些语句来控制用户对数据库对象(如表格、视图和索引)的访问权限。以下是一些常用的权限管理语句:

  1. GRANT:授予用户访问权限。例如,GRANT SELECT, INSERT ON employees TO user1;表示授予user1查询和插入员工表格的权限。
  2. REVOKE:撤销用户访问权限。例如,REVOKE INSERT ON employees FROM user1;表示撤销user1插入员工表格的权限。

通过使用SQL的权限管理功能,你可以确保数据库的安全性,防止未经授权的访问和操作。

结语

至此,你已经学习了SQL的基本概念、操作、数据类型、函数、高级特性、索引、事务和权限管理等内容。通过对这些知识的掌握,你将能够更有效地处理数据库中的数据,提高工作效率。当然,SQL还有更多的功能等待你去发掘。希望你在SQL学习之旅上不断进步,成为一名出色的数据处理专家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(CVPR-2024)通过多阶段框架和定制的多解码器架构提高扩散模型的训练效率

通过多阶段框架和定制的多解码器架构提高扩散模型的训练效率 Paper Title:Improving Training Efficiency of Diffusion Models via Multi-Stage Framework and Tailored Multi-Decoder Architecture Paper是密歇根大学发表在CVPR 2024的工作 Paper地址 Code地址 Abstract 扩散…

通过哨兵1号SAR数据获取桂林619洪水内涝情况

目录 1.SAR数据下载 2.SAR数据处理 1、下载轨道数据并进行轨道校正。 2、数据处理 3、转换SAR单位并创建彩色合成影像 3.查看彩色合成SAR数据 4.水体提取方法探讨 方法1:阈值提取法 方法2:深度学习提取水域 5.SAR与DEM数据获取 2024年6月19日&a…

MobaXterm 软件安装及使用

MobaXterm 软件安装及使用 1. 引言 MobaXterm是一款功能强大的终端软件,支持SSH、Telnet、RDP、VNC、FTP、SFTP、X11转发和串口等远程会话功能。它使得在Windows系统上进行Linux系统的远程管理和文件传输变得简单便捷。 2. MobaXterm 软件下载 下载链接&#xff…

蚓链数字化生态平台:构建城市智能商业,引领协同发展新潮流

​在当今数字化飞速发展的时代,城市商业的运行模式正在经历着数字化变革。蚓链数字化生态平台应运而生,以其强大的功能和创新的理念,成为构建城市智能商业枢纽中心的关键力量,推动着平台互通、业务贯通、管理协同的全新发展格局。…

五个优秀的免费 Ollama WebUI 客户端推荐

认识 Ollama 本地模型框架,并简单了解它的优势和不足,以及推荐了 5 款开源免费的 Ollama WebUI 客户端,以提高使用体验。 什么是 Ollama? Ollama 是一款强大的本地运行大型语言模型(LLM)的框架&#xff0c…

opencascade AIS_ManipulatorOwner AIS_MediaPlayer源码学习

前言 AIS_ManipulatorOwner是OpenCascade中的一个类,主要用于操纵对象的交互控制。AIS_ManipulatorOwner结合AIS_Manipulator类,允许用户通过可视化工具(如旋转、平移、缩放等)来操纵几何对象。 以下是AIS_ManipulatorOwner的基…

深度强化学习 ②(DRL)

参考视频:📺王树森教授深度强化学习 前言: 最近在学习深度强化学习,学的一知半解😢😢😢,这是我的笔记,欢迎和我一起学习交流~ 这篇博客目前还相对比较乱,后面…

angular入门基础教程(一)环境配置与新建项目

ng已经更新到v18了,我对他的印象还停留在v1,v2的版本,最近研究了下,与react和vue是越来越像了,所以准备正式上手了。 新官网地址:https://angular.cn/ 准备条件 nodejs > 18.0vscodeng版本18.x(最新的版本) {"name&qu…

【前端 17】使用Axios发送异步请求

Axios 简介与使用:简化 HTTP 请求 在现代 web 开发中,发送 HTTP 请求是一项常见且核心的任务。Axios 是一个基于 Promise 的 HTTP 客户端,适用于 node.js 和浏览器,它提供了一种简单的方法来发送各种 HTTP 请求。本文将介绍 Axio…

【虚拟化】KVM概念和架构

目录 一、什么是KVM? 二、KVM的功能 2.1 主要的功能 2.2 其它功能 三、KVM核心组件及作用 四、KVM与VMware的优势 五、KVM架构 六、qemu介绍 七、创建虚拟机流程 一、什么是KVM? Kernel-based Virtual Machine的简称,KVM 是基于虚拟…

ubuntu部署k8s/microk8s安装部署

资源 节点名称IP配置系统node310.2.20.174核8GUbuntu Server 22.04 LTS 64bitnode210.2.24.44核8GUbuntu Server 22.04 LTS 64bitnode110.2.20.134核8GUbuntu Server 22.04 LTS 64bitmaster10.2.24.104核8GUbuntu Server 22.04 LTS 64bit ps:所有命令尽量使用root账号操作 1…

实体店怎么做会员分析管理,告别“僵尸“会员?

在线上严重蚕食线下的当下,如果实体店不重视会员分析,那它将会错失更多的客户,甚至面临被淘汰的危险。 近年来,越来越多的实体店商家开始重视会员分析管理,但要做好会员分析管理并非易事,需要一整套的工具…

RK平台瑞发科NS6601 MIPI CSI VC虚拟通道支持不同分辨率

需求&#xff1a;两路不同分辨率的摄像头&#xff0c;通过des后输入给一路MIPI CSI。在capture的时候&#xff0c;可以分别支持不同分辨率的capture动作。 设备树 &i2c2 {status "okay";pinctrl-names "default";pinctrl-0 <&i2c2m4_xfer&g…

NLP笔记

文本处理和词嵌入 对于机器来说&#xff0c;不能理解一句话的意思&#xff0c;解决办法就是将一句话分割成多个词&#xff0c;用数字代表一个词&#xff0c;将一句话转化成数字的列表 这个词对应的字典又是怎么训练出来的呢&#xff0c;遍历这个词的列表&#xff0c;如果在字…

socket 学习-信息收集

【网络编程知识】什么是Socket&#xff1f;概念及原理分析_network socket数量表示什么-CSDN博客这篇文章带你读懂Socket&#xff0c;让你知道什么是Socket&#xff1f;-阿里云开发者社区 (aliyun.com)socket通讯原理及例程&#xff08;一看就懂&#xff09;-CSDN博客Socket通信…

ConvGRU原理与开源代码

ConvGRU 1. 算法简介与应用场景2. 算法原理2.1 GRU基础2.2 ConvGRU原理2.2.1 ConvGRU的结构2.2.2 卷积操作的优点 2.3 GRU与ConvGRU的对比分析2.4 ConvGRU的应用 3. PyTorch代码 仅需要网络源码的可以直接跳到末尾即可 需要ConvLSTM的可以参考我的另外一篇博客&#xff1a;小白…

智能农业卫士:基于深度学习的农作物害虫检测系统全解析

基于深度学习的农作物害虫检测系统&#xff08;UI界面YOLOv8/v7/v6/v5代码训练数据集&#xff09; 引言 农作物害虫对农业生产的威胁巨大&#xff0c;传统的害虫监测方法费时费力&#xff0c;且准确率较低。随着深度学习技术的快速发展&#xff0c;利用先进的目标检测模型如Y…

MyEclipse关闭synchronizing script resources with Tern server

项目被转换为tern项目了 在项目根目录删掉.tern-project

初识HTML文件,创建自己的第一个网页!

本文旨在初步介绍HTML&#xff08;超文本标记语言&#xff09;&#xff0c;帮助读者理解HTML中的相关术语及概念&#xff0c;并使读者在完成本文的阅读后可以快速上手编写一个属于自己的简易网页。 一、HTML介绍 HTML(全称HyperText Markup Language&#xff0c;超文本标记语言…

【C++】位图 + 布隆过滤器

目录 1. 位图1.1. 概念1.2. 实现1.3. 应用 2. 布隆过滤器2.1. 背景2.2. 概念2.3. 实现2.4. 优点2.5. 缺点 3. 海量数据面试题3.1. 哈希切割3.2. 位图应用3.3. 布隆过滤器3.4. 总结 1. 位图 1.1. 概念 位图是一种用于高效地存储和操作集合的数据结构。它的基本思想是使用一个二…