MySQL操作DDL
目录
1.概述
2.数据库的增删改查
3.表的增删改查
3.1.创建和查看表结构
3.2.修改表
3.3.查看所有的表
3.4.删除表
4.用户
5.DDL在实际应用场景中的作用
5.1.数据库设计
5.2.数据库维护
5.3.数据库迁移或重置
5.4.优化性能
5.5.小结
1.概述
啥是DDL?我们数据库的课程里应该学过。DDL就是Data Definition Language的首字母,即数据定义语言。是一类用于定义和修改数据库结构的语言。使用户能够创建、修改、删除数据库中的各种对象,如表、视图、索引、触发器等。DDL作为SQL(Structured Query Language,结构化查询语言)的一个重要组成部分,其指令主要涉及数据库模式的创建和维护。主要包括create、alter、drop等指令。
2.数据库的增删改查
- 创建数据库:create database 数据库名;
- 创建数据库并指定编码:utf8,设置好后,数据库中就可以存储中⽂数据。create database 数据库名 charset utf8;
- 使⽤数据库:use 数据库名;
- 查看所有数据库:show databases; #查看当前所有数据库。
- 单独常看当前数据库:select database(); #查看当前使⽤的是哪⼀个数据库。
- 修改数据库:数据库的名称⼀旦创建好之后就⽆法修改。
- 删除数据库:drop database 数据库名;
3.表的增删改查
3.1.创建和查看表结构
create table 表名(
字段名1 类型(宽度) 约束条件,
字段名2 类型(宽度) 约束条件,
字段名3 类型(宽度) 约束条件,
);
注意:
- 字段名不能重复
- 字段名和类型是必选
- 宽度和约束条件可选
查看表结构:desc 表名;
例如:
create table student(
name char(10),
age int,
score float(5,2),
startTime time,
lesson
set('English','Math','Chinese'),
sex enum('male','female')
);
> OK
> 时间: 0.008s
desc student;
约束:
为了防⽌不符合规范的数据进⼊数据库,在⽤户对数据进⾏插⼊、修改、删除等操作时,数据库需要按照⼀定的约束条件对数据进⾏监测,使不符合规范的数据不能进⼊数据库,以确保数据库中存储的数据正确性和有效型。
约束条件主要分为以下⼏种:
- NOT NULL:⾮空约束,指定某列不能为空
- DEFAULT:默认值
- UNIQUE:唯⼀约束,指定某列或者⼏列组合不能重复
- PRIMARY KEY:主键,指定该列的值可以唯⼀地标识该列记录
- FOREIGN KEY:外键,指定该⾏记录从属于主表中的⼀条记录,主要⽤于参照完整性
primary key:
主键,为了保证表中的每⼀条数据的该字段都是表格中的唯⼀值。是⽤来独⼀⽆⼆地确认⼀个表格中的每⼀⾏数据。
create table tp (
id int PRIMARY KEY , #主键约束
name varchar(20),
salary float(6,2)
)
auto_increment:
⾃增字段,对于主键id⽽⾔,往往我们可以设置为⾃增字段,不⽤⼿动填写。
create table ta(
id int PRIMARY KEY auto_increment, #主键约
束
name varchar(50)
)
not null:
非空,当设置⼀个字段时,不允许它为空,可以使⽤此约束条。
create table tn (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50) not null #name字段的值不可以为空
)
default:
默认值,例如:对于性别⼀列,如果⼤部分都是男性,可以设置成默认值,不填则取默认值,填写了则覆盖默认值。
create table td (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50),
sex char(20) DEFAULT('male')
)
unique:
唯⼀值,当有⼀列字段你不想让它有重复值时,可以设置为唯⼀。
create table tu (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50) unique, #唯⼀约束
)
联合唯⼀:
只有当你设置的这些字段同时重复时才会报错
create table tu1 (
id int PRIMARY KEY auto_increment, #主键约束
name varchar(50),
dep char(10),
UNIQUE(name,dep) #联合唯⼀约束
)
foreign key:
外键,假设我们要描述所有公司的员⼯,需要描述的属性有:姓名,年龄,性别,部⻔,部⻔描述。
假设公司有3个部⻔,但是有一千万的员⼯,那意味着部⻔和部⻔描述这两个字段需要重复存储,部⻔名字和部⻔描述内容越⻓,越浪费内存,该如何处理?
解决办法:我们可以定义⼀个部⻔表然后让员⼯信息表关联该表,如何关联,即foreign key。
创建两张表:
被关联表:dep
create table dep(
id int primary key auto_increment,
dep_name varchar(20),
dep_desc varchar(200));
关联表:emp
create table emp(
id int primary key auto_increment,
name varchar(20),
age int,
gender enum('male','female'),
dep_id int not null,
foreign key(dep_id) references
dep(id));
级联删除、更新:
两张表建⽴关联之后,如果部⻔表某个部⻔被砍掉了,那对应的⼈员表中的那些部⻔的⼈员相应的该如何处理呢?可以保存,也可以随之⼀起删除。如果要保证两表⼀致,则需要在设置外键时添加on delete cascade,如果部⻔id更新了,要⼀起更新的话,则添加on update cascade。
被关联表:dep
create table dep001(
id int primary key auto_increment,
dep_name varchar(20),
dep_desc varchar(200));
关联表:emp
create table emp001(
id int primary key auto_increment,
name varchar(20),
age int,
gender enum('male','female'),
dep_id int not null,
foreign key(dep_id) references
dep001(id) on delete cascade on update
cascade
);
3.2.修改表
修改表名:
alter table 旧表名 rename 新表名
修改表字段的数据类型:
alter table 表名 modify 字段 新数据类型
修改表字段名:
alter table 表名 change 旧字段名 新字段名 新数据类型
新增字段:
alter table 表名 add 新增字段名 数据类型 约束条件#约束条件可选
删除字段:
alter table 表名 drop 字段名
3.3.查看所有的表
show tables;
3.4.删除表
drop table 表名;
使用`DROP`时需谨慎,它将从数据库中永久删除所选对象。
truncate table 表名;
`TRUNCATE`指令用于删除表中的所有行,但不删除表本身。与`DROP TABLE`相比,它删除数据的速度更快且效率更高。
4.用户
为了呼应后续继续写的内容,本节插入一段DCL相关内容。
创建用户 xyz , 只能够在当前主机localhost访问, 密码123456;
create user 'xyz'@'localhost' identified by '123456';
创建用户 abcd, 可以在任意主机访问该数据库, 密码123456 ;
create user 'abcd'@'%' identified by '123456';
修改用户 abcd 的访问密码为 5678;
alter user 'abcd'@'%' identified with mysql_native_password by '5678';
删除xyz@localhost用户
drop user 'xyz'@'localhost';
查询权限
show grants for 'abcd'@'%';
授予权限
grant all on xyz.* to 'abcd'@'%';
撤销权限
revoke all on xyz.* from 'abcd'@'%';
5.DDL在实际应用场景中的作用
5.1.数据库设计
在数据库设计阶段,通过使用DDL的`CREATE`指令创建数据库以及数据库内所需的表和其他对象,是数据库建设的初期步骤。
5.2.数据库维护
数据需求随时可能改变,使用`ALTER`指令可以针对现有数据库结构进行调整,如添加新列来存储额外信息,或者修改现有列的数据类型以适应数据格式的变化。
5.3.数据库迁移或重置
在数据库迁移或需要重置数据时,可能会使用到`DROP`指令删除旧的数据库对象或`TRUNCATE`指令清空表中的数据,以便重新开始或导入新的数据集。
5.4.优化性能
当数据库中的某些表不再需要时,使用`DROP`指令删除这些表可以帮助减少数据库的大小,从而提高整体性能。同样,使用`TRUNCATE`快速清空表中数据也是常见的优化手段之一。
5.5.小结
数据库DDL是数据库管理和维护的一项重要工具。通过熟练使用`CREATE`、`ALTER`、`DROP`和`TRUNCATE`等指令,DBA可以有效地控制和管理数据库的结构。每一条DDL指令针对的是数据库结构层面的操作,对于数据库设计、维护和优化等多个环节都有着至关重要的作用。尽管DDL操作通常由具有数据库设计经验的技术人员执行,了解这些基础的DDL操作对于任何希望深入理解数据库运作的人来说都是十分有益的。
相关文章:

MySQL操作DDL
目录 1.概述 2.数据库的增删改查 3.表的增删改查 3.1.创建和查看表结构 3.2.修改表 3.3.查看所有的表 3.4.删除表 4.用户 5.DDL在实际应用场景中的作用 5.1.数据库设计 5.2.数据库维护 5.3.数据库迁移或重置 5.4.优化性能 …...

程序员如何搞副业
目录 1.概述 2.个人项目开发 3.在线教育和培训 4.技术博客和内容创作 1.概述 程序员通过副业实现个人价值最大化和增加收入的途径多种多样,以下是一些方法: 自由职业: 程序员可以在业余时间提供自由职业服务。包括为客户开发软件、网站或应用程序、…...
【嵌入式开发 Linux 常用命令系列 4.3 -- git add 不 add untracked file】
请阅读【嵌入式开发学习必备专栏 】 文章目录 git add 不add untracked file git add 不add untracked file 如果你想要Git在执行git add .时不添加未跟踪的文件(untracked files),你可以使用以下命令: git add -u这个命令只会加…...

git 常用命令和使用方法
作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…...
程序员如何搞副业?
程序员不仅拥有将抽象概念转化为实际应用的能力,还通常具备强大的逻辑思维和问题解决能力。然而,许多程序员并不满足于仅仅在一家公司工作,他们渴望通过副业来实现个人价值的最大化,增加收入,甚至探索自己的创业梦想。…...

深入浅出 -- 系统架构之负载均衡Nginx实现高可用
一、Nginx的高可用 线上如果采用单个节点的方式部署Nginx,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于Nginx作为整个系统的网关层接入…...

鲸鱼优化算法(Whale Optimization Algorithm)
注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种模拟鲸鱼捕食行为的优化算法。想象一下,你…...

C++内存管理new-delete大法及实现原理
目录 前言: 一:C语言中区域划分的回顾及各个变量存在的位置 1.经典例题 编辑2.C/C中内存区域的划分 二:C内存管理方式 new delete操作符 1.对于内置类型 2.对于自定义类型 三:operator new和operator delete函数 1…...
Spring WebFlux响应式实现WebFilter解决跨域问题
WebFilter 是 Spring Framework 中用于处理 Web 请求的过滤器接口,它是在基于 Servlet 3.0 规范的基础上,为了支持响应式编程模型而引入的。与传统的 Servlet 过滤器相似,WebFilter 也允许开发者对进入的请求和返回的响应进行拦截、修改或者增…...

第4章 Redis,一站式高性能存储方案,笔记问题
点赞具体要实现功能有哪些? 可以点赞的地方:对帖子点赞,对评论点赞点一次是点赞,再点一次是取消赞统计点赞的数量(计数,string),帖子被点赞的数量,某个用户被点赞的数量…...
UVA540 Team Queue 解题报告
UVA540 Team Queue 解题报告 题目链接 https://vjudge.net/problem/UVA-540 题目大意 有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到…...

基础贪心问题
1.部分背包问题 #include<iostream> #include<algorithm> using namespace std; const int N 110; double v[N], w[N]; pair<double, int> a[N]; int n, m;int main(){cin>>n>>m;double x, y;for(int i 0; i < n; i){cin>>v[i]>&g…...
day13 java final 类和对象的初始化执行顺序
final [面试题]请简述final关键字final修饰类(最终的类)-太监类:该类不能被继承。(比如:String StringBuilder,....) final修饰方法(最终的方法):不能被重写 final修饰的变量 :值不…...
蓝桥杯gcd汇总
gcd3014 问题描述 小明和小红是一对恋人,他们相爱已经三年了,在今年的七夕节,小明准备给小红一个特殊的礼物。他想要送给小红一些数字,让小红算出有多少对正整数 (a,b) 满足以下条件: clcm(a,b)−dgcd(a,b)x其中 c,…...

极市平台 | 综述:一文详解50多种多模态图像融合方法
本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。 原文链接:综述:一文详解50多种多模态图像融合方法 0 极市导读 本工作总结了50篇论文中Lidar和camera的多模态融合的一些概念方法。笔者结合原文以及自…...

数据结构系列-队列的结构和队列的实现
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除删除数据操作的特殊线性表,队列具有先进先出FIFO,…...

MySQL——查询数据的处理
一、并列 连接两个数据列的值,并进行输出的格式化处理(显示为一种统一的格式) concat( 列 1 格式化字 符 ) mysql> select concat(vend_name, vend_country) from vendors; --------------------------------- | concat(vend_name, ve…...
【机器学习300问】59、计算图是如何帮助人们理解反向传播的?
在学习神经网络的时候,势必会学到误差反向传播,它对于神经网络的意义极其重大,它是训练多层前馈神经网络的核心算法,也是机器学习和深度学习领域中最为重要的算法之一。要正确理解误差反向传播,不妨借助一个工具——计…...

ctfshow web入门 php特性 web108--web115
web108 ereg函数相当于而preg_match()函数 ereg函数的漏洞:00截断。%00截断及遇到%00则默认为字符串的结束 strrev函数就是把字符串倒过来 就是说intval处理倒过来的传参c0x36d(877)?ca%00778 web109 异常处理类 通过异常处理类Excepti…...

京东API接口采集商品详情数据(测试入口如下)
京东API接口采集商品详情数据 请求示例,API接口接入Anzexi58 在当今数字化时代,电商平台的API接口成为了获取商品详情数据的重要途径之一。作为中国最大的自营式电商企业,京东提供了丰富的API接口供开发者使用,以便获取京东平台上…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...