MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
17746 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

03 | 表:怎么创建和修改数据表?

你好,我是朱晓峰。今天,我们来聊一聊怎么创建和修改数据表。
创建和修改数据表,是数据存储过程中的重要一环。我们不仅需要把表创建出来,还需要正确地设置限定条件,这样才能确保数据的一致性和完整性。同时,表中的数据会随着业务需求的变化而变化,添加和修改相应的字段也是常见的操作。这节课,我们就来学习下具体的方法。
在我们的超市项目里,客户经常需要进货,这就需要在 MySQL 数据库里面创建一个表,来管理进货相关的数据。我们先看看这个表里有什么内容。
假设这个表叫做进货单头表(importhead),如下图所示:
这里的 1、2、3 表示门店的 3 种进货方式,分别是配送中心配送、门店采买和供货商直供。
其中,“1(配送中心配送)”是标准进货方式。因为超市是连锁经营,为了确保商品质量和品类一致,超过 9 成的门店进货,是通过配送中心进行配送的。因此,我们希望这个字段的值能够默认是 1,这样一来,除非有特别的指定,否则,门店进货单的进货方式,就自动设置成“1”了。
现在,客户需要一个类似的表来存储进货数据,而且进货方式还有 3 个可能的取值范围,需要设置默认值,那么,应该怎么创建这个表呢?另外,创建好表以后,又该怎么进行修改呢?

如何创建数据表?

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了在MySQL数据库中创建和修改数据表的方法,强调了约束的重要性以确保数据的唯一性、合法性和完整性。通过实际案例和MySQL语法,详细介绍了创建和修改数据表的方法,包括创建表的流程、注意事项,以及各种约束的定义和使用方法。文章还演示了如何通过复制表结构和使用SQL语句来修改表的结构,包括修改字段名称、类型,以及向表中添加字段并指定位置。总结了常用的创建表和修改表的SQL语句,并提及了MySQL支持的其他数据表操作。整体而言,本文适合读者快速了解和掌握相关技术知识,为数据库操作提供了实用指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(33)

  • 最新
  • 精选
  • 朱晓峰
    置顶
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了MySQL中的字段类型,包括整数类型、浮点数和定点数类型、文本类型、日期和时间类型等。下面是思考题的答案: CREATE TABLE demo.membermaster ( memberid INT PRIMARY KEY, membername TEXT, memberphone TEXT, memberpoints INT );
    2021-03-29
    5
    9
  • yaomon
    我们可以定义字段“barcode”满足唯一性约束。这样一来,条码就不能重复,但是可以为空,而且只能有一条记录条码为空。 ------------- null和任何值不相等,包括null,所以不是可以有多条记录都是null值吗,是8.0规则变了?

    作者回复: 十分感谢你的指正,这个地方是我疏忽了。唯一性约束,如果允许为空,可以有多个空值。我已经申请后台帮我修改了。

    2021-03-14
    17
  • lesserror
    朱老师,周末好。 表 demo.importhead中插入数据的时候,SQL语句是不是少了两条插入记录?文稿中你查询出来的是三条记录。 复制表结构这个语句:CREATE demo.importheadhist LIKE demo.importhead; 我本地操作会报错,少了一个「TABLE」关键字。应该是:CREATE TABLE demo.importheadhist LIKE demo.importhead。 另外,上节课的思考题答案老师按照惯例,麻烦评论区给出一下。方便学习的同学做一个参考呗。

    作者回复: 感谢你的提醒,CREATE语句确实少了TABLE关键字,我已经改过来了。我会尽快吧思考题的答案发布一下,方便大家学习。

    2021-03-13
    9
  • Jun
    想请教一下老师,为什么 importquantity 用decimal 而不是int,难道进货数量会有小数吗?

    作者回复: 有的,超市有生鲜,会有小数的

    2021-03-24
    6
  • 右耳朵猫咪
    老师好,创建表字段的时候是不是应该把多个单词用下划线分开比较好?比如,listnumber改成list_number。

    作者回复: 命名规则应该统一,便于理解和书写。比如listnumber,拆分成list_number,我认为意义不大,因为意思比较单一。

    2021-03-15
    3
    4
  • 张成虎
    老师好,思考题并没有修改字段名称,为什么用的是change,不用modify?

    作者回复: change 可以修改字段名称,modify 只能修改字段属性。这里的思考题没有要求修改字段名称,所以用modify也是可以的。我这里用到change,主要是因为change的功能更强大一些,所以凡是涉及到修改字段的地方,都用change,比较容易书写和维护。

    2021-06-23
    2
  • 星空下
    这节好实用,都是开发中在用的操作

    作者回复: 在实践中学习,记得牢

    2021-03-13
    2
  • SharpBB
    笔记来了 1.如何创建数据表 建表语法 default 可以设置默认值 该字段如果不填即为默认值 2.约束 主键约束 一个表只能有一个 且字段值不能重复 不能为空 约束最强 ps:主键确实只有一个 但是可以有多个字段 被称之为联合主键 非空约束 必须有值 否则报错 唯一性约束 字段值不能重复 可以为空 可以有多个字段有唯一性约束 自增约束 只有整型字段才能有自增约束 新增字段的值为最大值+1 3.修改表 复制表 create 库名.新表名 like 库名.被复制的表名; 增加表字段 alter table <库名.表名> add <字段> <类型> 如 alter table test.user add id int; 在开头添加某字段 alter table test.user add id int first; 在某个字段的后面添加 如 alter table test.user add id int after name; 修改表字段 alter table <库名.表名> change <旧字段> <新字段> <类型> 如 alter table test,user change id uid bigint; 只改变字段类型 如 alter table test,user modify id int;

    作者回复: 好的

    2022-02-08
    1
  • momoko
    ALTER demo.goodsmaster modify salesprice DECIMAL(10,3) UNIQUE NOT NULL;

    作者回复: 请参考思考题答案

    2021-08-09
    1
  • 小鱼干
    int类型,不写字段大小和写字段大小实际存储是一样吗

    作者回复: int 后面指定的那个数字表示显示的位数,与实际存储空间无关,比如int(4),表示显示4位,如果不足4位,在左边用空格补齐。

    2021-03-15
    2
    1
收起评论
显示
设置
留言
33
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部