mysql 学号字段属性_MySQL之字段数据类型和列属性

数据类型:

对数据进行统一的分类,从系统的角度出发,为了能够使用统一的方式进行管理,更好的利用有限的空间。

SQL中将数据类型分成了三大类:数值类型、字符串类型、时间日期类型。

47c9708b76bafebe85ccac80565bcbd8.png

数值型:

数值型数据:都是数值,系统将数值型分为整数型和小数型。

整数型:

存放整形的数据,在SQL中因为更多考虑如何节省磁盘空间,所以系统将整形又细分为5类。

738cdba74693e4b9e8c5e8858e515313.png

b95fe57abcad310afa0825b9cb59653e.png

SQL中的数值类型全部都默认有符号,但是可以分正负。

有时候需要使用无符号数据:需要给数据类型限定:int unsigned;    无符号,从0开始。

11f808fe17b3066ab20f7b24d52a0b70.png

插入数据测试:

0ac2b78f97798f40134f015c5f7e8609.png

在查看表结构的时候,发现每个字段的数据类型之后会自带一个括号,里面有指定的数字。

这个数据是显示宽度,没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制的,这种控制不会改变数据本身的大小。

显示宽度的意义:当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0来增加宽度,不改变值的大小:()

c19d6dc62fea3907cba1a91b80bfb24d.png

ee11e4ce2a54cf8eae030450ab600013.png

409685ccae13e6d24b3b87dce6ab7b33.png

小数型:

e225f0db0d550ac04a62c1d2dd735407.png

3ee5cea66fce201055ca59871c6e5e18.png

7d87b9317094e1a40c657b12797b5c76.png

6f0a0335826603559bccd89683eee937.png

fd48ac9e7e0fd5ecb29a78b52242feb7.png

181f833fa632237dd7b868a7a9ebb979.png

9d39faadb79bf0bfded73bf0c7c9fc16.png

994792c6c743bbbc2c3fb374848ef67c.png

8f6f0bcdf392d88e2ba35f8cff3b3787.png

a55c4ed3e9f057d8137c2615af8b1686.png

235b4200e566860a421c8e9b3d42cf07.png

0deae5989448a85e9b3ae3df0e90378a.png

e1e61b8f12c0fb54fd8ee7aecb64ec5c.png

e2af89f0d2df2b3ce0145f77888fbe54.png

8f0c799e2787c31414e31e02e92f61fd.png

d781b4c82081a71f301e544f5fb426d3.png

ecf57752f4a2a391a671d6e30c5e2653.png

ee75808ff9f10f72e75283e1cb906496.png

字符串类型:

在SQL中,将字符串类型分为6类:char、varchar、text、blob、enum和set

定长字符串:char,磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。

455a934f1d6424d40fabf5cfc3004803.png

变长字符串:varchar在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体数据来确定的。

f08af604c9f9040565e3c30a4ee36a96.png

9bdcc08c114bc20c6de2d8acb5dfce49.png

字符串文本:

如果数据量非常的大,通常说超出255个字符,就会使用文本字符串。

d2cb8245f9b0ea4144062b78386422fc.png

枚举字符串:

枚举:enum,事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。

1d472dbb0a69ee2c00b4b06c273218a6.png

7031fecf4c31b6257f726762ba0ee05e.png

902b876fce407705f520f5110def780a.png

c234cb871c438e006840fa4249fcec1c.png

证明字段存储的数据是数值:将数据取出来 +0,就可以判断出原来的数据存储的到底是字符串还是数值,如果是字符串最终结果永远是0,否则就是其他值。

267dc296a6262f512108bce2417bae02.png

4df39ab36b3296be7a342fbd027a6b70.png

894587a05195c7ae3504ca227b8d31b3.png

5453d0afaa4967a2e132ac70f577dc6e.png

集合字符串:

集合跟枚举很类似:实际上存储的是数值,而不是字符串(集合是多选)

19c26a0ce5cc307c005feea07155df1a.png

ff07c39632d3c31d6c73cd4c6b1e183c.png

83b3c9d9f8d9bf1f16110eb761988b2e.png

集合中每一个元素都是对应一个对应的二进制位:

5afe6f90c830c39c10746ff57fa19819.png

39fc5f82f4c14a9c64bb39a56dddeba7.png

ef3ad6862cee03171ab96ccc63647072.png

MySQL的记录长度:

mysql中规定:任何一条记录最长不能超过65535个字节(varchar永远达不到理论值)

9b2c3be0cb63dcf029c9de702a28c6b6.png

ba866b4fee1adc6d6870bcba059ad583.png

0e7673a70b2188501336c246c119277c.png

058747fd8c6688bc4b1ab9acaf25b5cd.png

列属性:

真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。

84e1abc2643abf6f3c6faba5ed01fa01.png

空属性:

两个值:null(默认)和not null(不为空)

虽然是默认为空,数据库基本都是字段为空,但是在实际开发的时候,应当尽可能的保证所有的数据都不应该为空,空数据是没有意义的,空数据没有办法参与运算。

e59cb39a09bcc2369ee1077e8998492a.png

9b2697c9eefccfc28b4c3de199f0b64e.png

列描述:

comment(描述),没有实际的含义,是专门用来描述字段,会根据表创建语句保存,用来给数据库管理员来进行解释的。

eb6631b255fa6e93f29f52a1a3dddf07.png

默认值:

某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性使用默认值。

默认值关键字:default;

e256c00434fd7fcc4adfe6f99d31926d.png

默认值的生效(使用):在数据进行插入的时候,不改变字段的赋值。

8fed3c23d6a69ad58d6231f9d241c7cb.png

想要使用默认值,可以不一定去指定列表,故意不使用字段列表:可以使用default关键字代替。

18c7a12c8010faede6ea710f6259c836.png

主键(primary key):

一张表只能有一个字段可以使用对应的键,用来唯一约束该字段里面的数据,不能够重复,这种键称为主键。

增加主键:

SQL操作中有多种方式可以给表增加主键:大体分为三种。

方案一:在创建表的时候,直接在字段之后跟上primary key关键字(主键本身不允许为空)。其优点:非常直接,缺点:只能使用一个字段作为主键。

fc2749c0e72ef0b1b12a182c8b1ba1f6.png

方案二:在创建表的时候,在所以得字段之后,使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)

744faae25efc4e41a31506f417e1c08a.png

方案三:当表已经创建好之后,额外追加主键,可以通过修改表的字段属性,直接追加。(前提:表中的字段对应的数据本身是独立的(不重复));

Alter table 表名 add primary key(字段列表);

e442e3200125b311daf42bddd9a89ebc.png

主键约束:

主键对应的字段中的数据不允许重复:一旦重复,数据操作失败(增和改)

ee4118ed88433f575d9c1d07518d7595.png

更新主键与删除主键

没有办法更新主键,主键必须先删除,后增加。

Alter table 表名 drop primary key;

acebecb2f44135c1688a15dd398d0d5d.png

主键分类:

在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键:如学号,课程号);大部分时候,是使用逻辑性的字段(字段没有业务含义,值是什么没有关系),将这种主键称为逻辑主键。

c419514d169812f1df04afc63d999a8b.png

自增长(auto_increment):

当对应的字段没有值或者给默认值、或者给null的时候,会自动的被系统触发。系统会从当前字段中已有的最大值再进行+1操作,得到一个新的不同的字段。

自增长通常是跟主键搭配。

自增长特点:

ffd96acbc6e2f284b1608a0dc6a9a699.png

自增长的使用:

当自增长被给定的值是null或者默认值的时候会触发自动增长。

034430610b77d9ba3185ae30ea84d00d.png

自增长如果对应的字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(从最大值+1)

8a92b5bf73a90c005a80872cb079d444.png

5f2e2377847783e267a8e7c7455a9a1b.png

修改自增长:

自增长如果涉及到字段的改变,必须先删除自增长,后增加(一张表只能有一个自增长)

修改当前自增长已经存在的值:修改只能比当前已经有的自增长的最大值大,不能够小(小不会生效)

Alter table 表名 auto_increment = 值;

cc6252af9c9f4414488c75fc3f5a92db.png

8f10b83b74608202bad4ff22a9be9c05.png

3f23d63435c16a723ddf4973589c84cf.png

dad52ba118a36f1a8433c732a4121afc.png

0e0a1347efc530b1e422aa0caa47a1c3.png

1ffeabe9fc7c43fff50c4704178fb498.png

删除自增长:

自增长是字段的一个属性:可以通过modify来进行修改(保证字段没有auto_increment即可)

Alter table 表名  modify 字段 类型;

3efbfde56a699c27b1cacd34ca3caa3d.png

唯一键:

一张表往往有很多字段需要具有唯一性,数据不能重复,但是一张表中只能有一个主键。

唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题。

唯一键的本质和主键差不多:唯一键默认是允许自动为空,而且可以多个为空(空字段不参与唯一性比较)

增加唯一键:

与主键类似,有三种方案。

cf93d58c241dcd97785a4107e87e5ef8.png

2b386d269b4237e5fbdf55b777b074db.png

f522d725fe1fd22cf5b58e084273897f.png

唯一键约束:

唯一键与主键本质相同,唯一区别就是唯一键默认允许为空,而且是多个为空。(如果唯一键也要求不能为空,那么与主键就是一样的)

b13406f2c371db25cf342ad4944af94e.png

840ff5310e1c287fa6dc399f9e6e2082.png

索引:

几乎所有的索引都是建立在字段之上。

索引:系统根据某种算法,将已有的数据(未来可能新增的数据),单独建立一个文件,文件能够实现快速的配置数据,并且能够快速找到对应标的记录。

索引的意义:

1、提升查询数据的效率。

2、约束数据的有效性(唯一性等)

增加索引的前提条件:索引本身会产生索引文件(有时候可能毕书尽文件还大),会非常耗费磁盘空间。

如果某个字段需要作为查询条件经常使用,那么可以使用索引(一定会想办法增加);

如果某个字段需要进行数据的有效约束,也可以使用索引(主键、唯一键)

17b83ed94b611252b639a4859e49acab.png

dce81cddc5a27f6b285152847753fee5.png

索引详细讲解: https://www.cnblogs.com/chenshishuo/p/5030029.html

原文:https://www.cnblogs.com/soft2018/p/10879760.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值