【数据库系列】MySQL基础知识:深入理解DDL、DML与DQL操作

在这里插入图片描述

MySQL是一个开源的关系型数据库管理系统(RDBMS),广泛用于数据存储和管理。理解MySQL的基本操作至关重要,尤其是数据定义语言(DDL)、数据操作语言(DML)和数据查询语言(DQL)。本文将详细介绍这三种语言的概念、对应的操作及其具体的命令和用法。

一、DDL, DML, DQL概述

1. 数据定义语言(DDL)

数据定义语言(DDL)用于定义和管理数据库的结构和架构。它主要涉及数据库对象的创建、修改和删除,包括表、索引、视图等。DDL操作通常会立即生效,并且对数据库的结构进行永久性更改。

对应的操作

  • 创建数据库和表:使用CREATE命令定义新的数据库或表结构。
  • 修改表结构:使用ALTER命令对现有表的结构进行更改,比如添加新列、修改列类型或删除列。
  • 删除数据库或表:使用DROP命令彻底移除数据库或表,从而删除所有相关数据。

2. 数据操作语言(DML)

数据操作语言(DML)用于处理数据库中的数据。它允许用户对表中的数据进行插入、更新和删除等操作。DML操作通常会影响数据的内容,而不改变数据库的结构。

对应的操作

  • 插入新记录:使用INSERT命令将新数据添加到表中,可以是单条或多条记录。
  • 更新现有记录:使用UPDATE命令修改表中已有的记录,基于特定条件。
  • 删除记录:使用DELETE命令从表中移除特定的数据行。

3. 数据查询语言(DQL)

数据查询语言(DQL)用于从数据库中检索数据。最常用的DQL命令是SELECT,它允许用户选择特定的列或行,并根据条件过滤结果。DQL主要用于数据的读取和显示,不会对数据库中的数据造成任何更改。

对应的操作

  • 查询数据:使用SELECT命令从一个或多个表中提取数据,支持特定列的选择。
  • 过滤查询结果:通过WHERE子句指定条件,以限制返回的记录。
  • 排序和分组查询:使用ORDER BY对结果进行排序,使用GROUP BY对数据进行分组,以便进行聚合计算。

二、数据定义语言(DDL)

DDL是数据库管理的基础,主要用于定义数据库的结构。以下是一些常用的DDL命令的详细介绍:

1. CREATE

用于创建数据库和表。

创建数据库
CREATE DATABASE my_database;
  • 说明:创建一个名为my_database的新数据库。
创建表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • 说明:创建一个名为users的表,包含四个字段:
    • id:自增主键。
    • name:用户姓名,最大长度100个字符。
    • email:用户邮箱,唯一字段。
    • created_at:创建时间,默认值为当前时间。

2. ALTER

用于修改现有数据库对象的结构。

修改表结构
-- 添加新列
ALTER TABLE users ADD COLUMN age INT;-- 修改列的数据类型
ALTER TABLE users MODIFY COLUMN name VARCHAR(150);-- 删除列
ALTER TABLE users DROP COLUMN age;
  • 说明
    • 添加新列age
    • 修改name列的数据类型。
    • 删除age列。

3. DROP

用于删除数据库或表。

-- 删除表
DROP TABLE users;-- 删除数据库
DROP DATABASE my_database;
  • 说明:删除users表和my_database数据库,将永久移除相关数据。

三、数据操作语言(DML)

DML用于对数据库中的数据进行操作。以下是DML的常用命令及其详细用法:

1. INSERT

用于向表中添加新记录。

插入单条记录
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 25);
插入多条记录
INSERT INTO users (name, email, age) VALUES 
('Bob', 'bob@example.com', 30),
('Charlie', 'charlie@example.com', 22);
  • 说明:向users表中插入一条或多条新记录。

2. UPDATE

用于更新表中已有的记录。

UPDATE users SET age = 26 WHERE name = 'Alice';
  • 说明:将nameAlice的用户的age更新为26。

3. DELETE

用于从表中删除记录。

DELETE FROM users WHERE name = 'Alice';
  • 说明:删除nameAlice的用户记录。

四、数据查询语言(DQL)

DQL主要用于从数据库中检索数据,最常用的命令是SELECT。以下是DQL的详细介绍:

1. SELECT

用于查询表中的数据。

查询所有列
SELECT * FROM users;
  • 说明:查询users表中的所有列。
查询特定列
SELECT name, email FROM users;
  • 说明:仅查询nameemail两列。

2. WHERE

用于指定查询条件,过滤结果。

SELECT * FROM users WHERE age > 20;
  • 说明:查询age大于20岁的用户。

3. ORDER BY

用于对查询结果进行排序。

SELECT * FROM users ORDER BY created_at DESC;
  • 说明:按照created_at字段降序排列查询结果。

4. JOIN

用于连接多个表,以获取更复杂的数据。

SELECT users.name, orders.total
FROM users
JOIN orders ON users.id = orders.user_id;
  • 说明:查询users表和orders表中用户姓名和订单总额,通过user_id连接。

5. GROUP BY

用于对结果进行分组。

SELECT age, COUNT(*) AS count
FROM users
GROUP BY age;
  • 说明:统计每个年龄段的用户数量。

总结

MySQL的DDL、DML和DQL构成了数据库操作的基础。掌握这些基本命令,能够帮助开发者有效地创建和管理数据库、处理数据以及进行复杂的查询。不论是在个人项目还是在企业级应用中,了解这些基础知识都是至关重要的。通过实践和不断的学习,用户可以更好地利用MySQL进行数据管理。

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

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

相关文章

PAT1085 Perfect Sequence(25)

//判断是否是连续的数 //判断是否只能第一个数是最小值 #include <cstdio> #include <algorithm> typedef long long ll; using namespace std; int n,p; const int maxn 100010; int arr[maxn];int binary(int l, int r, ll tgt){if(arr[n-1] < tgt) return n…

git 本地同步远端分支

一、关联远程仓库 本地仓库关联远端仓库 git remote add origin https://github.com/user/repository.git 二、获取远程分支信息 获取远程仓库的最新分支信息 git fetch origin 三、创建或切换到本地分支以跟踪远程分支 1. 创建分支 创建分支并关联到远端分支 git bra…

Shell 编程基础知识

为什么要学 Shell&#xff1f; 学一个东西&#xff0c;我们大部分情况都是往实用性方向着想。从工作角度来讲&#xff0c;学习 Shell 是为了提高我们自己工作效率&#xff0c;提高产出&#xff0c;让我们在更少的时间完成更多的事情。 很多人会说 Shell 编程属于运维方面的知…

深度学习-48-AI应用实战之基于face_recognition的人脸识别

文章目录 1 人脸识别1.1 识别原理1.2 应用场景2 python实现人脸识别2.1 windows安装face_recognition2.2 安装问题及解决3 使用示例3.1 人脸区域检测3.2 对齐与编码3.3 人脸匹配3.4 信息录入4 附录4.1 函数cv2.rectangle4.2 参考附录1 人脸识别 通过图片或者摄像头的方式,将识…

深入浅出UART驱动开发与调试:从基础调试到虚拟驱动实现

往期内容 本专栏往期内容&#xff1a;Uart子系统 UART串口硬件介绍深入理解TTY体系&#xff1a;设备节点与驱动程序框架详解Linux串口应用编程&#xff1a;从UART到GPS模块及字符设备驱动 解UART 子系统&#xff1a;Linux Kernel 4.9.88 中的核心结构体与设计详解IMX 平台UART驱…

vs 项目属性表

解释 在Vistual Studio中&#xff0c;属性包含项目编译生成所需的信息 此信息包括应用程序名称、扩展名&#xff08;如 DLL、LIB、EXE&#xff09;、编译器选项、链接器选项、调试器设置、自定义生成步骤等 项目节点右键->属性&#xff0c;访问属性页要访问属性页&#xff…

空洞武士3

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 collisionBox.hcollisionLayer.hcollisionManager.h collisionBox.h #pragma once #include "collisionLayer.h" #include "vector2.h" #include <functional>class CollisionManager; …

golang支持线程安全和自动过期map

在 Golang 中&#xff0c;原生的 map 类型并不支持并发安全&#xff0c;也没有内置的键过期机制。不过&#xff0c;有一些社区提供的库和方案可以满足这两个需求&#xff1a;线程安全和键过期。 1. 使用 sync.Map&#xff08;线程安全&#xff0c;但不支持过期&#xff09; Go…

Linux网络——IO模型和多路转接

通常所谓的IO&#xff0c;其本质就是等待通信和进行通信&#xff0c;即IO 等 拷贝。 那么想要做到高效的IO&#xff0c;就要在单位时间内&#xff0c;减少“等”的比重。 一.五种IO模型 阻塞 IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方…

VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)

本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu &#xff08;1&#xff09;安装增强功能&#xff08;Guest Additions&#xff09; 首先&#xff0c;在网上下载VBoxGuestAdditions光盘映像文件 下载地址&#xff1a;Index of http://…

AI的魔力:如何为开源软件注入智慧,开启无限可能

“AI的魔力&#xff1a;如何为开源软件注入智慧&#xff0c;开启无限可能” 引言&#xff1a; 在科技发展的浪潮中&#xff0c;开源软件生态一直扮演着推动创新与共享的重要角色。从Linux到Python&#xff0c;开源项目赋予了开发者全球协作的机会&#xff0c;推动了技术的飞速…

uniapp条件注释/跨端兼容

文章目录 条件编译处理多端差异1.组件中条件编译2.API条件编译 条件编译处理多端差异 #为什么选择条件编译处理跨端兼容 uni-app 已将常用的组件、API封装到框架中&#xff0c;开发者按照 uni-app 规范开发即可保证多平台兼容&#xff0c;大部分业务均可直接满足。 但每个平…

【拥抱AI】一文讲述如何配置Milvus?

配置Milvus是一个重要的步骤&#xff0c;它可以帮助你更好地管理和优化向量数据库的性能。以下是一些常见的配置选项和步骤&#xff0c;帮助你设置和优化Milvus。 1. 安装Milvus 首先&#xff0c;确保你已经安装了Milvus。你可以使用Docker来快速部署Milvus。以下是一个基本的…

【网络安全】CSRF

一、什么是CSRF CSRF&#xff08;Cross-Site Request Forgery&#xff09;是一种web应用程序安全漏洞&#xff0c;它利用了用户在已登录的状态下的信任&#xff0c;通过欺骗用户发送未经授权的请求来执行恶意操作。这种攻击的危害性取决于受害者在目标网站上的权限。 二、CSR…

OpenCV相机标定与3D重建(5)鱼眼镜头畸变校正的函数estimateNewCameraMatrixForUndistortRectify()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 估计用于去畸变或校正的新相机内参矩阵。 cv::fisheye::estimateNewCameraMatrixForUndistortRectify 是 OpenCV 中用于鱼眼镜头畸变校正的一个函…

IThenticate 查重有无免费午餐?深度解析

经历过论文“折磨”的过来人&#xff0c;深知查重工具是写论文不可或缺的助手。而 iThenticate 查重系统&#xff0c;深受出版商、学术机构和研究人员喜爱。不过&#xff0c;每次看到它那昂贵的价格&#xff0c;就让很多小伙伴直呼&#xff0c;IThenticate查重系统就没有免费的…

启动SpringBoot

前言&#xff1a;大家好我是小帅&#xff0c;今天我们来学习SpringBoot 文章目录 1. 环境准备2. Maven2.1 什么是Maven2.2 创建⼀个Maven项⽬2.3 依赖管理2.3.1 依赖配置2.3.2 依赖传递2.3.4 依赖排除2.3.5 Maven Help插件&#xff08;plugin&#xff09; 2.4 Maven 仓库2.6 中…

DHCP服务(包含配置过程)

目录 一、 DHCP的定义 二、 使用DHCP的好处 三、 DHCP的分配方式 四、 DHCP的租约过程 1. 客户机请求IP 2. 服务器响应 3. 客户机选择IP 4. 服务器确定租约 5. 重新登录 6. 更新租约 五、 DHCP服务配置过程 一、 DHCP的定义 DHCP&#xff08;Dynamic Host Configur…

使用 Certbot 为 Nginx 自动配置 SSL 证书

1.安装Certbot和Nginx插件 sudo apt-get update sudo apt-get install certbot python3-certbot-nginx 2.获取和安装证书 运行Certbot自动安装SSL证书。注意替换 your_domain sudo certbot --nginx -d your_domain Certbot将自动与Lets Encrypt的服务器通信&#xff0c;验证域…

cgroup简介

1、什么是Cgroup cgroups,其名称源自控制组群(control groups)的缩写,是内核的一个特性,用于限制、记录和隔离一组进程的资源使用(CPU、内存、磁盘 I/O、网络等) 资源限制:可以配置 cgroup,从而限制进程可以对特定资源(例如内存或 CPU)的使用量 优先级 :当资源发…