【MYSQL】MYSQL学习的一大重点:MYSQL表的操作

【MYSQL】MYSQL学习的一大重点:MYSQL表的操作

头像

🎬 个人主页艾莉丝努力练剑
专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录
Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬 艾莉丝的简介:

在这里插入图片描述

文章目录


在这里插入图片描述

0 ~> 概要

1、查看表结构:desc

  • desc:描述表的详细信息。
  • desc可以理解成,describe,“描述”。

2、清空MYSQL:system clear

3、查询表的多个数据:select * from 表名。

  • SELECT:从一个或者多个表中检索数据,不会修改原始数据
在这里插入图片描述

4、不要轻易修改表名字或者删除表一旦改了,上层很难找,对程序员是一种莫大的伤害,所以表结构不要改,虽然讲了表的修改和删除,但是不建议修改或者删除标的表,表结构尽量后续少改。

总结一下表操作的几个重点:第一个是增加,第二个是修改,第三个是删除,第四个是查看

在这里插入图片描述

CREATE是操作表结构,但是像SELECT不是操作表结构,而是操作表的内容。

在这里插入图片描述

数据库的操作、表的操作,尤其是表的操作,应该属于哪一种呢?DDLDCLDML?表的操作是在定义表的结构,无论是增加、删除还是修改表的结构,都是属于定义表的结构的范畴。


1 ~> 创建表

创建表的语法

CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field表示列名
  • data type表示列的类型
  • character set字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

2 ~> 创建表的案例详解

案例:

create table users(id int, name varchar(20) comment '用户名', password char(32) comment '密码是32位的md5值', birthday date comment '生日') character set utf8 engine MyISAM;
在这里插入图片描述

说明:

不同的存储引擎,创建表的文件不一样。

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

  • users.frm表结构
  • users.MYD表数据
  • users.MYI表索引

我们复制一下渠道,查看一下当前路径——

在这里插入图片描述

直接在文件资源管理器中也可以看到——

在这里插入图片描述

备注: 创建一个engine(存储引擎)是innodb的数据库,观察存储目录。


3 ~> 查看表结构

语法:

desc 表名;

示例:

在这里插入图片描述

实际场景中,查看效果如下:

在这里插入图片描述

4 ~> 修改表

4.1 什么时候需要修改表

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

4.2 修改方式

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...); ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...); ALTER TABLE tablename DROP (column);

4.3 案例

4.3.1 在users表添加二条记录

mysql> insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');

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

mysql> alter table usersadd assets varchar(100) comment '图片路径' after birthday;

添加之后我们查看一下表的详细信息——

mysql> desc users; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ |id| int(11)| YES || NULL ||| name | varchar(20)| YES || NULL ||| password | char(32)| YES || NULL ||| birthday |date| YES || NULL ||| assets | varchar(100)| YES || NULL || +----------+--------------+------+-----+---------+-------+ 

插入新字段后,对原来表中的数据没有影响:

mysql>select * from users; +------+------+----------+------------+-------+ |id| name | password | birthday | assets | +------+------+----------+------------+-------+ |1| a | b |1982-01-04 | NULL |<= 原来的数据仍然存在 |2| b | c |1984-01-04 | NULL | +------+------+----------+------------+-------+ 
在这里插入图片描述

4.3.3 修改name,将其长度改成60

mysql> alter table users modify name varchar(60);
mysql> desc users; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ |id| int(11)| YES || NULL ||| name | varchar(60)| YES || NULL ||<= 长度变成60 | password | char(32)| YES || NULL ||| birthday |date| YES || NULL ||| assets | varchar(100)| YES || NULL || +----------+--------------+------+-----+---------+-------+ 
在这里插入图片描述

4.3.4 删除password列

在这里插入图片描述
  • **注意:**删除字段一定要小心,删除字段及其对应的列数据都没了(公司里尤其注意)。
mysql> alter table users drop password; mysql> desc users; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ |id| int(11)| YES || NULL ||| name | varchar(60)| YES || NULL ||| birthday |date| YES || NULL ||| assets | varchar(100)| YES || NULL || +----------+--------------+------+-----+---------+-------+ 
在这里插入图片描述

4.3.5 修改表名为employee

这里先展示一下如果修改表名为User是啥样的:

在这里插入图片描述
mysql> alter table usersrename to employee;
  • to:这个可以省掉。
mysql>select * from employee; +------+------+------------+-------+ |id| name | birthday | assets | +------+------+------------+-------+ |1| a |1982-01-04 | NULL ||2| b |1984-01-04 | NULL | +------+------+------------+-------+ 

4.3.6 将name列修改为xingming(中文拼音)

在这里插入图片描述
mysql> alter table employee change name xingming varchar(60); --新字段需要完整定义 
mysql> desc employee; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ |id| int(11)| YES || NULL ||| xingming | varchar(60)| YES || NULL ||| birthday |date| YES || NULL ||| assets | varchar(100)| YES || NULL || +----------+--------------+------+-----+---------+-------+ 

5 ~> 删除表

删除表很简单。

语法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]... 

示例:

drop table t1;

结尾

uu们,本文的内容到这里就全部结束了,艾莉丝在这里再次感谢您的阅读!

结语:希望对学习MYSQL相关内容的uu有所帮助,不要忘记给博主“一键四连”哦!

往期回顾:

【MYSQL】MYSQL学习的一大重点:MYSQL库的操作

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡૮₍ ˶ ˊ ᴥ ˋ˶₎ა

Read more

类型转换与IO流:C++世界的变形与交互之道

类型转换与IO流:C++世界的变形与交互之道

文章目录 * 前言 * 🎄一、类型转换 * 🎈1.1 隐式类型转换 * 🎈1.2 显式类型转换 * 🎁1. C 风格强制类型转换 * 🎁2. C++ 类型转换操作符 * 🎈1.3 C++ 类型转换操作符详解 * 🎁1. `static_cast` * 🎁2. `dynamic_cast` * 🎁3. `const_cast` * 🎁4. `reinterpret_cast` * 🎈1.4 类型转换的适用场景对比 * 🎈1.5 类型转换的注意事项 * 🎄二、C++IO流 * 🎈2.1 IO流的分类 * 🎁1. 标准输入输出流 * 🎁2. 文件流 * 🎁3. 字符串流

By Ne0inhk
C++并集查找

C++并集查找

前言 C++图论 C++算法与数据结构 本博文代码打包下载 基本概念 并查集(Union-Find)是一种用于处理动态连通性(直接或间接相连)的数据结构,主要支持两种操作:union 和 find。通过这两个基本操作,可以高效地管理一组元素之间的连通关系。 Find: 查找节点所在有向树的根。 Union: 将两个不同的有向图合并为一棵树。 暴力做法 并集查找处理无向图的数据结构:有向森林,每棵树都是内向树。连通子图都直接或间接指向根,根出度为0,其它节点出度为1。vPar记录各节点的父节点。 Find(u)函数寻找u所在有向树的根(最远祖先): while(-1!= vPar[u]){ u =vPar}return u; 判断u和v是否连通: returnFind(u)==Find(v) 连通: root1 =Find(

By Ne0inhk
【C++】红黑树详解(2w字详解)

【C++】红黑树详解(2w字详解)

手搓AVL树 * 手搓红黑树 * github地址 * 0. 前言 * 1. 什么是红黑树 * 概念与定义 * 红黑树示例 * 2. 红黑树的性质 * 红黑树的性质解读 * 树的路径再认识 * 3. 红黑树如何确保最长路径不超过最短路径的2倍? * 4. 红黑树的实现 * 整体架构设计 * 结点颜色的枚举类 * 红黑树的结点定义 * 红黑树设计 * 红黑树的插入实现 * 1. 空树的插入 * 2. 新插入节点的父亲为黑色 * 新结点的颜色 * 3. 新插入节点的父亲为红色 * (1)叔叔存在且为红色:变色 + 继续向上处理 * (2)叔叔不存在或叔叔为黑色:旋转 + 变色 * ①LL型:右单旋 + 变色 * ②RR型:左单旋 + 变色 * ③LR型:左右双旋 + 变色 * ①RL型:右左双旋 + 变色 * 4.

By Ne0inhk
C++ 多线程同步之互斥锁(mutex)实战

C++ 多线程同步之互斥锁(mutex)实战

C++ 多线程同步之互斥锁(mutex)实战 💡 学习目标:掌握 C++ 标准库中互斥锁的基本用法,理解多线程同步的核心原理,能够解决多线程环境下的资源竞争问题。 💡 学习重点:std::mutex 与 std::lock_guard 的使用、死锁的产生原因及规避方法、实际场景中的同步案例实现。 48.1 多线程同步的必要性 在多线程编程中,当多个线程同时访问共享资源时,会出现资源竞争问题。 例如两个线程同时对同一个变量进行读写操作,会导致最终结果与预期不符。 这种问题被称为线程安全问题,而解决该问题的核心就是线程同步。 ⚠️ 注意事项:线程不同步会引发数据竞争,造成程序运行结果不可预测,甚至导致程序崩溃。 举个简单的反例,两个线程同时对全局变量 count 进行自增操作: #include<iostream>#include<thread>usingnamespace std;int count

By Ne0inhk