燕十八 Mysql 笔记 68 课

68 建表过程与字符类型的意义

目的:要学会建表
知识点:列类型
怎么建表?
以在 A4 纸上建表为例,表头写完就算表建好了,后面的是插入数据,建表的过程其实就是一个声明字段的过程

学号 姓名 家乡 入学年份
001 Mark 山西 2014

建表又和列类型有什么关系呢?
列类型大小,过大浪费资源,过小存不下,合理分配空间。存储同样的数据,不同的列类型,所占的空间和效率是不一样的,这就是我们建表前要考虑列类型的原因。

69 Mysql 三大列类型

tee 生成一个 sql 文件
1 . 数值型:

  • 整型:
    • Tinyint 占据空间:一个字节,存储范围:-128 - 127、0 - 255 学习 tinyint 的参数并验证字节与范围的关系,默认是有符号 -128 - 127
    • Smallint
    • Mediuint
    • Int

int 系列声明时的参数,(M) unsigned zerofill 各自代表什么,M 必须和 zerofill 一起出现才有意义,smallint(5) zerofill 用 0 填充,宽度为 5

alter table stu add sal smallint(5) zerofill not null default ‘0’;

  • 小数(浮点型/定点型):

    • 浮点数表示比较复杂
    • Float(M,D) decimal (M,D) M 精度 D 标度
    • 浮点数占多大的空间呢?如果 M <= 24,占 4 个字节,否则占 8 个字节
    • 浮点和定点的区别:定点是把整数部分和小数部分分开存储的,比 float 精确,银行建议 decimal
  • 字符串型:

    • char varchar text blob
    • char(6) 定长字符串,查找比较快,会浪费空间,用空格补齐,如果右边本来就有空格,取出时是删除空格,空格失效,范围 0-255 之间
    • varchar(6) 变长类型 2 张三,生活中坐车的例子,对于 varchar(N) ,不用空格补齐,但列内容前,有 1-2 个字节来标志该列的内容长度。 0-65535 之间
    • Text:文本类型,可以存比较大的文本段,一般用来存储文章内容,新闻内容等,搜索速度比较慢,建议用 char varchar 来代替,声明 text 列时,不用加默认值,加了也没用。
    • Blob 是二进制类型,用来存储图像、音频等二进制信息,意义在于 2 进制,0-255 都有可能出现,Blob 在于防止因为字符集的问题,导致信息丢失,比如:一张图片有 0xFF 字节,这个在 asci 字符集认为非法,在入库的时候被过滤了。

燕十八 Mysql 秘籍

select concat(c,’!’),concat(v,’!’) from test;

注意:char(M) varchar(M) 限制的是字符,不是字节,即 char(2) charset utf8 ,能存 2 个 utf8 字符,比如”中国“,多了不能

create table test2 (article text);

视图:View

视图的学习:
查询每个栏目下商品的平均价格,并取平均前 3 高的栏目