mysql的数据类型和约束条件

1.设置数据库的严格模式:

## 5、设置严格模式

```mysql
# 查看数据库配置中变量名包含mode的配置参数:
show variables like "%mode%";

# 修改安全模式:
set session;  # 局部有效,只在你当前操作的窗口有效
set global session;  # 全局有效,永久有效

# 修改完之后退出当前客户端重新登录即可
set global sql_mode = 'STRICT_TRANS_TABLES';

2.数据类型

- 整型:
    - int: 默认范围是(-2147483648, 2147483647)
    -tinyint: 默认范围 -128, 12
    -- bigint
- 浮点型:
    - float        create table t8(x float(255, 30));
    - double     create table t9(x double(255, 30));
    - decimal    create table t10(x decimal(65, 30));
- 字符类型
    - char(16): 定长字符    存取速度快   浪费空间。
    varchar(16): 不定长字符      存几个字符,就是几个字符的大小  节省空间

- 日期类型
      - date: 2019-12-11
      - datetime: 2019-12-11 11:11:11
      - time: 11:11:11
      - year: 2019
      - timestamp: 时间戳

- 枚举与集合
     -enum: 可以 多选一   gender enum('male', 'female', 'others')
     - set: 可 多选一 或 多选多  hobbies set('read', 'sing', '生蚝', 'HSNM'

2.约束条件

- not null + unique:  非空唯一
- unique 将某个字段设置为唯一的值
- primary key + auto_increment: 主键+自增
- auto_increment:
- unsigned :无符号         id int unsigned 

联合约束

# 联合唯一
create table user6(
    id int,
  name varchar(16),
  unique(id, name)
);

insert into user6 values(1, 'tank');
insert into user6 values(2, 'tank');
insert into user6 values(2, 'jason');
# 若id与name联合存在则报错
insert into user6 values(1, 'tank'); 

联合主键

# 联合主键: 多个字段联合起来作为一个主键,本质上还是一个主键
create table user9(
    id int,
    name varchar(16),
    primary key(id, name)
);
desc user9;
原文地址:https://www.cnblogs.com/bigbox/p/12031017.html