乱码产生的原因:
MySQL中默认使用latin-1编码,而latin-1不存在中文编码。
解决乱码问题:三个地方统一为utf8
(1).sql脚本文件另存为utf8编码
(2)客户端连接服务器端使用的编码为utf8 SET NAMES UTF8
(3)服务器端,在创建数据库时存储所使用的编码为utf8 CHARSET=UTF8
1.列类型
创建数据表的时候,指定的列可以存储的数据类型
(1)数值类型
TINYINT 微整型 占一个字节 -128~127
SMALLINT 小整型 占两个字节 -32768~32767
INT整型 占四个字节 -2147483648~2147483647
BIGINT 大整型 占8个字节
FLOAT(M,D) 单精度浮点型 占四个字节 最大是3.4E38,存储范围远比INT大,可能产生四舍五入
M表示总的有效位数,D表示小数点后边的有效位数。
DOUBLE(M,D) 双精度浮点型 占八个字节 存储范围比BIGINT大得多
DECIMAL(M,D) 定点小数,不会产生计算误差
BOOL 布尔型 只能是TRUE (1)/ FALSE(0)
(2)日期时间类型——必须添加引号
DATE 日期类型 2018-08-02
TIME 时间类型 14:52:20
DATETIME 日期时间类型 2018-08-02 14:52:20
(3)字符串类型——必须添加引号
VARCHAR(M) 变长字符串,不会产生空间的浪费,操作速度相对比较慢。M最多存储65535。
CHAR(M) 定长字符串,可能产生空间的浪费,操作速度远比VARCHAR快的多,常用于存储固定长度的数据,例如手机号码,身份证号等。M最多存储255。
TEXT 大型变长字符串,最多存储达到2G
2.列约束 constraint约束
MySQL可以对插入的数据进行特定的验证,只有满足条件才会允许插入到数据表中,否则被认为非法的数据,禁止插入。
在MySQL中一共提供了6种列约束
(1)主键约束 –PRIMARY KEY
声明了主键列上的值不能重复,表中查询的记录会按照主键上的值由小到大进行排序。
注意:一个表中只能有一个主键;通常设置在编号上。