MySQL 数据表的基本操作

news2024/11/15 21:06:11

文章目录

  • 【 1. MySQL 创建数据表 】
  • 【 2. MySQL 查看表 】
    • 2.1 DESCRIBE/DESC 以表格的形式展示表
    • 2.2 SHOW CREATE TABLE 以SQL语句的形式展示表
  • 【 3. 修改数据表 】
    • 3.1 修改表名
    • 3.2 修改表字符集
    • 3.3 添加字段
      • 在末尾添加字段
      • 在开头添加字段
      • 在中间添加字段
    • 3.3 修改/删除字段
      • 修改字段名称
      • 修改字段数据类型
      • 删除字段
    • 3.4 删除数据表
    • 3.5 删除被其它表关联的主表

  • 数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成的。

比如,在电脑中创建一个空文件夹,如果要把“Hello 普罗米修斯”存放到文件夹中,必须把它写在 Word 文档、记事本或其它能存放文本的文档中。这里的空文件夹就相当于数据库,存放文本的文档就相当于数据表。

【 1. MySQL 创建数据表 】

  • 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。
  • 基本语法
    • CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
    • <表名>:指定要创建表的名称,必须符合标识符命名规则。表名称被指定为 db_name.tbl_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。如果使用加引号的识别名,则应对数据库和表名称分别加引号。
      例如,‘mydb’.‘mytbl’ 是合法的,但 ‘mydb.mytbl’ 不合法。
    • <表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。 [表定义选项]的格式为:<列名1> <类型1> [,…] <列名n> <类型n>
    • 默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误。
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
  • 要创建的 表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。
  • 必须指定数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。
  • 数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行 ,如果没有选择数据库,就会抛出 No database selected 的错误。
  • 实例
    创建员工表 tb_emp1,结构如下表所示。
    在这里插入图片描述
    选择创建表的数据库 mytest,创建 tb_emp1 数据表,输入的 SQL 语句和运行结果如下所示。
    CREATE TABLE tb_emp1
    (
    id INT(11),
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
    );
    语句执行后,便创建了一个名称为 tb_emp1 的数据表,使用 SHOW TABLES;语句查看数据表是否创建成功,如下所示。
    在这里插入图片描述

【 2. MySQL 查看表 】

2.1 DESCRIBE/DESC 以表格的形式展示表

  • 基本语法
DESCRIBE <表名>;

#或 简写为

DESC  <表名>
表中的字段含义
Null表示该列是否可以存储 NULL 值。
Key表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
Default表示该列是否有默认值,如果有,值是多少。
Extra表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。
  • 实例
    DESC student;
    在这里插入图片描述

2.2 SHOW CREATE TABLE 以SQL语句的形式展示表

  • SHOW CREATE TABLE 命令会以 SQL 语句的形式来展示表信息。和 DESCRIBE 相比,SHOW CREATE TABLE 展示的内容更加丰富,它可以 查看表的存储引擎和字符编码;另外,你还可以通过 \g或者\G参数来控制展示格式
  • 基本语法
    SHOW CREATE TABLE student;
SHOW CREATE TABLE <表名>;

【 3. 修改数据表 】

  • 在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。
  • 基本语法
    • 修改选项的格式:
      { ADD COLUMN <列名> <类型>
      | CHANGE COLUMN <旧列名> <新列名> <新列类型>
      | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
      | MODIFY COLUMN <列名> <类型>
      | DROP COLUMN <列名>
      | RENAME TO <新表名>
      | CHARACTER SET <字符集名>
      | COLLATE <校对规则名> }
ALTER TABLE <表名> [修改选项]

3.1 修改表名

  • 基本语法:
    • TO 为可选参数,使用与否均不影响结果。
ALTER TABLE <旧表名> RENAME [TO] <新表名>
  • 实例
    将数据表 tb_temp1 改名为 tb_temp2。
    在这里插入图片描述

3.2 修改表字符集

  • 基本语法
    • DEFAULT 为可选参数,使用与否均不影响结果。
ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;
  • 实例
    将数据表 tb_temp2 的字符集修改为 gb2312,校对规则修改为 gb2312_chinese_ci。
    ALTER TABLE tb_temp2 CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;
    在这里插入图片描述

3.3 添加字段

  • MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field),把表的“行”称为记录(Record)。随着业务的变化,可能需要在已有的表中添加新的字段。
  • 一个完整的字段包括字段名、数据类型和约束条件。

在末尾添加字段

  • 这种语法格式默认在表的最后位置(最后一列的后面)添加新字段。基本语法:
    • <表名> 为数据表的名字;
    • <新字段名> 为所要添加的字段的名字;
    • <数据类型> 为所要添加的字段能存储数据的数据类型;
    • [约束条件] 是可选的,用来对添加的字段进行约束。
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
  • 实例
    在 mytest 数据库中新建 student 数据表,再在 student 数据表末尾添加一个 INT 类型的字段 age。
    在这里插入图片描述

在开头添加字段

  • 在开头位置(第一列的前面)添加新字段,需要将 FIRST 关键字 放在语句的末尾。基本语法:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
  • 实例
    在表的第一列添加 INT 类型的字段 stuId。
    ALTER TABLE student ADD stuId INT(4) FIRST;
    在这里插入图片描述

在中间添加字段

  • 在中间位置(指定的字段之后)添加新字段,需要将 AFTER 关键字+已存在的字段名 放在语句的末尾。基本语法:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
  • 实例
    在 student 表中添加名为 stuno,数据类型为 INT 的字段,stuno 字段位于 name 字段的后面。
    ALTER TABLE student ADD stuno INT(11) AFTER name;
    在这里插入图片描述

3.3 修改/删除字段

修改字段名称

  • 基本语法:
    • 旧字段名:指修改前的字段名;
    • 新字段名:指修改后的字段名;
    • 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空。
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,将 id 字段名称改为 id2,同时将数据类型变为 CHAR(30)
    ALTER TABLE tb_temp2
    CHANGE id id2 CHAR(30);
    在这里插入图片描述
  • CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。

修改字段数据类型

  • 由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型
  • 基本语法:
    • 表名:指要修改数据类型的字段所在表的名称;
    • 字段名:指需要修改的字段;
    • 数据类型:指修改后字段的新数据类型。
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,将 name 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)。
    ALTER TABLE tb_temp2
    MODIFY name VARCHAR(30);
    在这里插入图片描述

删除字段

  • 删除字段是将数据表中的某个字段从表中移除,基本语法:
    • 字段名”指需要从表中删除的字段的名称。
ALTER TABLE <表名> DROP <字段名>;
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,删除 deptID 字段。
    ALTER TABLE tb_temp2 DROP deptID;
    在这里插入图片描述

3.4 删除数据表

  • 对于不再需要的数据表,我们可以将其从数据库中删除。在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。
  • 基本语法
    • 表名1, 表名2, 表名3 …表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可
    • IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)。
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
  • 用户必须拥有执行 DROP TABLE 命令的权限,否则数据表不会被删除。
  • 表被删除时,用户在该表上的权限不会自动删除。
  • 实例
    删除数据表 tb_temp2。
    DROP TABLE tb_temp2;
    在这里插入图片描述

3.5 删除被其它表关联的主表

  • 数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。

  • 删除父表有以下两种方法:通常采用第2种

    • 先删除与它关联的子表,再删除父表;但是这样会同时删除两个表中的数据。
    • 将关联表的外键约束取消,再删除父表;适用于需要保留子表的数据,只删除父表的情况。
  • 实例

    1. 创建两个关联表,表 tb_emp4、表 tb_emp5。
CREATE TABLE tb_emp4
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location VARCHAR (50)
);
CREATE TABLE tb_emp5
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp4_emp5 FOREIGN KEY (deptId) REFERENCES tb_emp4(id)
);
  1. 使用 SHOW CREATE TABLE tb_emp5\G; 命令查看表 tb_ emp5 的外键约束。
    可以看出,tb_emp5 表为子表,具有名称为 fk_emp4_emp5 的外键约束;tb_emp4 为父表,其主键 id 被子表 tb_ emp5 所关联。
  2. 直接删除被数据表 tb_emp5 关联的数据表 tb_emp4。
    可以看出,当主表在存在外键约束时,不能被直接删除。
  3. ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp4_emp5;解除子表 tb_emp5 的外键约束,语句成功执行后,会取消表 tb_emp4 和表 tb_emp5 之间的关联关系。
  4. 解除关联关系后,DROP TABLE tb_emp4;语句直接删除父表 tb_emp4

在这里插入图片描述

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

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

相关文章

【java-数据结构19-队列的模拟实现】

上篇文章&#xff0c;小编已经带大家一起认识了队列&#xff0c;并且对队列的方法进行调用测试&#xff0c;下面我们将模拟实现一个队列&#xff0c;话不多说&#xff0c;上正文~ 1.队列的模拟实现 队列的实现方法和链表的实现方式一模一样&#xff0c;这里我们首选双链表&…

MT2075 礼物

思路&#xff1a; x,y为质数&#xff0c;若x2,y3&#xff0c;则xy的最小公倍数6既不能给A也不能给B。 所以假设共有V个数&#xff0c;在1-V中&#xff0c;可以选的个数为&#xff1a;V-⌊V/(x*y)⌋ 个。&#xff08;⌊V/(x*y)⌋为V个数中有多少个xy的公倍数&#xff09; 所以…

股票量化交易上手,一个特别简单却长期可用的交易策略,官方接口

股票实现程序化自动化交易的三个基础&#xff1a;获取数据、执行交易、查询账户。 以后说到策略示例的时候就不介绍接口的基础使用方法了&#xff0c;随便一个策略把过程写出来都会很啰嗦&#xff0c;尽量压缩内容吧&#xff0c;这些内容是面向新手的&#xff0c;大佬们忽略细节…

护眼落地台灯十大知名品牌哪款最好?十大经典落地灯品牌推荐

护眼落地灯十大知名品牌哪款最好&#xff1f;随着快经济时代的到来&#xff0c;人们在学业以及事业上的压力也日益增加&#xff0c;不少朋友反应在日常工作、学习是经常出现眼部疲劳的状况&#xff0c;甚至会时不时出现眼睛干涩、流泪&#xff0c;对学习、工作状态造成了极大的…

【全开源】知识付费问答社区(FastAdmin+ThinkPHP)

此系统是一款基于FastAdmin和ThinkPHP开发的知识付费问答社区系统&#xff0c;提供全部前后台无加密源代码&#xff0c;拥有强大的付费提问、付费阅读、付费查看、付费邀请、全文搜索等功能模块&#xff0c;其整合了强大的标签模块和专区模块&#xff0c;让问题和文章更好的归类…

删除的短信怎么恢复?专业与非专业方法的全面比较

在日常清理手机内存的过程中&#xff0c;我们可能会不小心删除短信。这些短信可能包含重要的数据和联系人信息。面对这种情况&#xff0c;许多人会感到困惑和无助。那么&#xff0c;删除的短信怎么恢复呢&#xff1f;本文将为您全面比较专业与非专业的方法&#xff0c;帮助您找…

【信息学奥赛】两个整型变量的值交换

【信息学奥赛】两个整型变量的值交换 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 编写如下一个函数&#xff0c;用于将两个整型变量的值交换 输入&#xff1a; 两个数 输出&#xff1a; 交换后的两个数 样例输入&#xff1a; 3 2样…

Redis学习篇3:缓存更新策略与数据更新、淘汰策略

一、缓存更新策略 二、主动更新 三、过期策略 3.1 如何知道过期&#xff1f; 3.2 删除策略 四、内存淘汰策略 数据淘汰策略-使用建议 一、缓存更新策略 Redis是基于内存的数据库&#xff0c;它的优点就是在对数据进行操作的时候快&#xff0c;并且通过…

【全开源】驾校管理系统源码(FastAdmin+ThinkPHP)

一款基于FastAdminThinkPHP开发的驾校管理系统&#xff0c;驾校管理系统(DSS)主要面向驾驶学校实现内部信息化管理&#xff0c;让驾校管理者和工作人员更高效、更快捷的完成枯燥无味的工作&#xff0c;让工作更有条理。改变驾校传统的手工或半手工Excel文档管理的工作方式。多驾…

深入探索C++继承机制:从概念到实践的全面指南

目录 继承的概念及定义 继承的概念 继承的定义 定义格式 继承方式和访问限定符 继承基类成员访问方式的变化 默认继承方式 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 继承的方式 菱形虚拟继承 菱形虚拟继承原理 继承…

vue项目关于loading问题

前言 因全局加loading会出现全白屏的遮罩层&#xff0c;影响美观&#xff0c;所以一般考虑局部加loading&#xff0c;比如是表格&#xff0c;表单等就加上loading 解决办法 v-loading“loading” element-loading-background“rgba(255, 255, 255, 0.6)” const loading re…

精酿啤酒:品质与口感在消费者选择中的权重分析

在啤酒市场中&#xff0c;消费者选择的影响因素众多&#xff0c;其中品质与口感是两个核心要素。对于Fendi club啤酒而言&#xff0c;品质与口感的权重分析在消费者选择中显得尤为重要。 品质是消费者选择啤酒的首要因素。随着消费者对啤酒认知的提高&#xff0c;他们对品质的…

论文《Sensor and Sensor Fusion Technology in Autonomous Vehicles: A Review》详细解析

论文《Sensor and Sensor Fusion Technology in Autonomous Vehicles: A Review》详细解析 摘要 该论文对自动驾驶汽车中的传感器和传感器融合技术进行了全面回顾。它评估了各种传感器&#xff08;如相机、LiDAR、雷达&#xff09;的能力和技术性能&#xff0c;并讨论了多传感…

c++11特性(详细)

文章目录 前言一、C11介绍二、列表初始化1.{}初始化2.initializer_list 三、auto与decltype四、STL中变化五、右值引用六.C中关于类的新功能七.可变参数模板八.lambda表达式总结 前言 在本篇文章&#xff0c;我们将会详细介绍一下C11新增的一些特性&#xff0c;其中最重要的是…

有1,2,3,4这四个数字,能组成多少个互不相同且无重复数字的三个数?分别是什么?

有1,2,3,4这四个数字&#xff0c;能组成多少个互不相同且无重复数字的三个数&#xff1f;分别是什么&#xff1f; 提示&#xff1a;123&#xff0c;321就是符合要求&#xff0c;数字既不相同&#xff0c;而且每个数字的个十百位也不重复&#xff1b;而121,212就不行&#xff0c…

Facebook海外三不限企业广告账户-Facebook的ROI是什么?

1. 什么是ROI&#xff1f; ROI是指投资回报率&#xff08;Return on Investment&#xff09;&#xff0c;是衡量投资效益的一种指标。在市场营销领域&#xff0c;ROI是一个非常重要的概念&#xff0c;用于衡量营销活动的效果和价值。它通常用于评估一项投资的效益&#xff0c;即…

获取和设置代理的动态IP的方式

引言 大家好&#xff0c;今天我来给大家分享一下如何通过编程技术来获取和设置代理的动态IP。在网络世界中&#xff0c;代理和动态IP是非常常见的概念&#xff0c;尤其对于需要大规模访问网站或者需要隐藏真实IP地址的应用程序来说&#xff0c;更是必不可少的工具。接下来&…

钛媒体首发 | 百度沈抖回应大模型价格战:希望大家别再天天拉表格比价格

ITValue “有这个时间&#xff0c;不如去卷场景、卷应用。” 作者&#xff5c;张帅 编辑&#xff5c;盖虹达 首发&#xff5c;钛媒体APP ITValue 钛媒体App 5月28日消息&#xff0c;在2024智能经济论坛上&#xff0c;百度集团执行副总裁、百度智能云事业群总裁沈抖介绍了文心系…

视频监控业务平台LntonCVS运用国标协议对接视频汇聚管理综合平台应用方案

为了实现“以信息化推动应急管理能力现代化”的目标&#xff0c;应急管理部提出了加速现代信息技术与应急管理业务深度融合的计划。这一计划是国家加强和改进应急管理工作的关键举措&#xff0c;也是满足日益严峻的应急管理形势和人民群众不断增长的公共安全需求的紧迫需求。 为…

qq音乐sign逆向

qq音乐sign参数逆向 1.概览 参数sign长度40 多次调试发现&#xff0c;前缀zzb不变 2.打日志 跟站发现是vpm&#xff0c;在apply调用打上日志断点&#xff1a; 连蒙带猜知道&#xff0c;最终字符串四部分构成&#xff0c;zzb 24DC2798 HI0TvE4tOMqzN4w88oZCjQ EE0A88FE 1.把…