MySQL_2.中文乱码、列

中文乱码、列

  • 1 中文乱码
  • 2 列类型
      • 2.1 概述
      • 2.2 数值类型
  • 3 列约束


1 中文乱码

最早编码ASCII,对英文字符以及符号进行编码,128个(0->127);
MySQL默认使用Latin-1:总共256个,向下兼容ASCII,对欧洲符号进行编码(希腊字母等);
中国编码形式:
GB2312:对大约6000个简体中文进行编码;
Big5:只支持繁体中文(台湾);
GBK:在G2312基础上加入繁体中文进行编码,大概两万多字符;
Unicode:对世界上主要语言的字符进行编码,不兼容以上三种编码形式;可分为UTF-8,UTF-16,UTF-32

解决中文乱码方法:(三个步骤都需要,执行脚本文件中文为乱码,交互模式正常)
1.创建utf-8编码存储形式的数据库:create database my_test charset utf8;
2.设置客户端连接服务器使用UTF-8编码形式:set names utf8;
3.脚本.sql文件另存为utf-8编码


2 列类型

2.1 概述

2.2 数值类型

多种数值类型:节省存储空间的同时保证能存储下足够大的数值

  1. 整型
    1)TINYINT:微整型 1字节 -128~127
    2)SMALLINT: 小整型 2字节 -32768~32767
    3)INT:整型 4字节 -2147483648~2147483647
    4)BIGINT:大整型 8字节
  2. 浮点型(M表示总有效位数,N表示小数点后有效位数)
    1)float:单精度浮点数,4字节,3.4E38,范围比INT大得多,精度不如INT,可能产生误差
    2)double:双精度浮点数,8字节,1.79E308,范围比BIGINT大得多,精度不如BIGINT,可能产生误差;
    3)decimal(M,N):严格定点数,保存精确小数,不会产生计算误差;
    float与double牺牲部分小数空间,将浮点右移,换取空间存储数的幂,极大扩展数值范围,常用于天文运算
  3. 布尔类型
    BOOLEAN/BOOL,取值TRUE或FALSE(1/0),等价于长度为1整型数字TINYINT(1);BOOL类型加引号全部显示为0
  4. 字符串类型
    1)char(M):固定长度字符串,最大长度为255个字符;用空格填满空位,产生空间浪费;比varchar执行速度快;
    2)varchar(M):长度可变字符串,最大长度65535个字符,存储空间较大;内容是可变长度,不会产生空间浪费,当数据长度 3)text(M):长度可变字符串,最大长度可以到2的32次方,即2G个字符
  5. 日期时间类型(用单引号或双引号括起来)
    1)date:日期,‘2018-10-31’
    2)time:时间,‘18:50:50’
    3)datetime:日期时间, ‘2018-10-31 18:50:50’;不同系统表示范围不一样,地区默认日期格式也可能不同;函数补充:year()/month()/day()

3 列约束

Constraint,表中特定列上出现所有数据必须满足特定内容要求,插入数据需满足要求才能成功插入

  1. 主键约束
    PRIMARY KEY,主键列的值不能为空且必须唯一(升序->加快查找速度,一个表唯一主键列)
    自动增长auto_increment
  2. 唯一约束
    unique 指定列不能出现重复值,可以出现多个NULL
  3. 非空约束
    not null 指定列不能为NULL
  4. 检查约束(MySQL不支持,因为会影响记录插入和更新的操作效率
    check 指定列上的值不能为NULL;Eg. sex char(1) CHECK(sex=‘男’ OR sex=‘女’)
  5. 外键约束
    foreign key 外间列上的值必须在参考表的主键列上,允许出现重复值和空值
    foreign key(dep)外键列 references dept(id)指定表的主键列id
  6. 默认值约束
    default 未明确指定值时使用的默认值;Eg. default 0;default ‘等待付款’

你可能感兴趣的:(Web前端基础知识,MySQL)