【MySQL】表的操作【有关表结构的操作】【创建、查看、删除、修改表结构】

server/2024/12/31 1:07:57/

目录

  • 表的操作
    • 1.创建表
    • 2.查看表结构
    • 3修改表
      • 3.1修改表名
      • 3.2添加字段/列
      • 3.3修改字段/列
      • 3.4删除字段/列
      • 3.5对单一字段/列 重命名
    • 4.删除表

表的操作

1.创建表

创建表的语句语法:

mysql">CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) charset 字符集 collate 校验规则 engine 存储引擎;
  • field 表示列名

  • datatype 表示列的类型

  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准

  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

  • engine 存储引擎,如果没有指定存储引擎,就会以所在数据库的默认存储引擎为准

实例:

创建两个表,一个user1,一个user2,分别使用不同的存储引擎去创建

mysql">create table if not exists user1(id int,name varchar(20) comment '用户名',password char(32) comment '用户的密码',birthday date comment '用户的生日')charset=utf8 collate=utf8_general_ci engine=InnoDB;

两个表的区别只有存储引擎不同

mysql">create table if not exists user2(id int,name varchar(20) comment '用户名',password char(32) comment '用户的密码',birthday date comment '用户的生日')charset=utf8 collate=utf8_general_ci engine=MyIsam;

image-20240909122008725

我们发现,不同的存储引擎,在数据库中创建的文件是不同的

image-20240909122106394

user1 表存储引擎是 InooDB ,在数据目中有两个不同的文件,分别是:

  1. user1.frm:表结构
  2. user1.ibd:表数据和表索引

user2 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

  1. user2.frm:表结构
  2. user2.MYD:表数据
  3. user2.MYI:表索引

具体有关存储引擎的不同带来的区别,要以后在学。这里知道会创建不同的文件就行。

2.查看表结构

查看表结构可以输入:

mysql">desc 表名;

查询上面我们创建的user1和user2两个表

image-20240909143038774

image-20240909150742884

但是这个查看有一些信息我们还不能知道,比如说他的字符集和校验规则。

我们输入:

mysql">show create table user1;

或者

mysql">show create table user1 \G

\G可以去掉格式化,让显示出来的信息更方便我们去阅读

image-20240909145232060

这里的语句,就是mysqld服务器经过词法语法分析之后的标准语句,和我们写的是有点不一样的,只要能查到就说明mysql已经将我写的指令记录下来了。mysql会将我所有的操作都记录下来。

3修改表

在实际中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

3.1修改表名

mysql">alter table 旧表名 rename to 新表名;

这个to也可以省略

mysql">alter table 旧表名 rename 新表名

实例:

image-20240909174946046

修改完之后呢,我们插入两个数据。

mysql">insert into user values(1, '张三', '123456', '2021-10-1');
insert into user values(2, '李四', '12286', '2024-10-1');

也可以一次性全部插入

mysql">insert into users values(1, '张三', '123456', '2021-10-1'),(2, '李四', '12286', '2024-10-1');

之前我们插入数据要输入对应的字段名字:

比如:

mysql">insert into user(id, name, password, birthday) values(1, '张三', '123456', '2021-10-1');
insert into user(id, name, password, birthday) values(2, '李四', '12286', '2024-10-1');

如果不输入字段名字,就说明默认要对全部字段进行插入

插入完表格内多了两个数据.

image-20240909210100401

如果这个时候我们有一个需求,要在这个表中多存储一个张三或者李四的照片的存储路径,那就要多一列,也就是在表中多添加一个字段

3.2添加字段/列

在users表添加一个字段,用于保存图片路径

mysql">alter table user add image_path varchar(128) comment '用户的头像路径' after birthday;

对这段指令的一些解析如下图所示:

image-20240909211422290

查看表的数据,可以证实我们的字段被添加进去了,并且添加字段对原数据不会发生影响

image-20240909211535215

详细的也可以输入show create table user;或着desc user;来查看。

3.3修改字段/列

对user的name字段进行长度的扩容

输入下面这个指令将name字段的长度扩容到60

mysql">alter table user modify name varchar(60);

image-20240909212237178

也不会对数据造成影响

image-20240909212603663

看着非常完美,实际上,这个name字段的注释已经消失了。因为modify,更像是覆盖,而不是修改,他是创建了一个新的name字段去对原字段进行覆盖

输入show create table user \G;查看

image-20240909212749343

因此在对字段进行修改的时候,要加上注释

mysql">alter table user modify name varchar(60) comment '用户名';

3.4删除字段/列

删除password列

注意:删除字段一定要小心,删除字段及其对应的列数据都没了

输入指令将password字段给删除掉

mysql">alter table user drop password;

image-20240909213626511

3.5对单一字段/列 重命名

比如将name列重命名为 xingming

mysql">alter table user change 旧字段名name 新字段名xingming varchar(60); --新字段需要完整定义

image-20240909214704653

4.删除表

还是要注意,尽管我们学习了对表的修改和对表的删除,这些都是对表的结构进行修改(属于DDL类的sql语句),但是我们还是尽量不要去对表的结构进行改动,因为数据库属于比较底层的东西,底层改了上层就要跟着动,而且对数据也有丢失的风险。

删除表的操作很简单。

mysql">drop table 表名

实例:
删除名为user2的表

image-20240909233329360

如果只想删除数据,保留表结构,就输入:

mysql">delete from 表名

类的sql语句),但是我们还是尽量不要去对表的结构进行改动,因为数据库属于比较底层的东西,底层改了上层就要跟着动,而且对数据也有丢失的风险。

删除表的操作很简单。

mysql">drop table 表名

http://www.ppmy.cn/server/118886.html

相关文章

windows下自启springboot项目(jar+nginx)

1、将springboot项目打包为jar 2、新建文本文档 test.txt,并输入 java -jar D:\test\test.jar(修改为自己的jar包位置) 保存 然后修将后缀名改为 .bat 3、在同一目录再新建 文本文档test.txt,输入以下内容,&…

uni-app怎么使用uni-icons

首先在官网(uni-icons 图标 | uni-app官网)中找到下载地址 uni-icons 图标 - DCloud 插件市场 把这个插件下载下来。目录结构是这样的。我们找到uni_modules 把里面的uni-icons粘贴到自己的项目中 我是放在了我的components下面了 然后再页面中引用这个…

【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 苹果格式

【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 Heic2any: Client-side conversion of HEIC/HEIF image files to JPEG,PNG, or GIF in the browser.https://alexcorvi.github.io/heic2any/#demo GitHub - alexcorvi/heic2any: Converting HEIF/HEIF image formats to PN…

Web植物管理系统-下位机部分

本节主要展示上位机部分,采用BSP编程,不附带BSP中各个头文件的说明,仅仅是对main逻辑进行解释 main.c 上下位机通信 通过串口通信,有两位数据验证头(verify数组中保存对应的数据头 0xAA55) 通信格式 上位发送11字节…

Leetcode—合并两个有序数组

题目描述 思路 思路:创建三个指针,L1指向num1最后一个有效数据的位置,L2指向num2最后一个有效数据的位置,L3指向num1最后一个位置。比较L1和L2位置的数据,谁大,谁往L3的位置放数据。 画图解释 创建三个指…

VUE + NODE 历史版本安装

以node 12.20.0为例子,想下载哪个版本,后面写哪个版本 https://registry.npmmirror.com/binary.html?pathnode/v12.20.0/ 安装国内镜像7.1.0 cnpm npm install -g cnpm7.1.0 -g --registryhttps://registry.npmmirror.com 安装vue脚手架4.5.15 cnpm …

客户端(服务器下载文件)

一、客户端代码 客户端代码 //实现TCP客户端通信 #include<stdio.h> #include<unistd.h> #include<sys/stat.h> #include<sys/types.h> #include<sys/socket.h> #include<string.h> #include<netinet/ip.h> #include<netinet/in…

从零到一,数字文创IP是如何在基地中孵化成长的?

在数字时代的浪潮下&#xff0c;数字文创IP孵化基地正成为培育创新的肥沃土壤&#xff0c;见证着一个个数字文创 IP 从无到有、茁壮成长。 数字文创IP孵化基地首先为创意的萌发提供了空间。这里汇聚了各路富有创造力的人才&#xff0c;他们的思想在这里碰撞&#xff0c;灵感的火…