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操作对于任何希望深入理解数据库运作的人来说都是十分有益的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

若依 ruoyi-vue 接口挂载获取Resources静态资源文件权限校验

解决小程序图片打包过大,放置后端,不引用ngnix、minio等组件,还能进行权限校验 package com.huida.web.controller.common.app;import com.huida.common.core.controller.BaseController; import com.huida.common.utils.file.FileUtils; imp…

C语言——#define的使用

#define定义常量 基本语法 #define name stuff //(#define)(变量名)(定义的数值) 这里记得,是不加分号的 定义常量(这里 就要涉及我们经常说的宏定义) 定义常量的使…

enqueue:oracle锁机制

实现锁的方式就是排队咯,那么排队就是有enqueue这么个结构来管理 管理锁的结构叫队列,即enqueue 所有和enqueue相关的函数都叫KSQ-- kernal service enqueue lock是从应用层面看到的锁,enqueue是oracle内部管理锁的一个结构。 可以用v$lock_…

复现ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 项目代码https://github.com/THUDM/ChatGLM-6B 权重开放:…

【已解决】ZIP压缩文件如何设置密码?

ZIP是常用的压缩格式之一,对于重要的ZIP文件,我们还可设置密码保护,那ZIP压缩文件怎么设置密码呢?不清楚的小伙伴一起来看看吧! 给ZIP文件设置密码,我们需要用到支持ZIP格式的解压缩软件,比如7…

备战蓝桥杯---数论相关问题

目录 一、最大公约数和最小公倍数 二、素数判断 三、同余 四、唯一分解定理 五、约数个数定理 六、约数和定理 五、快速幂 六、费马小定理 七、逆元 一、最大公约数和最小公倍数 文章链接:最大公约数和最小公倍数 二、素数判断 文章链接:在J…

壁纸小程序Vu3(预览页面:弹窗)

1.展示跳转后的分类列表图片 classlist.vue <template><view class"classlist"><view class"content"><navigator class"item" v-for"item in 10"><image src"../../common/images/64.png" mode…

进口非洲鲜花为春节增姿添彩

发布时间&#xff1a;2023-01-16 文章来源&#xff1a;海关总署 图为&#xff1a;关员对进口鲜花实施查验作业 1月12日上午&#xff0c;3000枝产自肯尼亚的鲜花搭乘“内罗毕-长沙”CZ6044航班抵达长沙机场口岸。该批鲜花全部为玫瑰&#xff0c;包括花园玫瑰、奥斯…

Linux网卡IP地址配置错误的影响

在Linux系统中&#xff0c;网络配置是保持系统顺畅运行的关键一环。正确配置网卡的IP地址对于确保网络通信的准确性和效率至关重要。然而&#xff0c;如果在这个过程中发生错误&#xff0c;可能会带来一系列问题。让我们一起探讨一下&#xff0c;如果Linux网卡的IP地址配置错误…

RocketMQ的简单使用

这里需要创建2.x版本的springboot项目 导入依赖 <dependencies><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version></dependency>&…

ChromeOS 中自启动 Fcitx5 和托盘 stalonetray

ChromeOS 更新的飞快&#xff0c;旧文章的方法也老是不好用&#xff0c;找遍了也没找到很好的可以开机自启动 Linux VM 和输入法、托盘的方法。 研究了一下&#xff08;不&#xff0c;是很久&#xff09;&#xff0c;终于找到个丑陋的实现。 方法基于 ChromeOS 123.0.6312.94…

带刻度透明PFA量筒耐强酸碱耐高温全氟烷氧基树脂量具

PFA量筒为上下等粗的直筒状&#xff0c;特氟龙量杯是上大下小的圆台形&#xff0c;底座均有宽台设计&#xff0c;保证稳定性&#xff0c;两者均可在实验室中作为定量量取液体的量具&#xff0c;上沿一侧有弧嘴设计&#xff0c;便于流畅地倾倒液体。 规格参考&#xff1a;5ml、…

蓝桥杯每日一题:公约数(gcd)

题目描述&#xff1a; 给定两个正整数 a 和 b。 你需要回答 q 个询问。 每个询问给定两个整数 l,r&#xff0c;你需要找到最大的整数 x&#xff0c;满足&#xff1a; x 是 a和 b 的公约数。l≤x≤r。 输入格式 第一行包含两个整数 a,b。 第二行包含一个整数 q。 接下来…

理解Go语言中的并发和并行

即使有多年的并发编程经验,有些开发人员也可能无法清楚地理解并发(concurrency)和并行(parallelism)之间的区别。下面我们以一个真实的例子来说明:一家咖啡店。 在这家咖啡店中,一名服务员负责接收订单并使用一台咖啡机进行准备。顾客下订单,然后等待他们的咖啡。 …

Gateway是什么?(SpringCloudAlibaba组件)

1、网关介绍 **网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连&#xff0c;是最复杂的网络互连设备&#xff0c;仅用于两个高层协议不同的网络互连。**网关的结构也和路由器类似&#xff0c;不同的是互连层。网关既可以用于广域网互连&#xff0c;也可…

IP证书申请

目录 申请IP证书的基本条件&#xff1a; 申请和使用公网IP证书的过程&#xff1a; 为什么需要申请IP地址证书&#xff1f; 申请IP证书&#xff1a; IP证书又称公网IP地址证书&#xff0c;是一种特殊的SSL/TLS证书&#xff0c;其作用原理和普通的域名证书很像&#xff0c;域…

使用 Cloudflare 和全栈框架实现快速开发

去年 Cloudflare 发布了一系列新功能&#xff0c;使在 Cloudflare 上部署 Web 应用程序变得更加容易&#xff0c;我们看到 Astro、Next.js、Nuxt、Qwik、Remix、SolidStart、SvelteKit 和其他托管 Web 应用程序的大幅增长。 近日 Cloudflare 对这些 Web 框架的集成模块进行了重…

思诺流体邀您探索科技前沿2024年第13届生物发酵展

参展企业介绍 保定思诺流体科技有限公司是一家集研发、生产、销售于一体的高新技术企业。从事蠕动泵、蠕动泵软管、蠕动泵OEM产品、蠕动泵灌装系统等的研发、生产与销售。产品在科研实验室、化工、印刷、环保、水处理等领域得到了广泛应用。 “思诺”取自“Signal”的英…

Linux学习记录20——文件的隐藏权限

一.学习的内容 Linux系统中的文件除了具备一般权限和特殊权限之外&#xff0c;还有一种隐藏权限&#xff0c;即被隐藏起来的权限&#xff0c;默认情况下不能直接被用户发觉。既然叫隐藏权限&#xff0c;那么使用常规的ls命令肯定不能看到它的真面目。隐藏权限的专用设置命令是 …

认识JAVA语言(一)扩充

Java语言的程序控制结构 (2.5) 在Java语言中&#xff0c;程序的流程控制对于代码执行的逻辑有着至关重要的作用。通过条件控制和循环控制&#xff0c;程序可以做出决策、重复执行任务&#xff0c;并在合适的时间退出。本章将详细介绍这些结构&#xff0c;并通过代码示例和表格来…