【MySQL】sql语句之表操作(上)

2024-06-07 01:20

本文主要是介绍【MySQL】sql语句之表操作(上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

 在上一篇的数据库操作的内容中,学习了两种属性和常用的七种操作,学习是循序渐进的,库的操作学完了,就要开始学习表的操作了,而表可与数据强相关,比如DDL,即数据定义语言,DML,即数据操纵语言,都是与表相关的,而其区别就在于一个是对表结构的操作,而另一个是对表内容的操作,因此表的操作的内容分为上下两部分进行讲解。铺垫完毕,好了话不多说,开始今天的学习吧!

1.创建

create table (if not exists) [表名]([变量名1] [类型],[变量名2] [类型],[变量名3] [类型]
)(charset=[字符集],collate=[校验集],engine=[存储引擎]);

说明:

  • 第一个和第三个()的意思表示其中的内容可省略,第二个()的意思是表的结构都包含哪些类型,不可省略。
  • 请注意从开始的变量名到倒数第二个变量名,末尾都带有,,但是最后一个变量名末尾不带。
  • 字符集和校验集只强调一点,如果没有设置默认与所在的数据库设置的对齐。而存储引擎没有设置跟MySQL默认的对齐。
  • 在MySQL中推荐使用此种类似结构体定义的写法,可读性较高,当然也可以采用一行的写法,具体写法则根据个人喜好来即可。

如下图可得:我所在的MySQL下的默认的存储引擎是InnoDB,通过下图sql语句可进行查看。
在这里插入图片描述


  • 给出一个示例:
    在这里插入图片描述

简要说明一下,此处的类型暂不做讨论,留到后面的文章娓娓道来,而comment,简单理解为给类型做注释,便于用户理解。


此时进入数据库所在的目录/var/lib/mysql/test_db查看一下创建一个表发生了什么,在前面的文章中提及过创建一个数据库的本质就是创建一个目录,创建一个表实际就是在创建文件,那具体创建了什么文件呢?

  • 如图:
    在这里插入图片描述

说明:

  • .sdi为后缀的文件中存放的表的结构。
  • .MYD为后缀的文件中存放的是表的数据。
  • MYI为后缀的文件中存放的是表的索引。

因此可以看出MyISAM采用的索引是一种非聚集索引,即数据和索引分开进行存储。


与此同时,再创建一个InnoDB类型的表,再次查看此目录下的文件与MyISAM进行比较看有什么不同,这里就省略不写了,就是换一个表名,然后将最后的存储引擎换成InnoDB。

  • 如图:
    在这里插入图片描述

相比之下,InnoDB创建的表虽然只建立了一个文件,但这个文件中包含了表的索引和所有数据,因此InnoDB采用的索引是聚集索引。


补充:

  1. MyISAM,MySQL5.5.8版本之前默认的存储引擎,不支持事务,采用非聚集索引。
  2. InnoDB,MySQL数据库5.5.8版本开始,默认的存储引擎,支持事务,采用聚集索引。

2.查看

创建信息

show create table [表名];
#一般将末尾的;换成\G打印出来的效果更好。

在这里插入图片描述

表结构

desc [表名];

在这里插入图片描述
简要说明一下,Field为字段名称,Type为类型,Null为是否可以为控制,Key为是否为索引,Default为是否有默认值,Extra为额外信息。

3.修改

表的重命名

alter table [表名] rename to [新表名]#to可省略不写

如图:

在这里插入图片描述

此处在修改表名其实就是在数据库的目录下将其文件的前缀改为usr

如图:

在这里插入图片描述

增加列

alter table [表名] add [列名] [类型];

如图:

在这里插入图片描述

修改列属性

 alter table [表名] modiy [列名] [新属性];

如图:

在这里插入图片描述

删除列

alter table [表名] drop [列名];

如图:

在这里插入图片描述

补充一个小知识:进入MySQL内部的命令行之后,是不能直接执行系统命令的,如果要执行可在前面加上system,比如system ls;

3.备份和恢复

mysqldump -P [端口号] -u [用户] -p [密码] 数据库 表名,表名,... > [文件].sql#注意:mysql内执行要在mysqldump前加system。

首先向此表中插入一些数据之后,然后进行备份。

如图:

在这里插入图片描述

接着将此表删除之后,进行恢复。

source [指定目录下的.sql文件];

如图:

在这里插入图片描述
说明:恢复数据的过程其实就是将创建表和插入数据的sql语句记录下来,然后再执行一遍,这里Query OK的行有点冗余,为了避免截出来图片过长,我默默P掉了一部分,嘿嘿不用感谢我。


最后从表中查看数据验证结果。

在这里插入图片描述

对比之后结果无误,说明表恢复完毕。

尾序

今天学习了数据定义语言(DDL)中与表结构相关的操作,主要涉及创建,查看,修改,备份和恢复,当然还是一样内容并不难,关键就在于一个熟练度,敲就完事了。我是舜华,期待与你的下次相遇!

这篇关于【MySQL】sql语句之表操作(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037785

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架