【MySQL】3.MySQL表操作

news2025/2/3 3:47:38

文章目录

  • 1.0 MySQL表操作详解
    • 1.1 MySQL创建表
    • 1.2 MySQL查看表结构
    • 1.3 MySQL修改表

1.0 MySQL表操作详解

1.1 MySQL创建表

指令:create table table_name(field1 datatype, field2 datatype) character + collate + engine;
后面三个参数可以省略,MySQL会自动调用默认配置

MariaDB [clx_database]> create table if not exists `stu_list`(    //添加表
    -> id int,
    -> name varchar(20) comment '姓名',
    -> password char(30) comment '校园卡密码',
    -> birthday date comment '生日'
    -> );
Query OK, 0 rows affected (0.01 sec)

MariaDB [clx_database]> show tables;
+------------------------+
| Tables_in_clx_database |
+------------------------+
| stu_list               |
+------------------------+
1 row in set (0.00 sec)
MariaDB [clx_database]> desc stu_list;                            //打印表结构
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| password | char(30)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

MariaDB [clx_database]> show create table stu_list \G;          //打印表的构建信息
*************************** 1. row ***************************
       Table: stu_list
Create Table: CREATE TABLE `stu_list` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '姓名',
  `password` char(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '校园卡密码',
  `birthday` date DEFAULT NULL COMMENT '生日'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci    //此处为MySQL配置的表的默认属性
1 row in set (0.00 sec)

可以看到stu_list 默认使用的存储引擎是 InnoDB,接下来我们使用MyISAM存储引擎再创建一个表

MariaDB [clx_database]> create table if not exists `stu_myisam`(
    -> id int,
    -> name varchar(20),
    -> password char(30),
    -> birthday date
    -> ) engine MyISAM;                  //显式设置使用MyISAM存储引擎
Query OK, 0 rows affected (0.01 sec)
MariaDB [clx_database]>  show tables;
+------------------------+
| Tables_in_clx_database |
+------------------------+
| stu_list               |
| stu_myisam             |
+------------------------+
2 rows in set (0.00 sec)

在这里插入图片描述
我们发现,不同的存储引擎,创建表的文件是不一样的。
stu_myisam 表的存储引擎是MyISAM,再数据存储中有三个不同的文件,分别存储不同的信息

stu_myisam.frm  表结构
stu_myisam.MYD  表数据
stu_myisam.MYI  表索引

1.2 MySQL查看表结构

指令:desc + table_name

MariaDB [clx_database]> desc stu_list;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| password | char(30)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

1.3 MySQL修改表

1.3.1 表的插入
指令:insert into table_name (field1, field2, field3 …) values (variable1, variable2, variable3 …);

MariaDB [clx_database]> system clear
MariaDB [clx_database]> insert into stu_list (id, name, password, birthday) values (1, 'a', 'b', '2000-0-0'), (2, 'c','d','2020-0-0');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [clx_database]> select * from stu_list;
+------+------+----------+------------+
| id   | name | password | birthday   |
+------+------+----------+------------+
|    1 | a    | b        | 2000-00-00 |
|    2 | c    | d        | 2020-00-00 |
+------+------+----------+------------+
2 rows in set (0.00 sec)

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

1.3.2 表添加一个字段
指令: alter table table_name add field datatype + after field(没有默认添加在队尾);

MariaDB [clx_database]> select * from stu_list;
+------+------+----------+------------+
| id   | name | password | birthday   |
+------+------+----------+------------+
|    1 | a    | b        | 2000-00-00 |
|    2 | c    | d        | 2020-00-00 |
+------+------+----------+------------+
2 rows in set (0.00 sec)

MariaDB [clx_database]> alter table stu_list add path varchar(100);    //在队尾添加一个path 字段
Query OK, 2 rows affected (0.02 sec)               
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [clx_database]> select * from stu_list;
+------+------+----------+------------+------+
| id   | name | password | birthday   | path |
+------+------+----------+------------+------+
|    1 | a    | b        | 2000-00-00 | NULL |
|    2 | c    | d        | 2020-00-00 | NULL |
+------+------+----------+------------+------+
2 rows in set (0.00 sec)
MariaDB [clx_database]> alter table stu_list add sex char(1) after name;  //在name字段后面添加 sex字段
Query OK, 2 rows affected (0.07 sec)               
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [clx_database]> select * from stu_list;
+------+------+------+----------+------------+------+
| id   | name | sex  | password | birthday   | path |
+------+------+------+----------+------------+------+
|    1 | a    | NULL | b        | 2000-00-00 | NULL |
|    2 | c    | NULL | d        | 2020-00-00 | NULL |
+------+------+------+----------+------------+------+
2 rows in set (0.00 sec)

可以看到表添加新的字段后,内部原有数据的新建字段都被设置成NULL ,如果因为表的约束内部成员变量不可以为空,则想要插入新字段则必须将原有数据全部删除,或者新建表将原有数据重新编辑然后导入,非常麻烦。就算要插入一定要放在最后,因为上层的业务逻辑一般都是从前向后插入,若你在中间插入一个字段很可能就会将其他字段的数据抢走引起连锁反应,导致后面各个字段拿到的数据与自身类型不匹配的现象

1.3.3 表删除一个字段
指令: alter table table_name drop filed;

MariaDB [clx_database]> alter table stu_list drop sex;  //删除性别这个字段
Query OK, 2 rows affected (0.03 sec)               
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [clx_database]> select * from stu_list;
+------+------+----------+------------+------+
| id   | name | password | birthday   | path |
+------+------+----------+------------+------+
|    1 | a    | b        | 2000-00-00 | NULL |
|    2 | c    | d        | 2020-00-00 | NULL |
+------+------+----------+------------+------+
2 rows in set (0.00 sec)

1.3.4 表名修改
指令: alter table table_name rename to new_name

MariaDB [clx_database]> alter table stu_list rename to student_list;
Query OK, 0 rows affected (0.01 sec)

MariaDB [clx_database]> show tables;
+------------------------+
| Tables_in_clx_database |
+------------------------+
| stu_myisam             |
| student_list           |
+------------------------+
2 rows in set (0.00 sec)

1.3.5 表字段名修改
指令:alter table table_name change name newname newtype;

MariaDB [clx_database]> alter table student_list change name xingming char(60);  //修改name字段为xingming 字段
Query OK, 2 rows affected (0.02 sec)                                             //类型: char(60) 
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [clx_database]> desc student_list;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| xingming | char(60)     | YES  |     | NULL    |       |
| password | char(30)     | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| path     | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

1.3.6 表字段类型更改
指令:alter table table_name modify filed datatype;

MariaDB [clx_database]> desc student_list;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| xingming | char(60)     | YES  |     | NULL    |       |
| password | char(30)     | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| path     | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
MariaDB [clx_database]> alter table student_list modify xingming varchar(20);  //将姓名字段的类型更改为 varchar(20)
Query OK, 2 rows affected (0.02 sec)               
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [clx_database]> desc student_list;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| xingming | varchar(20)  | YES  |     | NULL    |       |
| password | char(30)     | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| path     | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

1.3.7 表的删除
指令: drop table table_name;

MariaDB [clx_database]> drop table stu_myisam;  //删除表stu_myisam
Query OK, 0 rows affected (0.00 sec)

MariaDB [clx_database]> show tables;
+------------------------+
| Tables_in_clx_database |
+------------------------+
| student_list           |
+------------------------+
1 row in set (0.00 sec)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源绘图神器,Labplot的初步使用

文章目录数据生成图像定制多图绘制Labplot是一款开源且免费的科学绘图软件,除了Windows外,对Linux的Debian、Ubuntu、Fedora等发行版均有着良好的支持。 其下载地址为:LabPlot2下载,安装过程注意选择中文。 数据生成 打开软件后…

新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作

区块链去中心化思想无处不在,比如最近使用个体抗原自检替代大规模的中心化核酸检测,就是去中心化思想的落地实践,避免了大规模聚集导致的交叉感染,提高了检测效率,本次我们使用Ethereum最新的ethersV5.0以上版本链接去…

XXL-JOB架构篇 - 初识分布式任务调度XXL-JOB

任务调度 一、什么时候需要任务调度? 基于时间的任务 批量数据的处理 异步解耦(比如先做任务A,再做任务B) 二、任务调度的基本需求有哪些? 可以定义触发的规则,比如基于时刻、时间间隔、表达式。 可以定义…

5G无线技术基础自学系列 | RF优化概述

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 随着5G商用网络的陆续建设,…

疫情抑制珠宝消费增长,珠宝主要市场需求萎缩

一、我国珠宝行业市场规模持续增长 根据观研报告网发布的《2022年中国珠宝行业分析报告-行业现状与发展趋势分析》显示,2021年上半年,中国金饰需求增长强劲,中国金饰消费量在2021年第二季度趋于稳定,使上半年金饰总需求达到338吨…

chatGPT接口,不需要科学上网就可以调用的OPENAI接口

最近很多国产版本的chatGPT出现了 查找了一圈发现调用的openai 的一个接口 测试了一下效果还算可以吧 视频教程 链接: 视频教程 用接口自己写了一个测试的网页 日常使用应该是不成问题 接口整理好了在这: 请求接口: URL:-POST https://api.openai.…

m基于RBF神经网络和BP神经网络的信道估计误码率matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在无线通信系统中,从发射端发射的信号,经过直射、反射、散射等路径到达接收端。在ofdm系统中,为了获取更好的性能,需要进行信道估计获取信道的状态…

Diffusion Model合集 part1

扩散模型原理介绍1一,条件概率公式与高斯分布的KL散度重参数技巧二,VAE和多层VAE回顾单层VAE的原理公式与置信下界多层VAE的原理公式与置信下界三,Diffusion Model 图示四,扩散过程(Diffusion Process)与VAE的区别:如何…

腾讯云weda低代码让别人能看到发布的应用

我们先登录低代码的平台 腾讯云-控制台 (tencent.com) 我们从创建应用开始讲起,点击新建门户应用: 点击确定 我们先把这个应用发布。 确认发布。 显示出,下面这个已经发布成功后,我们就返回到主页面。 返回主界面,点…

《Docker系列》Docker安装MySQL 5.7

Docker安装MySQL 5.7 一、docker拉取MySQL 5.7镜像 docker pull mysql 拉取最新MySQL docker pull mysql:5.7 拉取指定版本MySQL 1 拉取mysql 5.7镜像 [rootzxy_master ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql d26998a7c52d: Pull complete 4a9d8a356…

JavaWeb之Servelt学习

1.Servlet 概念:运行在服务端的小程序 Servlet就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则 将来我们自定义一个类,实现Servlet接口,复写方法 1.1快速入门 1.创建javaEE项目 2.定义类实…

DFS——连通性和搜索顺序(回溯)

文章目录概述连通性问题模板思考迷宫红与黑搜索顺序(回溯)模板思考马走日单词接龙分成互质组总结概述 定义 在深度优先搜索中,对于最新发现的顶点,如果它还有以此为顶点而未探测到的边,就沿此边继续探测下去,当顶点v的所有边都已…

JavaScript刷LeetCode拿offer-滑动窗口

一、前言 《JavaScript刷LeetCode拿offer-双指针技巧》中,简单地介绍了双指针技巧相比较单指针的优点,以及结合 Easy 难度的题目带大家进一步了解双指针的应用。 进入 Medium 难度之后,解题的关键在于如何构造双指针以及确定指针移动的规则…

从 0 开始学 Python 自动化测试开发(二):环境搭建

本文是「从 0 开始学 Python 自动化测试开发」专题系列文章第二篇 —— 环境搭建篇,适合零基础入门的同学。没有阅读过上一篇的同学,请戳主页看上一篇噢。作者方程老师,是前某跨国通信公司高级测试经理,目前为某互联网名企资深测试…

常见管理网络的net命令

目录1 简介2 常用命令2.1 net view2.2 net user2.3 net use2.4 net start2.5 net stop2.6 net share1 简介 net 命令是一种基于网络的命令,该命令包含了管理网络环境、服务、用户、登录等大部分重要的管理功能。 2 常用命令 2.1 net view 作用:显示域…

Spring 之 @Component 和 @Configuration 两者区别以及源码分析

之前一直搞不清 Component 和 Configuration 这两个注解到底有啥区别,一直认为被这两修饰的类可以被 Spring 实例化嘛,不,还是见识太短,直到今天才发现这两玩意有这么大区别。很幸运能够及时发现,后面可以少走点坑&…

操作系统知识点

操作系统的目标: 方便:使计算机系统易用 有效:以更有效的方式使用计算机系统资源 扩展:方便用户有效开发、测试和引进新功能 操作系统的 作用: 1. 有效的管理资源 2.通过命令接口、编程接口等为用户提供各种…

【自然语言处理】【ChatGPT系列】Chain of Thought:从大模型中引导出推理能力

Chain-of-Thought Prompting:从大模型中引导出推理能力《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》论文地址:https://arxiv.org/pdf/2201.11903.pdf 相关博客 【自然语言处理】【ChatGPT系列】Chain of Thought&#xf…

什么是加权轮询?云解析DNS是否支持加权轮询?-中科三方

什么是加权轮询? 所谓的加权轮询算法,其实就是Weighted Round Robin,简称wrr。在我们配置Nginx的upstream的时候,带权重的轮询,其实就是wrr。 upstream backend { ip_hash; server 192.168.1.232 weight4; server 19…

无疫苗未吃药,48小时内阳康全纪实个案

为了不误导不同体质的人,特意强调这是个案,阳康方案仅供参考。小编体质偏寒,长期熬夜,黑白颠倒,有习惯性头痛症。经验总结:1.受到风寒是病发的直接导火索,就算携带病毒,本体没有受到…