• cheriston
    置顶
    2021-04-21
    老师 按照你的代码插入数据 报错啊: [Err] 1366 - Incorrect string value: '\xE4\xB9\xA6' for column 'goodsname' at row 1 好像是字符集问题,为什么,怎么改。

    作者回复: 可能是表的字符集不对,我用的是默认的:CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci,你可以试一下

    共 4 条评论
    2
  • 朱晓峰
    置顶
    2021-03-11
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了数据存储的完整过程,包括创建数据库、数据表、确认字段和插入数据。下面是思考题的答案:   设计销售表如下:   CREATE TABLE demo.sales (          goodsname text,          salesprice decimal(10,2),          quantity decimal(10,3),          salesvalue decimal(10,2) );

    作者回复: 供大家参考

    共 4 条评论
    13
  • 陈启年
    2021-03-12
    朱老师,Text类型这段文字: “TEXT 类型也有 4 种,它们的区别就是最大长度不同。TINYTEXT:占用 255 字符。TEXT: 占用 65535 字符...” 此处的“字符”改为“字节”,是否更加严谨

    作者回复: 这里用字符,侧重点在数据类型的使用上,表示这个数据类型的最多可以放多少个字符。这里假设是ASCII码,因此一个字符就是一个字节。字节侧重存储,意思是这个数据类型的数据最大需要占用多少存储空间。比如,tinytext类型最多可以存放255个字符,但是最多占用的存储空间是256个字节,因为有一个字节用来存储字符串长度。

    
    11
  • 右耳朵猫咪
    2021-03-11
    老师好,有一些公司用分而不是用元来表示金额,存储类型是int。这种方式和decimal哪个比较好呢?

    作者回复: 还是一个精度问题。如果用分来表示金额,存储类型是INT,那么,如果场景中只有加减运算,就不会有问题。但是如果涉及到乘除运算,运算过程中出现分以下的金额,就会出现精度损失的问题。所以,还是要根据实际的业务场景,来决定。

    共 9 条评论
    11
  • lesserror
    2021-03-11
    今天的MySQL查漏补缺来了。虽然MySQL的数据类型就那么几种,但是在实际的项目中还是有很多人在定义表字段的时候选择了不合适的数据类型,导致后期维护成本增加。 例如文中说的,在对精度有要求的字段中没有使用DECIMAL数据类型,反而选用了FLOAT、DOUBLE数据类型。我经手过的很多老项目也喜欢用INT类型来存时间戳,这种时间存取方式很麻烦而且也不直观。我个人也是持和老师相同的观点,采用DATETIME类型来存时间字段。因为虽然 DATETIME 类型占用的存储空间最多,但是它表达的时间最为完整,取值范围也最大。 另外,关于小数点精度丢失的那部分内容,老师解释的很准确。

    作者回复: 技术服务于业务,根据业务需要决定类型定义

    
    9
  • 海明
    2021-03-11
    朱老师,我看上面有个例子是这样写的,但是sum可以这样使用吗。sum函数在where这里。 SELECT * FROM demo.goodsmaster WHERE SUM(price)=1.1

    作者回复: 这样写是不行的,SUM是聚合函数,一般要跟GROUP BY 关键字一起使用,比如,你有一个商品信息表demo.goodsmaster,其中有3个字段,分别是barcode,goodsname,price,现在商品名称可能重复,想查一下价格合计是1.1的商品,可以这样写: SELECT goodsname,SUM(price) FROM demo.goodsmaster GROUP BY goodsname HAVIING SUM(price)=1.1;

    共 3 条评论
    5
  • SharpBB
    2022-02-08
    1.整数类型 TINYINT多用于布尔类型 枚举类型 占1个字节 一般来讲INT用的最多 占4个字节 除非该数字有可能超过21亿 一般不用BIGINT 不要为了节省一点存储空间 而忽视数据溢出带来的风险 可靠性第一! 2.浮点数类型和定点数类型 浮点数 float 单精度浮点数 double 双精度浮点数 mysql默认使用 缺陷:浮点数不精准 二进制无法精确表达 所以只能四舍五入 定点数 decimal可以精确表达 把十进制的整数与小数拆分 用十六进制存储 decimal(5,2) 前面的5是长度 后面的2是保留几位小数 涉及小数 可以无脑用decimal ps:涉及金额的 也可以以分为单位 用整型来存储 3.文本类型 一般都可无脑用text 65535字符 如果过长 则使用longtext text类型无需提前定义长度 且按实际长度存储 varchar(M)需要定义长度 但也是按实际长度存储的 注意 这里的M指的是字符 所以不管是英文还是中文 都可容纳M个 但text类型不能作为主键 这时候可以选择varchar或char 4.日期与时间类型 尽量使用datetime类型 用的最多 最完整 5.总结 整数用int 小数用decimal 字符串用text/varchar 时间用datetime 导图复制的 可能排版不太好
    展开

    作者回复: 是的

    
    3
  • NARUTO
    2021-09-01
    对于跨国的大型系统,时间字段可能会有时区的影响,不同的区域的用户使用时,都希望看到本地的时间,统计报表数据也是类似,这种场景下的时间业务字段,老师建议是用什么类型比较好?理由是什么呢?

    作者回复: 建议使用DATETIME类型,理由是MySQL不会因为不同时区而返回不同的时间值,容易控制。

    
    3
  • 一步
    2021-03-11
    为什么浮点数无符号取值范围的右边界也是个范围呢,

    作者回复: 这是因为,浮点数的取值范围可以有2种方式来确定,一种方式是小数点放在在最前面,这样得出最小的无符号数,另外一种是把小数点放在最后,这样得出最大的无符号数

    共 2 条评论
    3
  • 青鸟飞鱼
    2021-03-11
    老师,blob的运用场景是什么呢?

    作者回复: blob是二进制字符串,比如可以把图片转换成二进制数据存入类型是blob的字段中。好处是可以像一个普通字段那样来处理图片,缺点是占用的存储资源大

    
    3