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

【SQL】深入理解SQL:从基础概念到常用命令

目录

  • 1. SQL基础概念
    • 1.1 数据库与表
    • 1.2 行与列
    • 1.3 数据库与表结构示意图
  • 2. 常用SQL命令
  • 3. DML 命令
    • 3.1 SELECT语句
    • 3.2 INSERT语句
    • 3.3 UPDATE语句
    • 3.4 DELETE语句
  • 4. DDL 命令
    • 3.4.1 CREATE 命令
    • 3.4.2 ALTER 命令
    • 3.4.3 DROP 命令
  • 5. DCL 命令
    • 3.6.1 GRANT 命令
    • 3.6.2 REVOKE 命令
  • 学习建议
  • 总结

在当今数据驱动的时代,掌握SQL(结构化查询语言)对于数据库管理和数据分析至关重要。本文将带您深入了解SQL的基础概念,包括数据库与表、行与列,以及它们之间的关系。同时,我们将详细介绍常用的SQL命令,尤其是数据操作语言(DML)、数据定义语言(DDL)和数据控制语言(DCL),帮助您高效地对数据库进行操作。通过示例,您将更好地理解如何在实际应用中使用这些命令。

1. SQL基础概念

SQL(结构化查询语言)是一种用于管理关系型数据库的标准编程语言。它不仅可以用于查询数据,还可以操控数据、定义数据结构和控制数据访问。

1.1 数据库与表

  • 数据库:是一个组织良好的数据集合,通常涉及多个相互关联的表。每个表存储不同类型的数据,表之间可以通过外键建立联系。

  • :是数据库中存储数据的基本结构,类似于电子表格,每一列代表一个字段,每一行代表一条记录。

示例

设想一个在:线商店的数据库,其中可以有以下两个表:

  • Customers(客户表):包含客户的基本信息,如姓名、联系方式等。
  • Orders(订单表):记录客户的订单详情,包括产品、数量、价格等。

1.2 行与列

  • 行(Record/Row):在表中,每一行表示一条完整的记录。例如,在Customers表中,一行可能包含某个客户的姓名、地址和联系方式。

  • 列(Field/Column):列定义了数据的类型和属性。例如,在Customers表中,可能有NameAddressPhone等列,这些列共同构成每条记录的结构。

1.3 数据库与表结构示意图

Database
Table1
Table2
Row1
Row2
Row1
CSDN @ 2136

2. 常用SQL命令

在SQL中,常用的命令可以分为几大类,每种命令都有其特定的用途和语法。

命令类别命令描述
DMLSELECT查询数据
INSERT插入数据
UPDATE更新数据
DELETE删除数据
DDLCREATE创建数据库或表
ALTER修改表的结构
DROP删除数据库或表
DCLGRANT授予权限
REVOKE撤销权限

各种命令的详细介绍

  • DML(数据操作语言):用于处理数据的命令,包括查询、插入、更新和删除。这些命令直接操作数据库中的数据。

  • DDL(数据定义语言):用于定义和修改数据库的结构。这些命令涉及表的创建、修改和删除等操作。

  • DCL(数据控制语言):用于控制访问权限,确保数据安全性。通过这些命令,可以授予或撤销用户的访问权限。

3. DML 命令

数据操作语言(DML) 用于对数据库中的数据进行操作。

命令描述
SELECT查询数据
INSERT插入新数据
UPDATE更新现有数据
DELETE删除数据

3.1 SELECT语句

SELECT语句是SQL中最常用的命令,用于从数据库中查询数据。

基本语法

SELECT column1, column2 
FROM table_name 
WHERE condition;
  • SELECT:指定要查询的列。
  • FROM:指定要查询的表。
  • WHERE:可选,设置查询条件,以过滤结果。

示例:查询员工表中所有员工的姓名和工资

SELECT name, salary 
FROM employees 
WHERE salary > 50000;

在这个示例中,查询条件是“工资大于50000”,结果只返回符合该条件的员工姓名和工资。

进阶用法

  • 查询所有列:使用星号(*)可以查询表中的所有列

    SELECT * FROM employees;
    
  • 排序结果:使用ORDER BY对结果进行排序

    SELECT name, salary 
    FROM employees 
    WHERE salary > 50000 
    ORDER BY salary DESC;
    
  • 限制结果数量:使用LIMIT关键字限制返回的行数

    SELECT name, salary 
    FROM employees 
    WHERE salary > 50000 
    LIMIT 10;
    

3.2 INSERT语句

INSERT语句用于向表中插入新数据。

基本语法

INSERT INTO table_name (column1, column2) 
VALUES (value1, value2);
  • INSERT INTO:指定要插入数据的表。
  • VALUES:提供要插入的具体值。

示例:向员工表中插入新员工的信息

INSERT INTO employees (name, salary) 
VALUES ('John Doe', 60000);

在这里,向employees表插入了一名新员工John Doe及其工资。

进阶用法

  • 批量插入:可以一次性插入多条记录

    INSERT INTO employees (name, salary) 
    VALUES 
    ('Jane Smith', 70000),
    ('Michael Brown', 80000);
    
  • 插入从查询结果:可以通过子查询插入数据

    INSERT INTO high_salary_employees (name, salary)
    SELECT name, salary 
    FROM employees 
    WHERE salary > 70000;
    

3.3 UPDATE语句

UPDATE语句用于修改已存在的记录。

基本语法

UPDATE table_name 
SET column1 = value1 
WHERE condition;
  • UPDATE:指定要更新的表。
  • SET:定义要修改的列及其新值。
  • WHERE:确定哪些记录需要更新。

示例:更新某员工的工资

UPDATE employees 
SET salary = 65000 
WHERE name = 'John Doe';

这条语句将John Doe的工资更新为65000。

进阶用法

  • 更新多列:同时更新多个列的值

    UPDATE employees 
    SET salary = 70000, department = 'Marketing' 
    WHERE name = 'Jane Smith';
    
  • 条件更新:基于特定条件更新多条记录

    UPDATE employees 
    SET salary = salary * 1.1 
    WHERE department = 'Sales';
    

3.4 DELETE语句

DELETE语句用于从表中删除记录。

基本语法

DELETE FROM table_name 
WHERE condition;
  • DELETE FROM:指定要删除记录的表。
  • WHERE:确定哪些记录需要删除。

示例:删除一名员工的记录

DELETE FROM employees 
WHERE name = 'John Doe';

这条语句将删除名为John Doe的员工记录。

注意事项

  1. 没有WHERE子句:如果省略WHERE子句,所有行都会被删除,操作不可逆。例如:

    DELETE FROM employees; 
    

    此命令会删除employees表中的所有数据。

  2. 使用事务:建议在进行DELETE操作时使用事务,这样在出现问题时可以回滚。例如:

    BEGIN;
    DELETE FROM employees WHERE name = 'John Doe';
    COMMIT;
    
  3. 外键约束:如果要删除的记录在其他表中被外键引用,可能会导致删除失败。在这种情况下,需要先处理相关的外键记录。

  4. 性能影响:在大数据量的表上执行DELETE可能会导致性能问题,可以考虑批量删除或使用TRUNCATE命令(注意TRUNCATE会删除所有记录并且速度更快)。

示例:基于条件删除多条记录

DELETE FROM employees 
WHERE department = 'Sales' AND hire_date < '2020-01-01';

这条语句将删除所有在销售部门且入职日期早于2020年1月1日的员工记录。

示例:删除记录后检查受影响的行数

DELETE FROM employees 
WHERE department = 'HR';
SELECT ROW_COUNT();

这段代码首先删除所有人力资源部门的员工,然后查询受影响的行数。

4. DDL 命令

数据定义语言(DDL) 用于定义和管理数据库结构。

命令描述
CREATE创建数据库或表
ALTER修改表的结构
DROP删除数据库或表

3.4.1 CREATE 命令

CREATE命令用于创建数据库或表。

基本语法

  • 创建数据库:

    CREATE DATABASE database_name;
    
  • 创建表:

    CREATE TABLE table_name (column1 datatype,column2 datatype,...
    );
    

示例:创建一个名为employees的表

CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(100),salary DECIMAL(15, 2),hire_date DATE
);

3.4.2 ALTER 命令

ALTER命令用于修改已存在表的结构。

基本语法

ALTER TABLE table_name 
ADD column_name datatype;  -- 添加新列ALTER TABLE table_name 
DROP COLUMN column_name;   -- 删除列ALTER TABLE table_name 
MODIFY COLUMN column_name datatype;  -- 修改列的类型

示例:向employees表添加一个新列department

ALTER TABLE employees 
ADD department VARCHAR(50);

3.4.3 DROP 命令

DROP命令用于删除数据库或表。

基本语法

  • 删除数据库:

    DROP DATABASE database_name;
    
  • 删除表:

    DROP TABLE table_name;
    

示例:删除名为employees的表

DROP TABLE employees;

5. DCL 命令

数据控制语言(DCL) 用于管理数据库用户权限。

命令描述
GRANT授予权限
REVOKE撤销权限

3.6.1 GRANT 命令

GRANT命令用于授予用户特定的权限。

基本语法

GRANT privilege_type ON object TO user;

示例:授予用户usernameemployees表的查询权限

GRANT SELECT ON employees TO username;

3.6.2 REVOKE 命令

REVOKE命令用于撤销用户的特定权限。

基本语法

REVOKE privilege_type ON object FROM user;

示例:撤销用户usernameemployees表的查询权限

REVOKE SELECT ON employees FROM username;

学习建议

  • 实践:通过实际操作数据库来巩固所学知识,可以使用如MySQL、PostgreSQL等数据库管理系统进行练习。
  • 阅读文档:了解不同数据库系统的SQL方言和特性,确保掌握各种可能遇到的情况。
  • 构建项目:尝试构建小型项目,将理论应用于实践中,比如开发一个简单的在线商店或图书管理系统。

总结

本文提供了一个全面的SQL学习指南,从基础概念到具体命令,为读者打下坚实的数据库知识基础。您不仅学会了如何创建、修改和删除数据库对象,还掌握了如何有效地进行数据查询和操作。无论您是初学者还是希望提升技能的开发者,这篇文章都将成为您日常工作中的重要参考。希望通过不断实践和探索,您能熟练运用SQL,提升数据管理的能力。


相关文章:

【SQL】深入理解SQL:从基础概念到常用命令

目录 1. SQL基础概念1.1 数据库与表1.2 行与列1.3 数据库与表结构示意图 2. 常用SQL命令3. DML 命令3.1 SELECT语句3.2 INSERT语句3.3 UPDATE语句3.4 DELETE语句 4. DDL 命令3.4.1 CREATE 命令3.4.2 ALTER 命令3.4.3 DROP 命令 5. DCL 命令3.6.1 GRANT 命令3.6.2 REVOKE 命令 学…...

一文看懂计算机中的大小端(Endianess)

文章目录 前言一、什么是大小端二、如何判断大小端三、大小端的转换3.1 使用标准库函数3.2 手动实现大小端转换 前言 本文主要探讨计算机中大小端的相关概念以及如何进行大小端的判断和转换等。 一、什么是大小端 大小端&#xff08;Endianess&#xff09;是指计算机系统在存…...

如何给父母安排体检?

总结&#xff1a;给父母安排体检&#xff0c;常规项目针对项目。 其中针对项目是根据父母自身的病史来设计。 如何快速了解这些体检项目&#xff1f;我自己认为最快的方式&#xff0c;自己去医院体检两次&#xff0c;这样对体检的项目有一定的了解&#xff0c;比如这个项目怎么…...

C++之模版进阶篇

目录 前言 1.非类型模版参数 2.模版的特化 2.1概念 2.2函数模版特化 2.3 类模板特化 2.3.1 全特化和偏特化 2.3.2类模版特化应用实例 3.模版分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决方法 4. 模板总结 结束语 前言 在模版初阶我们学习了函数模版和类…...

Vue3 中的 `replace` 属性:优化路由导航的利器

嘿&#xff0c;小伙伴们&#xff01;今天给大家带来一个Vue3中非常实用的小技巧——replace属性的使用方法。在Vue Router中&#xff0c;replace属性可以帮助我们在导航时不留下历史记录&#xff0c;这对于一些特定的应用场景非常有用。话不多说&#xff0c;让我们直接进入实战…...

vite学习教程06、vite.config.js配置

前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1a;Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。 博主所有博客文件…...

【大数据】Flink CDC 实时同步mysql数据

目录 一、前言 二、Flink CDC介绍 2.1 什么是Flink CDC 2.2 Flink CDC 特点 2.3 Flink CDC 核心工作原理 2.4 Flink CDC 使用场景 三、常用的数据同步方案对比 3.1 数据同步概述 3.1.1 数据同步来源 3.2 常用的数据同步方案汇总 3.3 为什么推荐Flink CDC 3.4 Flink …...

JavaEE: 深入解析HTTP协议的奥秘(1)

文章目录 HTTPHTTP 是什么HTTP 协议抓包fiddle 用法 HTTP 请求响应基本格式 HTTP HTTP 是什么 HTTP 全称为"超文本传输协议". HTTP不仅仅能传输文本,还能传输图片,传输音频文件,传输其他的各种数据. 因此它广泛应用在日常开发的各种场景中. HTTP 往往是基于传输层的…...

OpenStack Yoga版安装笔记(十六)Openstack网络理解

0、前言 本文将以Openstack在Linux Bridge环境下的应用为例进行阐述。 1、Openstack抽象网络 OpenStack的抽象网络主要包括网络&#xff08;network&#xff09;、子网&#xff08;subnet&#xff09;、端口&#xff08;port&#xff09;&#xff0c;路由器&#xff08;rout…...

PEFT库和transformers库在NLP大模型中的使用和常用方法详解

PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;库是一个用于有效微调大型预训练语言模型的工具&#xff0c;尤其是在计算资源有限的情况下。它提供了一系列技术&#xff0c;旨在提高微调过程的效率和灵活性。以下是PEFT库的详细解读以及一些常用方法的总结&…...

静止坐标系和旋转坐标系变换的线性化,锁相环线性化通用推导

将笛卡尔坐标系的电压 [ U x , U y ] [U_x, U_y] [Ux​,Uy​] 通过旋转变换(由锁相环角度 θ P L L \theta_{PLL} θPLL​ 控制)转换为 dq 坐标系下的电压 [ U d , U q ] [U_d, U_q] [Ud​,Uq​]。这个公式是非线性的,因为它涉及到正弦和余弦函数。 图片中的推导过程主要…...

AI学习指南深度学习篇-学习率衰减的变体及扩展应用

AI学习指南深度学习篇 - 学习率衰减的变体及扩展应用 在深度学习的训练过程中&#xff0c;学习率的选择对模型的收敛速度和最终效果有重要影响。为了提升模型性能&#xff0c;学习率衰减&#xff08;Learning Rate Decay&#xff09;作为一种优化技术被广泛应用。本文将探讨多…...

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代&#xff0c;抖音作为短视频与直播电商的佼佼者&#xff0c;正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中&#xff0c;成都睿明智科技有限公司以其独到的眼光和专业的服务&#xff0c;成为了众多商家信赖的合作伙伴。今…...

力扣6~10题

题6&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 这个相较于前面只能是简单&#xff0c;个人认为&#xff0c;会print打印菱形都能搞这个&#xff0c;直接设置一个2阶数组就好了&#xff0c;只要注意位置变化就好了 python代码&#xff1a; def convert(self,…...

IntelliJ IDEA 2024.2 新特性概览

文章目录 1、重点特性:1.1 改进的 Spring Data JPA 支持1.2 改进的 cron 表达式支持1.3 使用 GraalJS 作为 HTTP 客户端的执行引擎1.4 更快的编码时间1.5 K2 模式下的 Kotlin 性能和稳定性改进 2、用户体验2.1 改进的全行代码补全2.2 新 UI 成为所有用户的默认界面2.3 Search E…...

C++基础(12)——初识list

目录 1.list的简介&#xff08;引用自cplusplus官网&#xff09; 2.list的相关使用 2.1有关list的定义 2.1.1方式一&#xff08;构造某类型的空容器&#xff09; 2.1.2方式二&#xff08;构造n个val的容器&#xff09; 2.1.3方式三&#xff08;拷贝构造&#xff09; 2.1.4…...

系统架构设计师论文《论NoSQL数据库技术及其应用》精选试读

论文真题 随着互联网web2.0网站的兴起&#xff0c;传统关系数据库在应对web2.0 网站&#xff0c;特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心&#xff0c;暴露了很多难以克服的问题&#xff0c;而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…...

产品经理产出的原型设计 - 需求文档应该怎么制作?

需求文档&#xff0c;产品经理最终产出的文档&#xff0c;也是产品设计最终的表述形式。本次分享呢&#xff0c;就是介绍如何写好一份需求文档。 所有元件均可复用&#xff0c;可作为管理端原型设计模板&#xff0c;按照实际项目需求进行功能拓展。有需要的话可分享源文件。 …...

phenylalanine ammonia-lyase苯丙氨酸解氨酶PAL功能验证-文献精读61

Molecular cloning and characterization of three phenylalanine ammonia-lyase genes from Schisandra chinensis 五味子中三种苯丙氨酸解氨酶基因的分子克隆及特性分析 摘要 苯丙氨酸解氨酶&#xff08;PAL&#xff09;催化L-苯丙氨酸向反式肉桂酸的转化&#xff0c;是植物…...

柯桥生活口语学习之在化妆品店可以用到的韩语句子

화장품을 사고 싶어요. 我想买化妆品。 어떤 화장품을 원하세요? 您想买什么化妆品。 스킨로션을 찾고 있어요. 我想买化妆水&#xff0c;乳液。 피부 타입은 어떠세요? 您是什么皮肤类型&#xff1f; 민감성 피부예요. 我是敏感性皮肤。 평소에 쓰시는 제품은 뭐예…...

Ubuntu 安装 Docker Compose

安装Docker Compose # 删除现有的 docker-compose&#xff08;如果存在&#xff09; sudo rm -f /usr/local/bin/docker-compose ​ # 下载最新的 docker-compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-…...

C++面试速通宝典——7

150. 数据库连接池的作用 数据库连接池的作用包括以下几个方面&#xff1a; 资源重用&#xff1a;连接池允许多个客户端共享有限的数据库连接&#xff0c;减少频繁创建和销毁连接的开销&#xff0c;从而提高资源的利用率。 统一的连接管理&#xff1a;连接池集中管理数据库连…...

毕业设计 大数据电影数据分析与可视化系统

文章目录 0 简介1 课题背景2 效果实现3 爬虫及实现4 Flask框架5 Ajax技术6 Echarts7 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目 &#x1f6a9;基于大数据的电影数据分析与可视化系统 项目运行效果(视频)&#xff1a; 毕业设计 大数据电影评论情感分析 &#x1…...

第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)

目录 重要信息 大会简介 组织单位 大会成员 征稿主题 会议日程 参会方式 重要信息 大会官网&#xff1a;www.icicml.org 大会时间&#xff1a;2024年11月22日-24日 大会地点&#xff1a;中国 深圳 大会简介 第三届图像处理、计算机视觉与机器学…...

OJ在线评测系统 微服务技术入门 单体项目改造为微服务 用Redis改造单机分布式锁登录

单体项目改造为微服务 什么是微服务 服务&#xff1a;提供某类功能的代码 微服务&#xff1a;专注于提供某类特定功能的代码 而不是把所有的代码放到同一个项目里 会把一个大的项目按照一定的功能逻辑进行划分 拆分成多个子模块 每个子模块可以独立运行 独立负责一类功能 …...

【机器学习】网络安全——异常检测与入侵防御系统

我的主页&#xff1a;2的n次方_ 随着全球互联网和数字基础设施的不断扩展&#xff0c;网络攻击的数量和复杂性都在显著增加。从传统的病毒和蠕虫攻击到现代复杂的高级持续性威胁&#xff08;APT&#xff09;&#xff0c;网络攻击呈现出更加智能化和隐蔽化的趋势。面对这样的…...

【C语言】基础篇续

最大公约数HCF与最小公倍数LCM #include<stdio.h> int main(){int n1,n2,i,hcf,lcm;printf("Enter two numbers:");scanf("%d %d",&n1,&n2);for(i 1;i < n1 & i < n2;i){if(n1 % i 0 & n2 % i 0){hcf i;lcm (n1*n2)/hc…...

文件丢失一键找回,四大数据恢复免费版工具推荐!

丢失数据的情况虽然不经常出现&#xff0c;但一旦出现都会让人头疼不已&#xff0c;而这时候&#xff0c;要如何恢复丢失的数据呢&#xff1f;一款免费好用的数据恢复工具就派上用场了&#xff01;接下来就为大家推荐几款好用的数据恢复工具&#xff01; 福昕数据恢复 直达链…...

【学习笔记】手写一个简单的 Spring MVC

目录 一、什么是Spring MVC &#xff1f; Spring 和 Spring MVC 的区别&#xff1f; Spring MVC 的运行流程&#xff1f; 二、实现步骤 1. DispatcherServlet 1. 创建一个中央分发器 拦截所有请求 测试 2. 接管 IOC 容器 1. 创建配置文件 2. 修改 web.xml 配置文件 …...

编程究竟难在哪里?

目录 一、将现实问题转化为代码二、应对需求的不断变化三、设计新算法的挑战结语 编程之难&#xff0c;常被概括为三个方面&#xff1a;首先&#xff0c;是将现实世界的问题转化为计算机语言的挑战&#xff1b;其次&#xff0c;是需求不断变化所带来的适应性难题&#xff1b;最…...