3. MySQL 数据表的基本操作

news2024/11/16 21:56:01

文章目录

  • 【 1. MySQL 创建数据表 】
  • 【 2. MySQL 查看表 】
    • 2.1 DESCRIBE/DESC 以表格的形式展示表
    • 2.2 SHOW CREATE TABLE 以SQL语句的形式展示表
  • 【 3. MySQL 修改数据表 】
    • 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 tb_emp1;
    在这里插入图片描述

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

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

【 3. MySQL 修改数据表 】

  • 在 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 业务的变化,可能需要在已有的表中添加新的字段,一个完整的字段包括字段名、数据类型和约束条件。

在末尾添加字段

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

在开头添加字段

  • 在开头位置(第一列的前面)添加新字段,需要将 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 <旧字段名> <新字段名> <新数据类型>
  • CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,将 id 字段名称改为 id2,同时将数据类型变为 CHAR(30)。
    ALTER TABLE tb_temp2 CHANGE id id2 CHAR(30);
    在这里插入图片描述

修改字段数据类型

  • 由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型
    基本语法:
    • 表名:指要修改数据类型的字段所在表的名称;
    • 字段名:指需要修改的字段;
    • 数据类型:指修改后字段的新数据类型。
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
      CREATE TABLE tb_emp4
      (
      id INT(11) PRIMARY KEY,
      name VARCHAR(22),
      location VARCHAR (50)
      );
      表 tb_emp5
      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)
      );

    2. 使用 SHOW CREATE TABLE tb_emp5\G; 命令查看表 tb_ emp5 的外键约束。
      可以看出,tb_emp5 表为子表,具有名称为 fk_emp4_emp5 的外键约束;tb_emp4 为父表,其主键 id 被子表 tb_ emp5 所关联。

    3. 直接删除被数据表 tb_emp5 关联的数据表 tb_emp4。
      可以看出,当主表在存在外键约束时,不能被直接删除。

    4. ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp4_emp5;解除子表 tb_emp5 的外键约束,语句成功执行后,会取消表 tb_emp4 和表 tb_emp5 之间的关联关系。

    5. 解除关联关系后,DROP TABLE tb_emp4;语句直接删除父表 tb_emp4

在这里插入图片描述

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

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

相关文章

【多线程开发 3】从源码到实践CompletableFuture

【多线程开发 3】从源码到实践CompletableFuture 2024年5月22日 本文将从以下几个点讲解CompletableFuture&#xff1a; 前身 是什么&#xff1f; 可以用来做什么&#xff1f; 源码原理 实战 其他包装类 前身 CompletableFuture的依赖如图所示&#xff1a; 所以我打…

二叉树的顺序结构及实现(堆的实现)

一.二叉树的顺序结构&#xff1a; 普通的二叉树是不适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆 ( 一种二叉树 ) 使用顺序结构的数组来存储&#xff0c;需要注意的是这里的堆和操作系统 虚拟进程地址…

C++入门3——类与对象2(类的6个默认成员函数)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数的概念 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 析构函数的特性 4.拷贝构造函数 4.1 拷贝构造函数的概念 4.2 拷贝构造函数的特性 5.赋值运算符重载函数 5.1运算符重载函数 5.2 赋值运算符重…

探索文档解析技术,推动大模型训练与应用

探索文档解析技术&#xff0c;推动大模型训练与应用 0. 前言1. CCIG 20241.1 会议简介1.2 大模型技术及其前沿应用论坛1.3 走进合合信息 2. 大模型时代2.1 大模型的发展与应用2.2 大模型面临的挑战 3. 文档解析技术3.1 文档解析技术难点3.2 TextIn 文档解析算法流程 4. 大模型时…

UE5 Http Server

前言 最近要用UE 作为一个服务器去接收来自外部的请求&#xff0c;从而在UE中处理一些内容&#xff0c;但是之前只做过请求&#xff0c;哪整过这玩意&#xff0c;短期内还得出结果&#xff0c;那怎么搞嘞&#xff0c;本着省事的原则就找找呗&#xff0c;有没有现成的&#xff0…

【基础算法总结】位运算

位运算 1.基础位运算2.常见用法总结3.面试题 01.01. 判定字符是否唯一4.丢失的数字5.两整数之和6.只出现一次的数字 II7.面试题 17.19. 消失的两个数字 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励…

CCIG 2024:合合信息文档解析技术突破与应用前景

目录 背景当前大模型训练和应用面临的问题训练Token耗尽训练语料质量要求高LLM文档问答应用中文档解析不精准 合合信息的文档解析技术1. 具备多文档元素识别能力2. 具备版面分析能力3. 高性能的文档解析4. 高精准、高效率的文档解析文档多板式部分示例 文档解析典型技术难点元素…

Go Modules 使用

文章参考https://blog.csdn.net/wohu1104/article/details/110505489 不使用Go Modules&#xff0c;所有的依赖包都是存放在 GOPATH /pkg下&#xff0c;没有版本控制。如果 package 没有做到完全的向前兼容&#xff0c;会导致多个项目无法运行(包版本需求不同)。 于是推出了g…

JVM学习-类加载过程(一)

概述 在Java中数据类型分为基本数据类型和引用数据类型&#xff0c;基本数据类型由虚拟机预先定义&#xff0c;引用数据类型则需要进行类的加载按Java虚拟机规范&#xff0c;从class文件加载到内存中的类&#xff0c;到类卸载出内存为止&#xff0c;它的整个生命周期包含以下7…

Java 异常处理中try-catch块、finally子句以及自定义异常的使用

Java 异常处理是 Java 语言中非常重要的一部分&#xff0c;用来处理程序运行过程中可能发生的各种异常情况&#xff0c;确保程序的稳定性和可靠性。 一、Java 异常处理概述 异常是程序运行过程中出现的非正常情况。Java 使用异常类&#xff08;Exception 类及其子类&#xff…

建WordPress主题官网模板

蓝色的中文WordPress企业模板 https://www.zhanyes.com/qiye/6305.html 暗红色WordPress律师事务所网站模板 https://www.zhanyes.com/qiye/23.html 红色大banner图WordPress外贸网站模板 https://www.zhanyes.com/waimao/27.html

【C语言】探索文件读写函数的全貌

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 &#x1f525;引言 本章将介绍文件读取函数的相关知识和展示使用场景&am…

AI自动化办公:批量将Excel表格英文内容翻译为中文

有一个50列的表格&#xff0c;里面都是英文&#xff0c;要翻译成中文&#xff1a; 在ChatGPT中输入提示词&#xff1a; 你是一个开发AI大模型应用的Python编程专家&#xff0c;要完成以下任务的Python脚本&#xff1a; 打开Excel文件&#xff1a;"F:\AI自媒体内容\AI行业…

harbor -- docker私有仓库安装配置

1 安装docker-compose $ curl -L "https://get.daocloud.io/docker/compose/releases/download/v1.25.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ chmod x /usr/local/bin/docker-compose 2 安装配置harbor $ wget https://g…

JS-51-Node.js10-yarn

一、yarn的简介 Yarn 是一款 JavaScript 的包管理工具&#xff08;npm的代替方案&#xff09;&#xff0c;是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。 正如 Yarn 官网的介绍&#xff0c;Yarn 的具有速度快 、安全 、可靠 的优点&#x…

嘉立创使用gif

新建原理图 边框设置2 新建pcb图 放置焊盘 排列焊盘 新建符号 封号向导 新建封装 封装向导 符号与封装联结 原件查找 drc设计规则&#xff08;线之间的距离等 布线冲突 顶底层切换 T ,B 顶底连线&#xff0c;自动创造过孔 铺铜 泪滴 网格大小 吸附 元件库

民国漫画杂志《时代漫画》第33期.PDF

时代漫画33.PDF: https://url03.ctfile.com/f/1779803-1248635648-d8235b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

任何图≌自己这一几何最起码常识推翻直线公理让R外标准实数一下子浮出水面

黄小宁 h定理&#xff1a;点集AB≌B的必要条件是A≌B。 证&#xff1a;若AB则A必可恒等变换地变为BA≌A&#xff0c;而恒等变换是保距变换。证毕。 如图所示R轴即x轴各元点x沿x轴正向不保距平移变为点y2x就使x轴沿本身拉伸&#xff08;放大&#xff09;变换为y2x轴不≌x轴&…

PDF盖骑缝章

在PDF文件上加盖骑缝章&#xff0c;您可以采取以下几种方法之一&#xff1a; 使用Adobe Acrobat&#xff1a; 打开Adobe Acrobat软件&#xff0c;加载PDF文件。在工具栏选择“工具”选项&#xff0c;找到“骑缝章”或“印章”工具。选择或上传您的骑缝章图片&#xff0c;将其放…

区块链技术:金融行业的信任基石

一、引言 在数字化转型的浪潮中,区块链技术以其独特的优势,正逐渐成为金融行业的信任基石。本文将深入探讨区块链技术在金融行业的应用,通过具体案例的细化和完善,分析其特点和影响。 二、区块链技术的核心特点 1. 去中心化:区块链技术通过分布式账本,实现去中心化的数…