mysql基础数据类型
mysql常用数据类型概览
![1036857-20170801181433755-146301178](D:\笔记\mysql\复习\1036857-20170801181433755-146301178.png)1. 数字: 整型:tinyinit int bigint 小数: float :在位数比较短的情况下不精准 double :在位数比较长的情况下不精准 0.000001230123123123 存成:0.000001230000 decimal:(如果用小数,则用推荐使用decimal) 精准 内部原理是以字符串形式去存 2. 字符串: char(10):简单粗暴,浪费空间,存取速度快 root存成root000000 varchar:精准,节省空间,存取速度慢 sql优化:创建表时,定长的类型往前放,变长的往后放 比如性别 比如地址或描述信息 >255个字符,超了就把文件路径存放到数据库中。 比如图片,视频等找一个文件服务器,数据库中只存路径或url。 3. 时间类型: 最常用:datetime 4. 枚举类型与集合类型
数值类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAIxWM9Z-1585063057990)(D:\笔记\mysql\复习\1036857-20170801181433755-146301178.png)]
1、整数类型
- 整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
- 作用:存储年龄,等级,id,各种号码等
整型类型测试 默认是有符号的 mysql> create table t1(money tinyint); #注意,创建表时最后一个字段后面不能有逗号,错误写法mysql> create table t1(money tinyint,); mysql> insert into t1 values(11); Query OK, 1 row affected (0.28 sec) mysql> select * from t1; mysql> insert into t1 values(-10); Query OK, 1 row affected (0.11 sec) mysql> select * from t1; mysql> insert into t1 values(-200); Query OK, 1 row affected, 1 warning (0.10 sec) mysql> select * from t1; 设置了数据类型,会有一个约束效果,只能表示自己范围内的数 创建 无符号数值类型 的写法: mysql> create table t2(id tinyint unsigned);
2、浮点型
- 浮点类型:float double
- 作用:存储薪资、身高、温度、体重、体质参数等
测试 mysql> create table t3(id float(60,30)); # 60代表小数位+整数位总数 Query OK, 0 rows affected (1.70 sec) # 30表示小数位最高30位 mysql> create table t4(id double(60,30)); Query OK, 0 rows affected (0.88 sec) mysql> create table t5(id decimal(60,30)); # decimal能够存储精确值的原因在于其内部按照字符串存储。 Query OK, 0 rows affected (0.96 sec) mysql> insert into t3 values(1.1111111111111111111111); Query OK, 1 row affected (0.13 sec) mysql> insert into t4 values(1.1111111111111111111111); Query OK, 1 row affected (0.22 sec) mysql> insert into t5 values(1.1111111111111111111111); Query OK, 1 row affected (0.09 sec) mysql> select * from t3; mysql> select * from t4; mysql> select * from t5;
1.创建表 create table t2(f1 float(5,2),f2 float,f3 double(5,2),f4 double); float(5,2) 保留两位小数 并且四舍五入 double(5,2) 2.写入数据 insert into t2 values(5.2336,5.2336,5.336,5.2336); 3.查看表中数据 select * from t2; 4.指定写入数据 insert into t2(f2,f4) values(5.1783682169875975,5.1783682169875975); insert into 表名(字段1,字段3) values (值1,值3); 1.创建t3表 create table t3(f1 float,d1 double,d2 decimal(30,20),d3 decimal); 2.查看表结构 desc t3; 3.写入数据 insert into t3 values(5.1783682169875975179,5.1783682169875975179,5.1783682169875975179,5.1783682169875975179); int--------不约束长度,最多表示10位数 float(m,n) m-----一共多少位 n-----小数部分多少位
日期类型
- 类型:DATE,TIME,DATETIME ,IMESTAMP,YEAR
- 作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
mysql> create table t6(d1 year ,d2 date,d3 datetime); Query OK, 0 rows affected (1.75 sec) mysql> insert into t6 values(now(),now(),now()); Query OK, 1 row affected, 1 warning (0.12 sec) mysql> select * from t6;
字符串类型
char和varchar性能对比: 以char(5)和varchar(5)来比较,加入我要存三个人名:sb,ssb1,ssbb2 char: 优点:简单粗暴,不管你是多长的数据,我就按照规定的长度来存,5个5个的存,三个人名就会类似这种存储:sb ssb1 ssbb2,中间是空格补全,取数据的时候5个5个的取,简单粗暴速度快 缺点:貌似浪费空间,并且我们将来存储的数据的长度可能会参差不齐 varchar: varchar类型不定长存储数据,更为精简和节省空间 例如存上面三个人名的时候类似于是这样的:sbssb1ssbb2,连着的,如果这样存,请问这三个人名你还怎么取出来,你知道取多长能取出第一个吗? varchar在存数据的时候,会在每个数据前面加上一个头,这个头是1-2个bytes的数据,这个数据指的是后面跟着的这个数据的长度,1bytes能表示2**8=256,两个bytes表示2**16=65536,能表示0-65535的数字,所以varchar在存储的时候是这样的:1bytes+sb+1bytes+ssb1+1bytes+ssbb2,所以存的时候会比较麻烦,导致效率比char慢,取的时候也慢,先拿长度,再取数据。 优点:节省了一些硬盘空间,一个acsii码的字符用一个bytes长度就能表示,但是也并不一定比char省,看一下官网给出的一个表格对比数据,当你存的数据正好是你规定的字段长度的时候,varchar反而占用的空间比char要多。 Value CHAR(4) Storage Required VARCHAR(4) Storage Required '' ' ' 4 bytes '' 1 byte 'ab' 'ab ' 4 bytes 'ab' 3 bytes 'abcd' 'abcd' 4 bytes 'abcd' 5 bytes 'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes 缺点:存取速度都慢 对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列性能要好。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
适合使用char: 身份证号、手机号码、QQ号、username、password、银行卡号 适合使用varchar: 评论、朋友圈、微博 1.创建表 create table t6(c1 char(1),v1 varchar(1),c2 char(8),v2 varchar(8)); 2.写入数据 insert into t6 values('alexq','alexq','alexq','alexq'); 3.查询表中数据 select * from t6;
枚举和集合类型
enum: 单选行为------枚举类型 只允许从值集合中选取单个值,而不能一次取多个值 1.创建表 create table t8(id int, name char(18),gender enum('male','female')); 2.写入数据 insert into t8 values(1,'alex','不详'); ---------不详无法写入 3.查询表中数据 select * from t8; 4.写入数据 insert into t8 values(1,'alex','male');-------------male可以写入 5.查询表中数据 select * from t8; 2.写入数据 insert into t8 values(1,'alex','female');------------female可以写入 3.查询表中数据 select * from t8;
set: 多选行为 可以**允许值集合中任意选择1或多个元素进行组合**。对超出范围的内容将不允许注入,而对重复的值将进行自动去重。 1.创建表 create table t9(id int,name char(18),hobby set('抽烟','喝酒','洗脚','按摩','烫头')); 2.写入数据 insert into t9 values(1,'太白','烫头,抽烟,喝酒,按摩‘); 3.查询表中数据 select * from t8; 4.写入数据 insert into t9 values(1,'大壮','洗脚,洗脚,洗脚,按摩,按摩,打游戏‘); 5.查询表中数据 select * from t8;
总结
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年12月29日
2024年12月29日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]