数据库mysql-对数据库和表的DDL命令

文章目录

  • 一、什么是DDL操作
  • 二、数据库编码集和数据库校验集
  • 三、使用步骤
    • 对数据库的增删查改
      • 1.创建数据库
      • 2.进入数据库
      • 3.显示数据库
      • 4.修改数据库
        • mysqldump
      • 5.删除数据库
    • 对表的增删查改
      • 1.添加/创建表
      • 2.插入表内容
      • 3.查看表
        • 查看所有表
        • 查看表结构
        • 查看表内容
      • 4.修改表
        • 修改表的名字
        • 修改表的结构
          • 对表结构的增加
          • 对表结构的其中一列属性进行修改
          • 对表结构的其中一列改名并修改属性
          • 对表结构的删除
        • 删除表


一、什么是DDL操作

DDL(Data Definition Language),是数据定义语言的缩写,它是SQL(Structured Query Language)语言的一个子集,用于定义或修改数据库的结构。DDL主要包括创建(CREATE)、修改(ALTER)、删除(DROP)等操作。

二、数据库编码集和数据库校验集

数据库编码集就是当对数据库内容进行存储时,采用怎样的编码格式来存储。
数据库校验集就是当对数据库内容进行读取时,采用怎样的编码格式来读取。

所以,为了保证数据库在读取数据时,不会产生乱码,我们就需要让数据库的编码集和校验集进行对应,比如说用utf8的格式进行存储,那么也必须使用utf8的格式进行读取!

如何查看自己的mysql支持怎样的编码集和校验集?
show charset; 查看编码集
show collation; 查看校验集

如何查看当前的默认的编码集和校验集?
show variables like 'character_set_database';
show variables like 'collation_database';
在这里插入图片描述

三、使用步骤

对数据库的增删查改

1.创建数据库

现在我要创建一个名为test的数据库,应该怎么创建呢?

  1. create database test; 这是最简单的写法。
  2. create database if not exists test; 加上if not exists 表示如果不存在该数据库才创建。
  3. create database if not exists test charset=utf8mb3 collate=utf8mb3_general_ci; 加上charset=utf8mb3,让该数据库默认采用utf8mb3的编码集格式,collate=utf8mb3_general_ci让该数据库默认采用utf8mb3_general_ci的编码集格式。这里的charset=utf8mb3还可以写成 character set utf8mb3;collate=utf8mb3_general_ci还可以写成collate utf8mb3_general_ci。

当我们创建一个数据库之后,我们可以在/var/lib/mysql路径下找到对应的数据库目录。

2.进入数据库

use database_name;
在这里插入图片描述
进入了这个数据库,我们才能再对数据库中的表进行增删查改。

3.显示数据库

show databases;
在这里插入图片描述
如何查看我当前所在的数据库?
select database();
在这里插入图片描述

4.修改数据库

对数据库进行修改只能修改其字符编码集和字符校验集。
alter database test charset=gbk collate=gbk_chinese_ci;
在这里插入图片描述
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = DATABASE();

那有没有修改数据库名字的操作呢? 以前有,但是被移除了,因为不安全!
如果想要修改数据库的名字,应该使用mysqldump进行备份!

首先这里需要插入一个前备知识。
当输入show create database test;
在这里插入图片描述
需要注意的是,这里的/*!40100 DEFAULT CHARACTER SET gbk / /!80016 DEFAULT ENCRYPTION=‘N’ */并不是注释,而是可变选项!

所以这个指令是什么意思? 这个指令是告诉我们如果要创建一个test数据库,需要输入怎样的指令。


mysqldump

mysqldump是一个bash命令,并不是mysql命令,这个命令程序在安装mysql的时候也顺带安装上了。
我们如果要将某个数据库进行备份,就可以使用这个命令。

我们先在test库先创建一个表,并插入一些内容以便等会看实验现象。

在这里插入图片描述

此时我们再退出数据库,并进入一个空目录下,执行命令
mysqldump -P 3306 -u root -p -B test >./test.sql
再使用ls就可看到,此目录多出一个test.sql的文件。
我们可以打开文件,看文件的内容是什么。
在这里插入图片描述

如果细心观察就可以看出这就是一串创建数据库、创建表并插入数据的mysql指令。
所以,mysqldump的备份其实是备份“指令”。

那么怎么导入这个文件为我们创建数据库呢?
再登录我们的mysql,将我们的test数据库删掉。
输入source /home/fengjunziya/test/lesson37_mysqltest/test.sql;
在这里插入图片描述
它就为我们执行了那个文件的命令,也就达到了备份导入的作用。

可是怎么修改数据库名字呢?
首先在使用mysqldump命令时不能加上-B
mysqldump -P3306 -uroot -p test > test.sql
在这里插入图片描述
这时我们就可以看到文件内的并没有创建数据库的指令。
所以我们在使用source导入的时候,就需要先创建一个数据库(新名字)再进行导入。

create database hello; 创建hello数据库
use hello; 进入hello数据库
source /home/fengjunziya/test/lesson37_mysqltest/test.sql; 导入文件指令
select database(); 查看当前所在数据库
select * from user; 查看user表中的数据内容
在这里插入图片描述
最后也是被拷贝进来了。

5.删除数据库

删除数据库很简单,但是一旦删除数据库,该数据库内的数据将全部被清空,所以需要谨慎!

drop database database_name;

需要注意的是,对于数据库而言,不论是修改还是删除,都是有风险的行为,因为我们的数据库一般都是直接与上层服务连接,一旦修改数据库的名字,或者删除数据库都可能会造成上层服务出现问题!


对表的增删查改

1.添加/创建表

创建表的格式怎么写呢?
create table table_name(...);
1.
还可以加入 if not exists
在这里插入图片描述
还可以加入comment 添加描述
在这里插入图片描述
再复杂点还可以指定字符编码集、字符校验集还有存储引擎
在这里插入图片描述

2.插入表内容

insert into table_name values (...), (...), ... ;
在这里插入图片描述
insert是下一章的DML操作,这里大家先接触一下。

3.查看表

查看所有表

show tables;
在这里插入图片描述

查看表结构

desc table_name;
在这里插入图片描述

在这里插入图片描述

查看表内容

select * from table_name;
在这里插入图片描述
select也是下一章的DML命令。

4.修改表

修改表的名字

alter table table_name rename (to) new_name;
在这里插入图片描述

修改表的结构
对表结构的增加

如果要对表原有的结构再加一栏。
alter table table_name add newfield type;

在这里插入图片描述
alter table teachers add birthday varchar(20) after gender; after gender代表是在gender后面加一栏。

对表结构的其中一列属性进行修改

alter table table_name modify field_name type;
在这里插入图片描述

对表结构的其中一列改名并修改属性

alter table table_name change field_name newfield_name type;

在这里插入图片描述

对表结构的删除

alter table table_name drop field_name;
在这里插入图片描述

删除表

drop table table_name;
在这里插入图片描述
一旦删除表,该表的数据将全部被清空,所以需要谨慎!

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

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

相关文章

《ElementUI/Plus 基础知识》el-tree 之修改可拖拽节点的高亮背景和线

前言 收到需求,PM 觉得可拖拽节点的高亮背景和线样式不明显!CSS 样式得改! 注意:下述方式适用于ElementUI el-tree 和 ElementPlus el-tree! 修改 拖拽被叠加节点的背景色和文字 关键类名 is-drop-inner .el-tree…

keepalive和haproxy

1、keepalive 1.1概念 调度器的高可用 vip地址主备之间的切换,主在工作时,vip地址只在主上,主停止工作,vip漂移到备服务器 在主备的优先级不变的情况下,主恢复工作,vip会飘回到主服务器 1、配优先级 …

智能优化算法之蚁群算法ACO

蚁群算法(Ant Colony Optimization, ACO)由意大利学者马尔科多里戈(Marco Dorigo)于1992年在其博士论文中首次提出。灵感来自于自然界中的蚂蚁群体行为,特别是蚂蚁在寻找食物过程中所展示的路径优化能力。蚁群算法属于…

基于stm32+小程序开发智能家居门禁系统-硬件-软件实现

视频演示: 基于stm32智能家居门禁系统小程序开发项目 视频还有添加删除卡号,添加删除指纹,关闭继电器电源等没有演示。 代码Git: https://github.com/Abear6666/stm32lock 总体功能: 本门禁系统主要解锁功能分别为卡…

一文彻底学会Vue3路由:全面讲解路由流程、路由模式、传参等——全栈开发之路--前端篇(7)路由详解

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

离线 VisualStudio2022 安装包在无互联网的环境下安装

文章目录 下载 Visual Studio 引导程序以创建布局离线安装包将离线包更新为产品的最新版本将布局更新为产品的特定版本 下载 Visual Studio 引导程序以创建布局 https://learn.microsoft.com/zh-cn/visualstudio/install/create-a-network-installation-of-visual-studio?vie…

Golang | Leetcode Golang题解之第223题矩形面积

题目: 题解: func computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 int) int {area1 : (ax2 - ax1) * (ay2 - ay1)area2 : (bx2 - bx1) * (by2 - by1)overlapWidth : min(ax2, bx2) - max(ax1, bx1)overlapHeight : min(ay2, by2) - max(ay1, by1)…

浅谈后置处理器之JSON提取器

浅谈后置处理器之JSON提取器 JMeter 的 JSON 提取器(JSON Extractor)是一个强大的后置处理器,它允许用户从HTTP响应、数据库查询或其他类型的响应中提取JSON数据,并将这些数据存储为变量,以便在后续的请求中重用。这对…

从数据仓库到数据湖(上):数据湖导论

文章目录 一、什么是数据湖?起源数据湖的特征 二、为什么要用数据湖?三、数据湖与数据仓库的区别数据仓库和数据湖的对比 四、数据湖本质数据存储架构数据处理工具:三类第一类工具第二类工具第三类工具 小结 五、总结六、参考资料 一、什么是…

Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

手机怎么用代理ip上网

在数字化时代,网络已经成为我们生活中不可或缺的一部分。然而,有时候出于安全、隐私或访问特定网络资源的需要,我们可能需要使用代理IP来上网。那么,什么是代理IP?如何在手机上设置并使用它呢?本文将为您详…

南通网站制作基本步骤有哪些

南通网站制作是一个非常重要的工作,它可以帮助企业展示产品、服务和品牌形象,吸引更多的客户和创造更多的商机。网站制作的基本步骤包括需求分析、规划设计、页面制作、网站测试和上线等。 首先是需求分析。在南通网站制作的初期阶段,需要和客…

SpringCloud Alibaba Sentinel网关流量控制实践总结

官网地址:https://sentinelguard.io/zh-cn/docs/api-gateway-flow-control.html GitHub地址:GitHub Sentinel 网关限流 【1】概述 Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API …

QFileDialog的简单了解

ps:写了点垃圾(哈哈哈) 现在感觉Qt库应该是调用了Windows提供的这块的接口了。 它继承自QDialog 这是Windows自己的文件夹 这是两者的对比图: 通过看QFileDialog的源码,来分析它是怎么实现这样的效果的。 源码组成…

探索Java网络编程精髓:UDP与TCP的实战魔法!

Java 中提供了专门的网络编程程序包 java.net,提供了两种通信协议:UDP(数据报协议)和 TCP(传输控制协议),本文对两种通信协议的开发进行详细介绍。 1 UDP 介绍 UDP:User Datagram Pr…

node-gyp 重新安装,解决编译遇到的问题【超详细图解】

一、报错信息 npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp10.0.1 npm ERR! gyp info using node18.19.0 | darwin | arm64 npm ERR! gyp info find Python using Python version 3.12.2 found at "/opt/homebrew/opt/python3.12/…

3D工艺大师快速生成装配动画,驱动汽车工业装配流程革新

在现代制造业的一般生产流程中,车间装配环节是产品由蓝图迈向市场前至关重要的一道工序。随着产品结构的日益复杂化和个性化需求的不断增长,车间装配工作面临着前所未有的挑战。高精密度的装配要求、错综复杂的组件关系以及频繁变更的生产计划&#xff0…

《代理选择与反爬虫策略探究:如何优化网络爬虫效率与稳定性》

代理IP如何选以及常见反爬策略 为什么需要代理? 因为有的网站会封IP,用户如果没有登录,那IP就是身份标识,如果网站发现用户行为异常就非常可能封IP 什么是代理IP 就是让一个人帮你转交请求,帮你转交的人对面不熟&a…

华为OD机试 - 堆内存申请(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

VMware安装Ubuntu以及利用vscode远程Ubuntu

一、VMware安装Ubuntu (1)VMware安装Ubuntu主要参考此文VMware虚拟机安装Ubuntu22.04图文教程(超详细!!!)。 (2)VMware密钥参考此文24年VMware 17密钥(附下载链接&#…