【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,提升数据管理的能力。


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

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

相关文章

【自然语言处理】补充:基于向量空间的分类器

【自然语言处理】补充:基于向量空间的分类器 文章目录 【自然语言处理】补充:基于向量空间的分类器1. 特征选择2. 基于向量空间的分类方法3. Rocchio4. KNN5. 线性分类器1. 特征选择 特征选择 文本分类中,通常要将文本表示在一个高维空间下,每一维对应一个词项许多维上对应…

VMware WorkStation Pro 15.5(低版本安装) 教学用

VMware WorkStation Pro 15.5(低版本安装) 教学用 文章目录 VMware WorkStation Pro 15.5(低版本安装) 教学用前言安装使用 前言 VMware Workstation Pro 15.5 是一款功能强大的桌面虚拟化软件&#xff0c;适用于在单台物理电脑上运行多个操作系统。它被广泛应用于软件开发、测…

PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程

介绍&#xff1a; 真正的好东西&#xff0c;搞网站优化seo从业必备。可以快速提升网站权重&#xff0c;带来的流量哗哗的 PHP泛目录生成源码 可生成新闻页面和关键词页面 带使用方法视频教程 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果…

WDG看门狗在stm32中的应用

一&#xff0c;WDG看门狗的介绍 看门狗可以监控程序的运行状态&#xff0c;当程序因为设计漏洞、硬件故障、电磁干扰等原因&#xff0c;出现卡死或跑飞现象时&#xff0c;看门狗能及时复位程序&#xff0c;避免程序陷入长时间的罢工状态&#xff0c;保证系统的可靠性和安全性看…

精确度和召回率

精确度&#xff08;Precision&#xff09;和召回率&#xff08;Recall&#xff09;是评估分类模型性能的两个重要指标&#xff0c;尤其在处理不平衡数据集时非常有用。它们通常用于二分类问题&#xff0c;但也可以扩展到多分类问题。 精确度&#xff08;Precision&#xff09;…

论文推荐 |【Agent】自动化Agent设计系统

论文标题&#xff1a; Automated Design of Agentic Systems 论文地址&#xff1a; https://arxiv.org/abs/2408.08435 GitHub地址&#xff1a; https://github.com/ShengranHu/ADAS 自动化代理设计在性能和通用性方面显著超越了手动方法。 • 引入了自动化代理系统设计&am…

JS模块化工具requirejs详解

文章目录 JS模块化工具requirejs详解一、引言二、RequireJS 简介1、什么是 RequireJS2、RequireJS 的优势 三、RequireJS 的使用1、配置 RequireJS1.1、基础配置 2、定义模块3、加载模块 四、总结 JS模块化工具requirejs详解 一、引言 随着前端技术的快速发展&#xff0c;Jav…

这些编程工具竟然能让我效率翻倍?开发者必备神器盘点!

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

在找工作吗?给你一个AI虚拟面试官助力你提前准备面试

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 让AI点亮我们的生活&#xff0c;是Shelly对…

Lab4 【哈工大_操作系统】进程运行轨迹的跟踪与统计

本节将更新哈工大《操作系统》课程第四个 Lab 实验 进程运行轨迹的跟踪与统计。按照实验书要求&#xff0c;介绍了非常详细的实验操作流程&#xff0c;并提供了超级无敌详细的代码注释。 实验目的&#xff1a; 掌握 Linux 下的多进程编程技术&#xff1b;通过对进程运行轨迹的…

css 选择除第一个子元素之外的所有子元素

在 CSS 中可以使用:not和:first-child的组合来选择除第一个子元素之外的所有子元素。 <!DOCTYPE html><html lang"en"><head><style>ul li:not(:first-child) {color: red;}</style></head><body><ul><li>第…

simple c++ 无锁队列

简洁实现无锁队列 使用compare_exchange_strong 和 compare_exchange_weak&#xff0c;在 C 中&#xff0c;compare_exchange_strong 和 compare_exchange_weak 是 std::atomic 类型的成员函数&#xff0c;用于原子地比较和交换操作。以下实现适合单生产者&#xff0c;单消费者…

3GPP链路级仿真-Link-Level Simulator for 5G Localization

文章目录 II. SYSTEM ARCHITECTURE AND CAPABILITIESA. System Architecture III. KEY COMPONENTSA. Transmission Models of the Positioning SignalsB. Dedicated Wireless Channel Model IV. APPLICATION CASESA. Two-Dimensional Mobile Terminal Localization仿真工作流程…

Python的几个高级特性

引言 Python是一种功能强大的编程语言&#xff0c;它简洁的语法和强大的库支持使其成为数据科学和机器学习领域的热门选择。在Python的高级特性中&#xff0c;生成器、迭代器、闭包、装饰器和内置高阶函数是实现高效、优雅代码的关键。本文将逐一介绍这些特性&#xff0c;并提…

JavaWeb - 8 - 请求响应 分层解耦

请求响应 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据 响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据 BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程…

【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油&#xff01;二叉搜索树 大家好&#xff0c;这里是店小二&#xff01;今天我们将深入探讨高阶数据结构中的AVL树。AVL树是一种自平衡的二叉搜索树&#xff0c;可以看作是对传统二叉搜索树的优化版本。如果你对数据结…

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的&#xff1b; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看&#xff0c;除了这段字符串&#xff0c;没有其他信息&#xff1b;尝试解密&#xff0c;长度32位&#xff1b;各种解密方式试试&#xff1b; MD5免费在线解密破解_MD5在…

PIKACHU | PIKACHU 靶场 XSS 后台配置

关注这个靶场的其他相关笔记&#xff1a;PIKACHU —— 靶场笔记合集-CSDN博客 PIKACHU 自带了一个 XSS 平台&#xff0c;可以辅助我们完成 XSS 攻击&#xff0c;但是该后台需要配置数据库以后才能使用。本教程&#xff0c;就是教大家如何配置 PIKACHU XSS 平台的。 PIKACHU XS…

【Conda】Conda命令详解:高效更新与环境管理指南

目录 1. Conda 更新命令1.1 更新 Conda 核心1.2 更新所有包 2. 严格频道优先级3. 强制安装特定版本4. 创建与管理环境4.1 创建新环境4.2 激活和停用环境4.3 导出和导入环境4.4 删除环境 5. 清理缓存总结 Conda 是一个强大的包管理和环境管理工具&#xff0c;广泛应用于数据科学…

chatgpt的ai导师风格设置

AI 导师个性化选项 本节概述了使用 AI 导师的学生可用的各种配置选项。可以修改这些选项以定制学习体验。 配置 选项 中文选项 深度&#xff08;Depth&#xff09; Elementary (Grade 1-6) 小学&#xff08;1-6年级&#xff09; Middle School (Grade 7-9) 初中…