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

【MySQL】入门篇—SQL基础:数据定义语言(DDL)

数据定义语言(DDL,Data Definition Language)是SQL(结构化查询语言)的一部分,主要用于定义和管理数据库的结构。

DDL允许用户创建、修改和删除数据库及其对象(如表、索引、视图等)。以下是一些DDL在实际应用中的重要性和场景:

  • 创建数据库和表:在应用程序开发初期,需要设计和创建数据库结构以存储数据。例如,电商平台需要创建用户、商品和订单等表来管理数据。

  • 修改数据库结构:随着业务需求的变化,可能需要调整数据库结构,比如添加新字段、修改数据类型或删除不再需要的列。

  • 删除数据库和表:在不再需要某个数据库或表时,可以将其删除以释放资源。例如,当一个项目结束时,相关的测试数据库可能会被删除。

掌握DDL的基本操作是数据库管理员和开发者的基本技能。接下来,我们将通过具体示例详细介绍DDL的主要命令:创建(CREATE)、修改(ALTER)和删除(DROP)。

1. 创建数据库和表

1.1 创建数据库

创建数据库是指在数据库管理系统中创建一个新的数据库实例。每个数据库可以包含多个表和其他对象。创建数据库的语法相对简单,通常只需要指定数据库的名称。

示例:创建数据库

-- 创建一个名为 'my_database' 的数据库
CREATE DATABASE my_database;-- 选择使用该数据库
USE my_database;
  • CREATE DATABASE my_database;:此命令创建一个名为my_database的数据库。数据库是存储数据的容器,通常一个应用程序会有一个或多个数据库。

  • USE my_database;:选择当前使用的数据库。之后的所有操作(如创建表、插入数据等)都将在my_database中进行。

1.2 创建表

创建表是指在数据库中定义一个新的数据结构,用于存储特定类型的数据。每个表由行和列组成,行表示记录,列表示属性。表的设计需要考虑数据的完整性和约束条件。

示例:创建用户表

-- 创建一个名为 'users' 的表
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,  -- 用户ID,主键,自动递增username VARCHAR(50) NOT NULL,      -- 用户名,非空email VARCHAR(100) NOT NULL UNIQUE   -- 邮箱,非空且唯一
);
  • CREATE TABLE users (...):创建一个名为users的表。

  • id INT PRIMARY KEY AUTO_INCREMENT:定义一个名为id的列,数据类型为整数(INT),作为主键并自动递增。主键确保每条记录的唯一性。

  • username VARCHAR(50) NOT NULL:定义一个名为username的列,数据类型为变长字符串,最大长度为50,且不能为空(NOT NULL)。

  • email VARCHAR(100) NOT NULL UNIQUE:定义一个名为email的列,数据类型为变长字符串,最大长度为100,且不能为空且唯一(UNIQUE),确保没有重复的邮箱地址。

2. 修改数据库和表

2.1 修改表结构

修改表结构是指对已存在的表进行更改,以适应新的业务需求。这可能包括添加新列、修改现有列的属性或删除不再需要的列。

示例:向表中添加新列

-- 向 'users' 表中添加一个新列 'created_at'
ALTER TABLE users ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP;
  • ALTER TABLE users:指定要修改的表为users

  • ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP:添加一个名为created_at的新列,数据类型为日期时间(DATETIME),默认值为当前时间戳(CURRENT_TIMESTAMP)。这个列用于记录用户创建的时间。

2.2 修改现有列

修改现有列是指更改表中已存在列的定义,例如改变数据类型或约束条件。这通常是在业务需求变化时进行的调整。

示例:修改列的数据类型

-- 修改 'username' 列的长度
ALTER TABLE users MODIFY username VARCHAR(100) NOT NULL;
  • MODIFY username VARCHAR(100) NOT NULL:将username列的数据类型修改为最大长度100的变长字符串,并保持非空约束。这种修改可能是因为我们希望允许更长的用户名。

2.3 删除列

删除列是指从表中移除一个不再需要的列。这通常是在数据结构优化或业务需求变化时进行的。

示例:从表中删除列

-- 从 'users' 表中删除 'created_at' 列
ALTER TABLE users DROP COLUMN created_at;
  • DROP COLUMN created_at:从users表中删除名为created_at的列。如果我们不再需要记录用户创建时间,可以使用此命令进行删除。

3. 删除数据库和表

3.1 删除表

删除表是指从数据库中完全移除一个表及其所有数据。此操作是不可逆的,执行后无法恢复。

示例:删除表

-- 删除 'users' 表
DROP TABLE users;
  • DROP TABLE users;:删除名为users的表及其所有数据。此操作不可逆,执行后无法恢复,因此在执行之前应确保该表的数据不再需要。

3.2 删除数据库

删除数据库是指从数据库管理系统中移除一个数据库及其所有表和数据。此操作也不可逆,需谨慎使用。

示例:删除数据库

-- 删除 'my_database' 数据库
DROP DATABASE my_database;
  • DROP DATABASE my_database;:删除名为my_database的数据库及其所有表和数据。删除数据库会清空所有数据,因此需谨慎操作。

结论

数据定义语言(DDL)是管理数据库结构的关键工具。通过创建、修改和删除数据库及其对象,开发者和数据库管理员能够灵活地设计和维护数据存储结构。掌握DDL的基本命令对于有效地管理和优化数据库至关重要。

相关文章:

【MySQL】入门篇—SQL基础:数据定义语言(DDL)

数据定义语言(DDL,Data Definition Language)是SQL(结构化查询语言)的一部分,主要用于定义和管理数据库的结构。 DDL允许用户创建、修改和删除数据库及其对象(如表、索引、视图等)。…...

电影评论网站开发:Spring Boot技术详解

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了电影评论网站的开发全过程。通过分析电影评论网站管理的不足,创建了一个计算机管理电影评论网站的方案。文章介绍了电影评论网站的系统分析部分&…...

20240817 全志 笔试

文章目录 1、选择题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、填空题2.12.23、问答题3.14、编程题4.14.2岗位:NO2510 嵌入式软件设计工程师(珠海/广州/西安/深圳) 题型:20 道选择题,2 道填空题,1 道问答题,2 道编程题 1、选择题 1.…...

laravel 查询数据库

数据库准备 插入 三行 不同的数据 自行搭建 laravel 工程 参考 工程创建点击此处 laravel 配置 数据库信息 DB_CONNECTIONmysql #连接什么数据库 DB_HOST127.0.0.1 # 连接 哪个电脑的 ip (决定 电脑 本机) DB_PORT3306 # 端口 DB_DATABASEyanyu…...

【Codeforces】CF 2009 F

Firefly’s Queries #前缀和 #数据结构 #数学 题目描述 Firefly is given an array a a a of length n n n. Let c i c_i ci​ denote the i i i’th cyclic shift ∗ ^{\text{∗}} ∗ of a a a. She creates a new array b b b such that b c 1 c 2 ⋯ c n b c…...

GTP4聊天记录中letax保存为word

​ 别的不说,GPT4用来看代码很是很爽的,可以让他直接恢复出函数中的数学公式,有的时候为了做笔记,GPT4回复的答案,复制出来使markdown、letax等格式,为了更好的记笔记,可以使用下面的工具将复制…...

vscode调试编译找不到gcc,只有cl,但是检查cmd是对的,控制面板的路径也更改了

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…...

空间解析几何5-空间圆到平面的距离【附MATLAB代码】

目录 理论公式 matlab代码 理论公式 matlab代码 function [dis,P,Q,L]Circle2PlaneDistance(T,R,n,Pn) % output % dis 为最短距离,P为距离最短时圆上的点 Q为P对应的投影点 L为最小值有几个 % input % T为园心到基坐标系的变换矩阵 R为圆半径 n为平面的单位法向…...

[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件

目录 问题: 方法: 补充:创建conda虚拟环境 参考文档:pycharm找不到conda可执行文件怎么办?-CSDN 问题: 1.显示:未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…...

SENT - Single Edge Nibble Transmission for Automotive

SENT 总线的特征和优势 SENT 总线是一种数字信号传输协议,具有更高的传输精度和速度;SENT 总线是单线传输数据,减少信号线,降低成本。加上电源和地线,总共 3 线;SENT 总线具有更强大的诊断功能;…...

2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(下)23种设计模式(分值10+)

目录 前言阅读前必看 第七章 面向对象技术(下)7.3 设计模式(固定4分)7.3.1 设计模式的要素7.3.2 创建型设计模式7.3.2.1 Abstract Factory(抽象工厂)7.3.2.2 Builder(生成器)7.3.2.3…...

未来人工智能的发展对就业市场的影响 人工智能在生活中的相关

人工智能(Artificial Intelligence),英文缩写为AI.是新一轮科技革命和产业变革的重要驱动力量, 是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学. 人工智能的发展对就业市场的影响主要…...

Oracle EBS 中财务模块

Oracle E-Business Suite (EBS) 提供了全面的财务管理解决方案,涵盖了企业财务活动的各个方面。以下是EBS中主要的财务模块及其功能概述: 总账(General Ledger, GL):Oracle EBS 中 GL 模块的财务流程概览-CSDN博客 总账…...

基于SSM公廉租房维保系统的设计

管理员账户功能包括:系统首页,个人中心,业主管理,维修单位管理,房屋信息管理,维修申报管理,维修完成,房屋维护管理 业主账号功能包括:系统首页,个人中心&…...

【AI大模型】深入Transformer架构:解码器部分的实现与解析

目录 🍔 解码器介绍 🍔 解码器层 2.1 解码器层的作用 2.2 解码器层的代码实现 2.3 解码器层总结 🍔 解码器 3.1 解码器的作用 3.2 解码器的代码分析 3.3 解码器总结 学习目标 🍀 了解解码器中各个组成部分的作用. &#…...

前端html js css 基础巩固3

一个这样的首页 滑动显示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>&l…...

如在下载自己的需要的rmp包呢

下载地址&#xff1a;https://pkgs.org/和https://rpmfind.net/linux/rpm2html/search.php 根基自己的需要进行下载使用。...

Android TextView实现一串文字特定几个字改变颜色

遇到一个需求&#xff0c;让Android端实现给定一个字符串指定下标的几个字颜色与其他字颜色不一致。 主要是用ForegroundColorSpan这个API来传入颜色值&#xff0c;用SpannableString来设置指定索引下标的字的颜色值。 这里通过给定一个输入文字描述框&#xff0c;要求输入指定…...

桃子叶片病害分类检测数据集(猫脸码客 第221期)

桃子叶片病害分类检测数据集 一、引言 桃子作为世界上广泛种植的果树之一&#xff0c;其叶片的健康状况直接关系到果实的产量和品质。然而&#xff0c;桃子叶片易受多种病害的侵袭&#xff0c;这些病害不仅影响叶片的光合作用&#xff0c;还可能导致果实减产、品质下降&#…...

Vue--》掌握自定义依赖引入的最佳实践

在现代前端开发中&#xff0c;vue凭借其灵活性和高效性&#xff0c;已成为开发者们的宠儿&#xff0c;然而随着项目的复杂度提升&#xff0c;如何高效地管理和引入依赖&#xff0c;尤其是自定义引入依赖&#xff0c;成为了许多开发者面临的一大挑战。无论是为了优化加载速度&am…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...