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

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修饰类&#xff08;最终的类&#xff09;-太监类&#xff1a;该类不能被继承。(比如&#xff1a;String StringBuilder,....) final修饰方法&#xff08;最终的方法&#xff09;&#xff1a;不能被重写 final修饰的变量 &#xff1a;值不…...

蓝桥杯gcd汇总

gcd3014 问题描述 小明和小红是一对恋人&#xff0c;他们相爱已经三年了&#xff0c;在今年的七夕节&#xff0c;小明准备给小红一个特殊的礼物。他想要送给小红一些数字&#xff0c;让小红算出有多少对正整数 (a,b) 满足以下条件&#xff1a; clcm(a,b)−dgcd(a,b)x其中 c,…...

极市平台 | 综述:一文详解50多种多模态图像融合方法

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

数据结构系列-队列的结构和队列的实现

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO&#xff0c;…...

MySQL——查询数据的处理

一、并列 连接两个数据列的值&#xff0c;并进行输出的格式化处理&#xff08;显示为一种统一的格式&#xff09; concat( 列 1 格式化字 符 ) mysql> select concat(vend_name, vend_country) from vendors; --------------------------------- | concat(vend_name, ve…...

【机器学习300问】59、计算图是如何帮助人们理解反向传播的?

在学习神经网络的时候&#xff0c;势必会学到误差反向传播&#xff0c;它对于神经网络的意义极其重大&#xff0c;它是训练多层前馈神经网络的核心算法&#xff0c;也是机器学习和深度学习领域中最为重要的算法之一。要正确理解误差反向传播&#xff0c;不妨借助一个工具——计…...

ctfshow web入门 php特性 web108--web115

web108 ereg函数相当于而preg_match()函数 ereg函数的漏洞&#xff1a;00截断。%00截断及遇到%00则默认为字符串的结束 strrev函数就是把字符串倒过来 就是说intval处理倒过来的传参c0x36d&#xff08;877&#xff09;?ca%00778 web109 异常处理类 通过异常处理类Excepti…...

京东API接口采集商品详情数据(测试入口如下)

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

Mac brew 安装软件

Mac brew 安装软件 homebrew 速度慢 将brew 切换到国内镜像源 # 速度一般 # 步骤一 cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git# 步骤二 cd "$(brew --repo)/Library/Taps/homebrew/homebr…...

【顶部距离计算】计算元素顶部与浏览器顶部的距离

在开发中&#xff0c;我们常常需要计算某个元素顶部与浏览器视口顶部的距离&#xff0c;只需要一个方法即可计算 解决&#xff1a;使用getBoundingClientRect()方法 代码示例&#xff1a; 接收一个参数element表示需要计算的元素 // 计算该元素的顶部距离浏览器的顶部距离 c…...

守护人类健康:人工智能赋能医疗领域创新应用

编者按&#xff1a;每年的4月7日是世界卫生日&#xff0c;又称世界健康日&#xff0c;旨在引起世界各国人民对卫生、健康工作的关注&#xff0c;提高人们对卫生领域的素质和认识&#xff0c;强调健康对于劳动创造和幸福生活的重要性。那么&#xff0c;如果医疗技术能够更加智能…...

linux常用指令(一)——cat、more、cp

cat命令&#xff1a; 用于查询看文件内容 语法&#xff1a;cat linux路径 参数必填&#xff0c;表示要查看文件的目录的路径&#xff0c;&#xff08;相对&#xff0c;绝对&#xff0c;特殊路径符都可以使用&#xff09; more命令&#xff1a; 用于查看文件内容&#xff0c…...

基于RTThread的学习(三):正点原子潘多拉 QSPI 通信 W25Q128 实验

1、基于芯片创建工程 2、QSPI配置 2.1、RTThing_setting 设置组件 2.2、配置board.h 文件 2.3、cubemx生成QSPI的硬件初始化代码&#xff1b;HAL_QSPI_MapInit; 这里注意&#xff1a;你所买的开发板对应的qspi 连接的是否是cubemx 上边显示的&#xff0c;如果不是你需要将引脚…...

Mac反编译APK

文章目录 第一种方式: brew installapktool 使用说明dex2jar 使用说明 第二种方式: 下载安装包apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)dex2jar 使用说明 安装 JD-GUI 查看jar包中的class文件JD-GUI 使用说明 第一种方式: brew install 安装过程可能很…...

Java数据结构-队列

目录 1. 队列概念2. 模拟实现队列2.1 链式队列2.2 循环队列 3. 双端队列4. 队列的应用4.1 用队列实现栈4.2 用栈实现队列 1. 队列概念 队列是一种只能在一端进行插入数据操作&#xff0c;另一端进行删除数据操作的数据结构&#xff0c;插入数据的叫队尾&#xff0c;删除数据的…...

JVM专题——类文件结构

本文部分内容节选自Java Guide和《深入理解Java虚拟机》, Java Guide地址: https://javaguide.cn/java/jvm/class-file-structure.html &#x1f680; 基础&#xff08;上&#xff09; → &#x1f680; 基础&#xff08;中&#xff09; → &#x1f680;基础&#xff08;下&am…...

零基础10 天入门 Web3之第2天

10 天入门 Web3之第2天Web3 是互联网的下一代&#xff0c;它将使人们拥有自己的数据并控制自己的在线体验。Web3 基于区块链技术&#xff0c;该技术为安全、透明和可信的交易提供支持。我准备做一个 10 天的学习计划&#xff0c;可帮助大家入门 Web3&#xff1a; 一、这是第二…...

Vue和FastAPI实现前后端分离

前言 近期接触了一些开源大模型应用服务&#xff0c;发现很多用的都是FastAPI web框架&#xff0c;于是乎研究了一下它的优势&#xff0c;印象最深有两个&#xff1a;一个是它的异步处理性能比较好&#xff0c;二是它可以类似java swagger的API交互文档&#xff0c;这个对应前…...

建个外国网站/免费的行情软件网站下载

mysql数据库常用的时间类型有timestamp和datetime&#xff0c;两者主要区别是占用存储空间长度不一致、可存储的时间也有限制&#xff0c;但针对不同版本下&#xff0c;timestamp字段类型的设置需要慎重&#xff0c;因为不注意的可能会被“坑死”。一、TIMESTAMP和DATETIME字段…...

新兴街做网站公司/seo关键词库

php CI 实战教程&#xff1a;[4]返回json&#xff0c;ajax请求处理_百度经验 (本人原创经验)http://jingyan.baidu.com/article/63acb44afc212461fcc17e02.htmlphp CI 实战教程系列和(php CodeIgniter 实战教程)同一系列&#xff0c;本篇为返回json&#xff0c;ajax请求处理实战…...

丰台b2c网站制作价格/网络舆情监测与研判

7 应用案例2:模式识别 除了函数拟合,神经网络还擅长解决模式识别问题。 例如,假设你想根据细胞大小、团块厚度、有丝分裂等的均匀性将肿瘤分为良性或恶性[MuAh94]。你有699个案例,你有9项数据和正确的良性或恶性分类。 与函数拟合一样,有两种方法来解决这个问题: 使用np…...

十堰建设局网站/网站服务器信息查询

思路&#xff1a; 先反向建图 Dijkstra一遍 求出h数组 再正向建图 A_star一遍 搞定 //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define int long long #define N 10050 int…...

用vue element-ui做的网站/网络运营师

1、安装databaselibrary、pymysql 通过cmd命令执行&#xff1a;pip install robotframework-databaselibrary 通过cmd命令执行&#xff1a;pip install robotframework-databaselibrary 2、导入库到robotframework中 编辑以下代码&#xff1a; Connect To Database Using Custo…...

做外贸外文网站怎么做好/百度app下载官方

1、关闭节点1服务&#xff0c;挂载裸设备并创建ASM磁盘&#xff0c;由于是RAC&#xff0c;节点2服务并没有停止&#xff0c;所以业务能正常运行&#xff1b;关闭节点1上的CRS服务查看服务状态&#xff0c;目前只有节点2正常运行&#xff0c;scanIP与vip迁移至节点2&#xff1b;…...