发布于2019-08-05 11:43 阅读(961) 评论(0) 点赞(4) 收藏(1)
create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); #类型:使用限制字段必须以什么样的数据类型传值 #约束条件:约束条件是在类型之外添加一种额外的限制
注意:
1、在同一张表中,字段名不能重复 2、宽度和约束条件可选,字段名和类型是必须的 3、最后一个字段后不加逗号
1、作用:id号,各种号码,年龄,等级 2、分类:tinyint int bigint
3、默认整型都是有符号的
#tinyint:小整数值(1字节) 范围(有符号):(-128,127) 范围(无符号):(0,255) create table t1(id tinyint); insert into t1 values(-10),(128),(-129); # id -10 127 -128 create table t2(id tinyint unsigned); # 无符号的 insert into t2 values(-1),(256); # id 0 255 #int:大整数值(4字节) 范围(有符号):(-2147483648,2147483647) 范围(无符号):(0,4294967295) create table t3(x int unsigned); insert into t3 values(4294967296); # x 4294967295 create table t4(x int(12) unsigned); #显示宽度12 #显示宽度,并非存储宽度 insert into t4 values(4294967296123); # x 4294967295
4、强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制,所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据
显示时,不够8位用0填充,如果超出8位则正常显示
create table t5(x int(8) unsigned zerofill); insert into t5 values(4294967296123); # x 4294967295 insert into t5 values(1); # x 00000001
# 查看sql_mode mysql> show variables like "%sql_mode%"; +----------------------------+---------------------+ | Variable_name | Value | +----------------------------+---------------------+ | sql_mode NO_ENGINE_SUBSTITUTION | +----------------------------+---------------------+ #修改sql_mode为严格模式:在该模式下,如果插入的数据超过限制,则会立即报错 mysql> set global sql_mode="strict_trans_tables";
作用:存储身高、体重、薪资 分类:float double decimal 相同点: 对于三者来说,都能存放30位小数, 不同点: 1、精度的排序从低到高:float, double, decimal 2、float与double类型能存放的整数位比decimal更多
create table t9(x float(255,30)); #255最大总数位 30最大小数位 create table t10(x double(255,30)); create table t11(x decimal(65,30)); #65最大总数位 30最大小数位 insert into t9 values(1.111111111111111111111111111111); insert into t10 values(1.111111111111111111111111111111); insert into t11 values(1.111111111111111111111111111111); mysql> select * from t9; +----------------------------------+ | x | +----------------------------------+ | 1.111111164093017600000000000000 | +----------------------------------+ mysql> select * from t10; +----------------------------------+ | x | +----------------------------------+ | 1.111111111111111200000000000000 | +----------------------------------+ mysql> select * from t11; +----------------------------------+ | x | +----------------------------------+ | 1.111111111111111111111111111111 | +----------------------------------+
作用:姓名,地址,描述类的信息
分类:char 定长 varchar 变长
强调:字符的宽度限制单位是字符个数
create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符 create table t13(y varchar(4)); # 超出4个字符则报错,不够4个字符那么字符有几个就存几个 insert into t12 values('hello'); #报错 insert into t13 values('hello'); #报错 insert into t12 values('a'); #'a ' 看不到空格,需要设置sql_mode insert into t13 values('a'); #'a' set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";# char_length(x)显示字段x对应的长度 select char_length(x) from t12; #4 select char_length(y) from t13; #1
注意:
针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中,但会在读出结果时自动去掉末尾的空格,但两种情况不同:
mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用 mysql> select * from t14 where name like "lxx__"; # name字段模糊匹配一个值,该值后填充空格是有用的
对比char与varchar:
name char(5) 缺点:浪费空间 优点:存取速度都快 egon_ alex_ lxx__ wxx__ yx___
ame varchar(5) 缺点: 存取速度都慢 优点: 节省空间 (1bytes+egon)(1bytes+alex)(1bytes+lxx)(1bytes+wxx)(1bytes+yx)
作用:时间相关
分类:date:1999-01-27 time: 11:11:11 datetime:1999-01-27 11:11:11 year:1999
create table student( id int, name char(16), born_year year, birth date, class_time time, reg_time datetime ); insert into student values(1,'egon','2000','2000-01-27','08:30:00','2013-11-11 11:11:11'); mysql> select * from student; +------+------+-----------+------------+------------+---------------------+ | id | name | born_year | birth | class_time | reg_time | +------+------+-----------+------------+------------+---------------------+ | 1 | egon | 2000 | 2000-01-27 | 08:30:00 | 2013-11-11 11:11:11 | +------+------+-----------+------------+------------+---------------------+
作用与分类:枚举enum:多选一个 集合set:多选多(也可多选一)
create table teacher( id int, name char(16), sex enum('male','female','others'), hobbies set('play','read','music','piao') ); insert into teacher values(1,'egon','male','play,piao'); select * from teacher; +------+------+------+-----------+ | id | name | sex | hobbies | +------+------+------+-----------+ | 1 | egon | male | play,piao | +------+------+------+-----------+
作者:小乖乖
链接:https://www.pythonheidong.com/blog/article/4411/53919040949acf9365e2/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!