mysql基本数据类型和约束条件

mysql基本数据类型

1.创建表的完整语法
create table 表名(字段1 类型[(宽度) 约束条件],字段2 类型[(宽度) 约束条件]);
# 注意:1.在同一张表中,字段名不能相同;2.宽度和约束条件可选,字段名和类型是必须的;
# 类型:使用限制字段必须以什么样的数据类型传值
# 约束条件:约束条件是在类型之外添加一种额外的限制
2.整型
类型 大小 范围(有符号) 范围(无符号) 用途
tinyint 1字节 -128,127 0,255 小整型
smallint 2字节 -32768,32767 0,65535 大整数
mediumint 3字节 大整数
int 4字节 0,2**32-1 大整数
bigint 8字节 极大整数
# 整型默认都是有符号的
测试:create table t1(x tinyint);
insert into t1 values(128),(-129);      # 可以存储负号
# 修改为无符号
create table t2(x tinyint unsigned);    # 即不能存负号
# 整型的宽度对存储数据限制不起作用
create table t3(x tinyint(1) unsigned);
insert into t3 values(100);
create table t4(x tinyint(2) unsigned zerofill);

# 关键字查找变量
show variables like "%mode%";

# 设置严格模式:在该模式下,如果数据超出限制,则会立即报错
set global sql_mode=‘strict_trans_tables‘
3.浮点型
类型 大小 范围 范围 用途
float 4字节 单精度
double 8字节 双精度
decimal 不固定 小数值
# 三种浮点型:精确度不同,float最低,
create table t5(x float(255,30));        # 255:总长度255位  30:小数位占30位
create table t6(x double(255,30));       # 255:总长度255位  30:小数位占30位
create table t7(x decimal(65,30));       # 65:总长度65位    30:小数位占30位

# 相同点:都能存放30位小数
# 不同点:
        精确的不同,其中float的精确度最低
        float 和 double 存放的整数位比decimal多
4.字符串类型
4.1 char:定长字符串
create table t8(x char(4));     # 严格模式下,超过4个会报错,不够用空格补全
insert into t8 values(‘aaaaa‘);     # 报错
4.2 varchar:可变长字符串
create table t9(x varchar(4));  # 严格模式,超过4个会报错,不够按实际个数存
insert into t9 values(‘aa‘);    # 只存两个,不会用空格不全
# char类型,因为存取都是固定长度,所以不需要管存储的数据的实际长度,在读取时,速度会更快
# varchar类型,因为存储数据都是按数据的实际长度存储,所以更节省空间。
5.日期类型
date:1999-01-27
time:11:11:11
datetime:1999-01-27 11:11:11        8个字节
timestemp:                          4个字节
year:1999
# 测试
create table student(id int,
                     name char(16),
                     born_year year,
                     birth date,
                    reg_time datetime);
insert into student values(1,‘aaa‘,‘2000‘,‘2000-01-27‘,‘08:30:00‘,
                          ‘2013-11-11 11:11:11‘);
6.枚举和列表
enum:多选一   # 枚举
set:多选多    # 集合
# 测试
create table teacher(id int,
                     name char(16),
                     sex enum(‘male‘,‘female‘,‘other‘));

insert into teacher values(1,‘aaa‘,‘xxx‘);      # 会报错
insert into teacher values(1,‘aaa‘,‘male‘);     # 正确

create table teacher(id int,
                     name char(16),
                     sex enum(‘male‘,‘female‘,‘other‘,
                     hobbies set(‘1‘,‘2‘,‘3‘)));
insert into teacher values(1,‘aaa‘,‘male‘,‘1,2‘);       # 正确
7.约束条件
not null:   # 不能位空
unique  key # 唯一标识,但是可以为空   是一种键
primary key # 主键,从约束角度看  等同于unique+not null的效果
foreign key # 外键
auto_increment  # 递增
defult      # 默认
补充:key是一种索引,在mysql中用来加速查询
not null & unique
# not null
alter table t10 modify name char(16) not null;

# not null + default
create table t11(id int,name char(6) not null default ‘male‘;

# unique    单列唯一
create table t12(id int unique,name char(6));
# 联合唯一
create table server(id int unique,
                   ip char(15),
                   port int,
                   unique(ip,port))
insert into server values(1,‘1.1.1.1.1‘,3306);
premary key & auto_increment
# 1.一张表中必须有,并且只能有一个主键
innodb会以主键为树形结构来进行查询,没有主键,mysql会设置一个默认的主键
create table t13(id int,
                 name char(16),
                 age int,
                 sex char(6))engine=innidb;

# 2.auto_increment:
    通常与primary key 连用,而且通常是给id字段加
    只能给被定义成key的字段加,而且加了auto_increment 如果设置可以为空的话后可以不用传值

create table t4(id int primary key auto_increment,name char(15))
# 查看创建表时,id是否可以为空
show create table t4;
# 如果可以为空,则可以不传值
# 如果是not null,则必须传值

# 设置可以为字段可以为空
aither table t4 modify id int;
foreign key
create table score(sid int primary key auto_increment,
                    s_id int,
                    c_id int,
                    number float,
                    foreign key(s_id) references student(sid) on update cascade on delete cascade,
                    foreign key(c_id) renferences course(cid) on update cascade on delete cascade);

# foreign key(字段) references 表名(字段名)
# on update cascade
# on delete cascade 存在关联关系也可以直接进行删除和修改

原文地址:https://www.cnblogs.com/hello-yuanjing/p/10014710.html

时间: 2024-08-26 17:07:47

mysql基本数据类型和约束条件的相关文章

MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于excel),用来存放多行内容/多条记录 5. 记录:事物一系列典型的特征 6. 数据:描述事物特征的符号 MySQL数据库就是一个套接字软件,用来管理其他机器上的数据文件 MySQL介绍: MySQL是一个关系型数据库管理系统:就是一个基于socket编写的C/S架构胡软件 客户端软件 mysql

MYSQL中数据类型介绍

一.MySQL的数据类型 主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOUBLE.DECIMAL 字符串类型:CHAR.VARCHAR.TINY TEXT.TEXT.MEDIUM TEXT.LONGTEXT.TINY BLOB.BLOB.MEDIUM BLOB.LONG BLOB 日期类型:Date.DateTime.TimeStamp.Time.Year 其他数据类型:BIN

mysql之数据类型以及操作数据表

数据类型: 数据类型是指列.存储过程的参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. —————————————————————————————————————————————————————————— 在mysql当中数据类型大概有以下几类: ———————————————————————————————————————————— 1.整型: ———————————————————————————————————————————————————————————

mysql之数据类型

 所谓建表,就是声明列的过程: 数据是以文件的形式放在硬盘中(也有放在内存里的) 列:不同的列类型占的空间不一样 选列的原则:够用又不浪费: mysql的数据类型: 整形:Tinyint(1字节) Smallint(2个字节)  Mediumint(3个字节) int(4个字节) bigint(8个字节): Tinyint在mysql默认是有符号的(-128----127): Tinyint(M) unsigned zerofill unsigned : 是无符号,影响存储范围:M代表宽度,(必

2Python全栈之路系列之MysQl基本数据类型

Python全栈之路系列之MySQL基本数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类: 数字类型 日期和时间类型 字符串类型 数字类型 类型 大小 用途 BIT - 二进制 TINYINT 1字节 小整数值 INT or INTEGER 4字节 大整数值 BIGINT 8字节 极大整数值 DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 小数值 FLOAT 4字节 单精度浮点数值 DOUBLE 8字

MySQL:MySQL日期数据类型、MySQL时间类型使用总结

MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间      日期格式                日期范围------------  ---------  --------------------- -----------------------------------------datetime      8 bytes  YYYY-MM-DD HH:MM:SS  1000-01-01 00:00:00 ~ 9999-12-31 23:59:5

MYSQL的数据类型详解

mysql的数据类型 在mysql数据库当中,每一个库都是有多张表来组成的,每一个表都是由行和列来组成的. 所谓建表就是声明列的过程,数据是以文件的形式保存在系统上的.因此,不同的列类型,占用的空间不一样. 选列的原则:够用又不浪费即可 在选择数据类型时考虑如下因素: 1.占据空间 2.储存范围 在声明列的时候,为什么要声明某个字段的数据类型? 数据类型有如下意义: 1.确定该字段的值的类型 2.可以确定该字段所占据的空间 3.可以确定该字段是定长还是变长的 4.该字段如何进行比较以及排序 5.

MySQL的数据类型和建库策略详解

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构.充分利用空间是十分必要的.这就要求我们对数据库系统的常用数据类型有充分的认识.下面我就将我的一点心得写出来跟大家分享. 一.数字类型 数字类型按照我的分类方法分为三类:整数类.小数类和数字类. 我所谓的"数字类",就是指DECIMAL和NUMERIC,它们是同一种类型.它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的:他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大.

MySQL datetime数据类型设置当前时间为默认值

环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL datetime数据类型设置当前时间为默认值 解决: 方法一: 由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.代替的方案是使用TIMESTAMP类型代替DATETIME类型. TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作.如果有多个TIMESTAMP列,只有第一个自动更新. 自