数据类型和数据表

数据类型

整形

数据类型存储范围
TINYINT(1个字节)有符号值:-128到127(-2^7到2^7-1);无符号值:0到255(0到2^8-1)
SMALLINT(2个字节)有符号值:-32768到32767(-2^15到2^15-1);无符号值:0到65535(0到2^16-1)
MEDIUMINT(3个字节)有符号值:-8388608到8388607(-2^23到2^23-1);无符号值:0到16777215(0到2^24-1)
INT(4个字节)有符号值:-2147483648到2147483647(-2^31到2^31-1);无符号值:0到4294967295(0到2^32-1)
BIGINT(8个字节)more large

数据优化时选择最合理的数据类型

浮点型

数据类型存储范围
FLOAT[(M,D)]-3.4*10(-38)~3.4*10(38),M是数字总位数,D是小数点后面的位数,如果M和D被省略,根据硬件允许的限制来保存值,单精度浮点数精确到大约7位小数位,占4个字节
DOUBLE[(M,D)]-1.7*10(-308)~1.7*10(308),双精度,有效位是16位,占8个字节

日期时间型

日期类型存储空间日期格式日期范围
datetime8 bytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp4 bytesYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 ~ 2038
date3 bytesYYYY-MM-DD1000-01-01~ 9999-12-31
year1 bytesYYYY1901~ 2155

在 MySQL 中创建表时,对照上面的表格,很容易就能选择到合适自己的数据类型,不过到底是选择 datetime 还是 timestamp,可能会有点犯难,这两个日期时间类型各有优点:
datetime 的日期范围比较大;,timestamp 所占存储空间比较小,只是 datetime 的一半

字符型

|列类型|存储需求|
|CHAR(M)|M个字节,0<=M<=255|
|VARCHAR(M)|L+1个字节其中L<=M,且0<=M<=65535|
|TINYTEXT|L+1个字节,其中L<2^8|
|TEXT|L+2个字节,其中L<2^16|
|MEDIUMTEXT|L+3个字节,其中L<2^24|
|LONGTEXT|L+4个字节,其中L<2^32|
|ENUM(‘value1’,’value2’,…)|1或2个字节,取决于枚举值的个数(最多65536个值)|
|SET(‘value1’,’value2’,…)|1,2,3,4或8个字节,取决于set成员的数目(最多64个成员)|

char的长度是固定的,varchar的长度是可变的,因为char的长度固定,方便查找,所以存取速度char比varchar要高一些,char相当于用空间换效率

数据表

打开数据库

命令:USE 数据库名称

查看当前打开的数据库:SELECT DATABASE()

创建数据表

命令:

CREATE TABLE [IF NOT EXISTS] table_name(
         column_name data_type,
         ......)

查看数据表列表: SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

查看数据表结构: SHOW COLUMNS FROM db_name

插入记录

命令: INSERT[INTO] tbl_name[(col_name,...)]VALUES(val,...)

如果没有选择列名,插入的值必须要对应,多了或少了都会发生错误

记录查找

命令:SELECT expr,... FROM tbl_name
此处省略了SELECT的部分语句,以后会深入学习SELECT

空值与非空

  • NULL:字段值可以为空
  • NOT NULL:字段值禁止为空

自动编号

命令:AUTO_INCREMENT

自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次的增量为1

约束

主键约束(PRIMARY KEY 或 KEY)

  • 每张数据表只能存在一个主键
  • 主键保证记录的唯一性
  • 主键自动为NOT NULL

唯一约束(UNIQUE KEY)

  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值(NULL)
  • 每张数据表可以存在多个唯一约束

默认约束(DEFAULT)

  • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值