第六章 修改表

2023-10-29

第六章 修改表

1.修改表的数据类型

  • 修改表的数据类型
    alter table 表名 modify 列名 数据类型
  • 实例
mysql> alter table tb1C modify name varchar(100);

这样就可以修改表中列的数据类型了,下边我们看一下是否已经修改。

desc tb1C;

在这里插入图片描述

2.添加列

  • 将新建的列添加到最后的位置
    alter table 表名 add 列名 数据类型;
  • 实例
mysql> alter table tb1C add birth datetime;

现在我们可以来看一下是否将birth加入到tb1C中。
desc tb1C;
在这里插入图片描述
现在我们来尝试着添加一次员工表的信息

mysql> insert into tb1C values('N111','松田',38,'1980-11-10');

添加完毕之后我们来看一下数据是否被我们插入了tb1C中

mysql> select * from tb1C;

在这里插入图片描述
显然我们添加成功,由于我们没有添加时间,所时间默认为 00:00:00。

3.修改列的位置

  • 把列添加到最前边的实例
mysql> alter table tb1D add  birth  datetime first;

在这里插入图片描述

  • **把列添加到任何位置
mysql> alter table tb1E add birth datetime after empid;

现在我们来查看一下

mysql> select * from tb1E;

在这里插入图片描述

  • 修改列的顺序
mysql> alter table tb1C modify birth datetime after name;

在这里插入图片描述
现在我们来查看一下

mysql> select * from tb1C;

在这里插入图片描述
我们成功的将birth加入到了name之后。

4.修改列名和数据类型

  • 修改列的数据类型或者位置的同时修改列名
    alter table 表名 change 修改前的列名 修改后的列名 修改后的数据类型;
  • 实例
mysql> alter table tb1C change birth birthday date;

在这里插入图片描述
现在我们来查看一下

mysql> desc tb1C;

在这里插入图片描述

5.删除列

  • 删除列的语法
    Alter table 表名 drop 列名;
  • 实例
mysql> alter table tb1C drop birthday;

在这里插入图片描述
现在我们来查看一下

mysql> desc tb1C;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| empid | varchar(10)  | YES  |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
| age   | int(10)      | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

在这里插入图片描述
这里的确是没有了birthday,说明我们已经成功删除列。

6.设置主键

  • 主键具有的两个特征
    1.没有重复的值
    2.不允许输入空值
  • 创建表的时候设置主键
    create table 表名 (列名 数据类型 primary key …)
  • 实例
mysql> create table t_pk(a int primary key ,b varchar(10));

在这里插入图片描述
现在我们来查看一下

mysql> desc t_pk;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a     | int(11)     | NO   | PRI | NULL    |       |
| b     | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

在这里插入图片描述
这样我们就在t_pk中设置了a 列为主键的一个列。

7.设置唯一键

  • 唯一键具有的两个特征
    1.没有重复的值
    2.允许有空值
  • *给列设置唯一键的语句
mysql> create table t_uniq (a int unique ,b varchar(10));
Query OK, 0 rows affected (0.26 sec) // 这里是说创建成功。

现在我们来查看一下

mysql> desc t_uniq;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a     | int(11)     | YES  | UNI | NULL    |       |
| b     | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

在这里插入图片描述
这里我们就设置成功了。

8.使列具有自动连续编号功能

  • 具有自动连续编号功能的列的注意事项
    1.数据类型必须为整数类型 (int):可以是 Int、TinyInt、SmallInt、BigInt数据类型。
    2.必须设置Primary ket 或者Unique key 来保证列具有唯一性 。
  • 实例
mysql> create table t_series (a int auto_increment primary key,b varchar(10));
Query OK, 0 rows affected (0.22 sec)

在这里插入图片描述
执行下面命令我们来看一下

mysql> desc t_series;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| a     | int(11)     | NO   | PRI | NULL    | auto_increment |
| b     | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

在这里插入图片描述
这样我们就创建好了一个具有自动连续的表格。

  • 使用自动练习编号功能插入数据

mysql> insert into t_series (b) values('子');
Query OK, 1 row affected (0.04 sec)

mysql> insert into t_series (b) values('丑');
Query OK, 1 row affected (0.04 sec)

mysql> insert into t_series (b) values('寅');
Query OK, 1 row affected (0.03 sec)

执行下面语句,让我们来看一下

mysql> select * from t_series;
+---+------+
| a | b    |
+---+------+
| 1 ||
| 2 ||
| 3 ||
+---+------+
3 rows in set (0.00 sec)

在这里插入图片描述
我们已经成功插入数据了。

  • 设置自动连续编号的初始值
    alter table 表名 auto_increment =1;
    引入设置自动连续编号的初始值是因为在你删除表格之后,你再次使用auto_increment可能不会是从1开始,所以,你需要将auto_increment的初始值设置为1

9.设置默认值

  • 设置默认值的语法
    create table 表名 (列名 数据类型 default 默认值…);
  • 修改列结构的定义(即在已存在的表的设置默认值)
mysql> alter table tb1G modify name varchar(10) default '为输入姓名';
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

现在我们来插入一个数据试试

mysql> insert into tb1G (empid,age) values('N999',38);
Query OK, 1 row affected (0.03 sec)

mysql> select * from tb1G;
+-------+------------+------+
| empid | name       | age  |
+-------+------------+------+
| A101  | 佐藤       |   40 |
| A102  | 高桥       |   28 |
| A103  | 中川       |   20 |
| A104  | 渡边       |   23 |
| A105  | 西泽       |   35 |
| N999  | 为输入姓名 |   38 |
+-------+------------+------+
6 rows in set (0.01 sec)

我们可以看到编号为N999的人的名字显示“未输入姓名”,现在我们将这条数据给删除了。

mysql> delete from tb1G where empid= 'N999';
Query OK, 1 row affected (0.09 sec)

关于删除语句where条件语句后边会说的,现在你只需要执行就行。
现在我们来看一下有没把这个数据给删除了

mysql> select * from tb1G;
+-------+------+------+
| empid | name | age  |
+-------+------+------+
| A101  | 佐藤 |   40 |
| A102  | 高桥 |   28 |
| A103  | 中川 |   20 |
| A104  | 渡边 |   23 |
| A105  | 西泽 |   35 |
+-------+------+------+
5 rows in set (0.00 sec)

我们已经成功删除了那条数据。

10.关于索引的操作

  • 关于索引的介绍
    1.索引是在数据庞大时,即查找操作费时间时,引入的一个数据结构。
    2.如果我们事先创建表是,给表创建索引,我们就可以根据索引来找到相应的表了。
    3.注意:如果数据是少的,那么用索引查找可能比正常查找要慢。
  • 创建索引
    create index 索引名 on 表名( 列名 …);
  • 实例
mysql> create index my_ind on tb1G(empid);
Query OK, 0 rows affected (0.21 sec)
Records: 0  Duplicates: 0  Warnings: 0 
  • 显示索引
    show index from 表名;
mysql> show index from tb1G;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tb1g  |          1 | my_ind   |            1 | empid       | A         |           5 |     NULL | NULL   | YES  | BTREE      |         |               |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

//如果你的看起来很乱,你可以选择下面语句

mysql> show index from tb1G \G;
*************************** 1. row ***************************
       Table: tb1g
  Non_unique: 1
    Key_name: my_ind
Seq_in_index: 1
 Column_name: empid
   Collation: A
 Cardinality: 5
    Sub_part: NULL
      Packed: NULL
        Null: YES
  Index_type: BTREE
     Comment:
Index_comment:
1 row in set (0.00 sec)
  • 删除索引
    drop index 索引名 on 表名;

  • 实例

mysql> drop index my_ind on tb1G;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0

→关于表的操作我们就写到这里,只是一些我自己学习过程中的记录,希望帮助初学者也能学习到一点关于数据库的知识,下一章:复制、删除表和记录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第六章 修改表 的相关文章

  • MySQL SELECT 输出同一行中每个 id 的下一个日期

    我查询的表结构如下 ID Date Before value After value 1 2014 04 25 Win Loss 1 2014 04 30 Loss Win 1 2014 08 18 Win Loss 1 2014 08 2
  • 使用唯一索引删除重复项

    我在两个表字段 A B C D 之间插入 相信我已经在 A B C D 上创建了唯一索引以防止重复 然而我以某种方式简单地对这些做了一个正常的索引 因此插入了重复项 这是2000万条记录的表 如果我将现有索引从普通索引更改为唯一索引 或者只
  • MySQL 服务器未启动

    当我做 mysql u root p并输入my password这就是我得到的 错误 2002 HY000 无法通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 2 所以我输入 systemc
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 如何使用 vitess 仅对特定表进行分片

    我创建了一个包含三个表的未分片键空间 现在我想对前两个表的键空间进行分片 但不想对第三个表进行分片 如何才能做到这一点 Vitess 文档不包含任何与此相关的信息或示例 请帮忙 Thanks vitess 中的垂直分片与水平分片类似 您应该

随机推荐

  • 必须了解的8种神经网络架构

    机器学习已经在各个行业得到了大规模的广泛应用 并为提升业务流程的效率 提高生产率做出了极大的贡献 目前机器学习主要在以下方面应用 模式识别 实际场景中的目标 包括人脸 表情 语音识别等等 异常检测 例如信用卡交易的异常检测 传感器异常数据模
  • 两种快速排序的实现(C语言)

    两种搜索方式不一样 第 0种单向搜索 第1 种双向搜 代码如下 include
  • VS2019+QT5.12.10+PCL1.11.1+VTK8.2.0(cmake3.20.4)环境搭配

    一 编译VTK8 2 0 网上教程一大堆 自己看着瞎编吧 提示 关于QT的部分需要全部勾上 不然在vs中qvtkWidget没法使用 关于QT的部分需要全部勾上 不然在vs中qvtkWidget没法使用 关于QT的部分需要全部勾上 不然在v
  • phpstrom插件安装

    sublime 中的 代码小地图 codeglance https plugins jetbrains com plugin 7275 codeglance Paste Image png 像sublime那样配置主题 只需要改一改配置文件
  • build gradle dependencies闭包的详解

    dependencies闭包的整体功能是指定当前项目所有依赖关系 本地依赖 库依赖及远程依赖 本地依赖 可以对本地Jar包或者目录添加依赖关系 库依赖 可以对项目中的库模块添加依赖关系 远程依赖 可以对jcenter库上的开源项目添加依赖
  • 迪士尼自研算法突破百万高清像素用AI换脸来拍电影

    AI换脸又一次刷爆了朋友圈 最近云毕业正当时 各家科技公司顺势推出了自己的AI换脸技术 结果又被同学们玩坏了 换脸这件事绝不能少了业界大佬们 不得不说 好看是不分性别的 彦宏兄气质满分 仔细来看 AI换脸技术近些年还是成熟不少 整体的面部贴
  • 为应对输出风险文本的情况,提出一种针对LLMs简单有效的思维链解毒方法

    作者 汤泽成 周柯言单位 苏州大学人工智能研究院 论文标题 2308 08295 Detoxify Language Model Step by Step arxiv org 论文代码 https github com codinnlg d
  • R资源大全

    0 前言 虽然很早就知道R被微软收购 也很早知道R在统计分析处理方面很强大 开始一直没有行动过 直到 直到12月初在微软技术大会 看到我软的工程师演示R的使用 我就震惊了 然后最近在网上到处了解和爬一些R的资料 看着看着就入迷了 这就是个大
  • ORL数据集百度网盘

    最近做人脸识别找了好久才在一个代码的角落里找到ORL的数据集 贫穷使我不愿意花钱下载 上传到百度网盘了 分享给和我一样贫穷的朋友 祝大家早日有钱 链接 https pan baidu com s 178K357kYHhaJnYGyGI76R
  • 1、两数之和

    题目 法1 暴力解法 用两个for循环 缺点 时间复杂度高 法1 推荐 nums list map int input split target int input for i in range len nums 1 for j in ra
  • VBA宏之自动抓取关键文字并填充到指定单元格

    需求如下 最后一列字段名称为 IPTV 判断最后的数据是在哪一行 某两列中筛选含有 IPTV 或 TV 最后一列对应就为 IPTV 否则为空 最后生成的结果另存为指定日期名称的Excel文件 Sub 判断平台是否为IPTV 定义变量 Dim
  • VirtualBox压缩VDI文件 VDI文件瘦身方法

    VirtualBox压缩VDI文件 VDI文件瘦身方法 一 WINDOWS 下压缩 VDI 文件 1 在虚拟机中 右键计算机 gt 管理 gt 磁盘管理 2 右键所有磁盘 压缩卷 把所有磁盘压缩到最小 3 在未分配空间上右键新建卷 4 低级
  • c# Lambda

    分配给委托类型 Func
  • 三种公钥密码体系(传统公开密钥体系 / 基于身份的公开密钥体系 / 基于无证书的公开密钥体系 )

    公开密钥体系 分类 基于证书的公开密钥体系 基于身份的公开密钥体系 基于无证书的公开密钥体系 基于证书的公开密钥体系 第一种方案是采用证书机制实现用户的身份和用户的钥匙之间的安全对应 证书机制一般都采用公钥基础设施 Public Key I
  • 开心档之Bootstrap4 自定义表单

    Bootstrap4 自定义表单 Bootstrap4 可以自定义一些表单的样式来替换浏览器默认的样式 自定义复选框 如果要自定义一个复选框 可以设置 div 为父元素 类为 custom control 和 custom checkbox
  • 如何让FasterTransformer支持动态batch和动态sequence length

    FasterTransformer 算子 nvidia在开源的FasterTransformer的代码中 提供tensorrt和tensorflow的自定义算子编译和py调用示例 详见FasterTransformer py 但是如果使用t
  • openwrt编译环境搭建

    openwrt编译环境搭建 1 虚拟机安装 请参考网络上的资料进行安装 2 ubuntu安装 请参考网络上的资料进行安装 3 ubuntu下安装相关的编译环境 若是编译环境没有准备好 在后来的操作中会出现一些问题 sudoapt get i
  • 什么是4K HDR?HDR10+、HDR10 PRO、杜比视界HDR区别

    转自 https www sohu com a 255875615 200013 这一篇继续围绕4K给大家讲一下4K中的4K HDR HDR10 HDR10 都是什么意思 关于更多4K HDR相关资料和视频电影请到 Hao4K https
  • Angular进阶技术之模块化及懒加载

    Angular组件模块化以及路由懒加载 前提摘要 模块化的场景 NgModule 引发的思考 如何去定义模块和模块化的作用 Angular模块化以及路由懒加载 延伸 子组件模块 二级路由懒加载模块 模块化引申 一些命令和tips 本地发布测
  • 第六章 修改表

    文章目录 第六章 修改表 1 修改表的数据类型 2 添加列 3 修改列的位置 4 修改列名和数据类型 5 删除列 6 设置主键 7 设置唯一键 8 使列具有自动连续编号功能 9 设置默认值 10 关于索引的操作 第六章 修改表 1 修改表的