mysql约束条件整型_MySQL 表的操作
表的操作
创建表的完整语法:
create table 表名(
字段名1 字段类型[(宽度) 约束条件],
字段名1 字段类型[(宽度) 约束条件],
字段名1 字段类型[(宽度) 约束条件]
);
注:1. 同一张表中,字段名不能相同
2. 宽度和约束条件是可选的,字段名和字段类型是必须的
3. 最后一个字段后面不能加逗号
#######################################
补充:
宽度是对存储数据库的限制;如
create table t1(name char); # char 后面不写宽度默认为 1
insert into t1 values(‘jason‘);
select * from t1;
结果如下:
在没有 严格模式的情况下,数据的确能够存放进去,但是只会存进去一个 j
而最新的数据库版本直接报错:Data too long for column ‘name‘ at row 1
字段类型与约束条件:
字段类型约束的存储数据的类型
约束条件是基于字段类型之上的额外约束
###########################################
1. 数据(字段)类型
建表的时候,字段都有对应的数据类型;如下图:
上图只是整型与浮点型,实际上还有其他的数据类型;接下来一一展示;
1.1 整型
整型可分为tinyint 、smallint 、mediumint 、int、bigint 默认都是带正负号
我们可以使用整型来存储年龄、等级、ID等各种数字相关的
ps:对于整型来说,数据类型后的宽度 并不是存储限制,而是显示限制;
所以在创建表时,如果字段采用的是整型类型,完全无需指定显示宽度;
默认就是展示最大宽度,足够显示完整当初存放的数据
如:int(8):数字不够 8 位默认用空格填充,够8位或者8位以上,有多少位显示多少位;但是也不能超出 int 最大范围
1.2 浮点型
浮点型可分为 float 、double 、decimal
我们可以使用浮点型来表示 身高、体重、薪资等
float(255,30) 总共255位小数位占30位精度上一般够用了
double(255,30) 总共255位小数位占30位
decimal(65,30) 总共65位小数位占30位
精确度: float < double < decimal
通常情况下会将数字在数据库存储上变成 字符串来方便存储,不需要考虑精确度带来的问题
1.3 字符类型
字符类型主要有char(定长) 、varchar(变长)
用来表示 姓名、地址 等描述性信息
create table 表1(name char(4)) # 超出四个字符报错,不够四个字符空格补全
create table 表2(name varchar(4)) # 超出四个字符报错,不够四个有几个就存几个
#########################################
在查看存储的数据的时候我们无法确定是否是由空格补齐,因为在显示的时候 mysql 会自动将末尾的空格取掉
如果不想让 mysql 帮你做自动去除末尾空格的操作,需要再添加一个模式:
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";
退出客户端重新登陆
###########################################
char 与 varchar 的区别:*************
name char(5) django中如果你想用char需要你自己定义
缺点:浪费空间
优点:存取速度都快
格式:egon alex lxx jxx txx # 5个位一组存储
name varchar(5) django默认只有varchar类型
缺点:存取速度慢 相较 char 而言
优点:节省空间
格式:1bytes+egon 1bytes+alex 1bytes+lxx 1bytes+jxx 1bytes+txx # 1个报头再加上实际数据
1.4 时间类型
主要有一下四种:
datatime:年月日 时分秒
data:年月日
time:时分秒
year:年
如创建表 及 插入数据的时候:
create table student(
id int,
name char(16),
born_year year,
birth date,
study_time time,
reg_time datetime
);
insert into student values(1,‘egon‘,‘2019‘,‘2019-05-09‘,‘11:11:00‘,‘2019-11-11 11:11:11‘);
1.5 枚举与集合类型
关键字:
枚举 enum:多选一
集合 set:多选多
用法:
枚举:create table user(
id int,
name char(16),
gender enum(‘male‘,‘female‘,‘others‘)
);
insert into user values(1,‘jason‘,‘xxx‘) # 报错 必须为限制内容中的其中一个
insert into user values(2,‘egon‘,‘female‘) # 正确!
集合: create table teacher(
id int,
name char(16),
gender enum(‘male‘,‘female‘,‘others‘),
hobby set(‘read‘,‘sleep‘,‘sanna‘,‘dbj‘)
);
insert into teacher values(1,‘egon‘,‘male‘,‘read,sleep,dbj‘) # 集合也可以只存一个
2. 约束条件
2.1 not null
标识该字段不能为空
如:create table t1(id int, name char(4) not null);
insert into t1 values(1, null); # 会报错,表示不能插入为空
2.2 unsigned
无负号,用在整型数据类型
如:create table t1(x tinyint);
insert into t1 values(128),(-129);
可以插入负数,但是超出范围只会显示范围内最大数值
create table t2(x tinyint unsigned);
insert into t2 values(-1),(256);
负数不能插入,直接从0开始;并且超出的数值只会存储为该整型上限
2.3 zerofill
使用 0 填充
应用:create table t4(x int(8));
insert into t4 values(4294967296123);
create table t5(x int(8) unsigned zerofill);
insert into t5 values(4294967296123);
显示时,不够8位用0填充,如果超出8位则正常显示
create table t6(x int(8) unsigned zerofill);
insert into t6 values(333);
显示时,不够8位用0填充,如果超出8位则正常显示
2.4 default
默认值
应用:create table student(
id int,
name char(16) not null,
gender enum(‘male‘,‘female‘,‘others‘) default ‘male‘
);
insert into student(id,name) values(1,‘jason‘); # 成功
2.5 unique (key) key可不写
标识该字段的值是唯一的
单列唯一:create table user1(
id int unique, # 限制 id 是唯一的,不能重复
name char(16)
);
insert into user1 values(1,‘jason‘),(1,‘egon‘) # 报错
insert into user1 values(1,‘jason‘),(2,‘egon‘) # 成功
联合唯一:create table server(
id int,
ip char(16),
port int,
unique(ip,port) # 限制ip + port 组合在一起时唯一的
);
insert into server values(1,‘127.0.0.1‘,8080); # 第一次正常插入数据
insert into server values(2,‘127.0.0.1‘,8080); # 报错 ip + port 与第一条数据重复
insert into server values(1,‘127.0.0.1‘,8081); # 正常插入数据
2.6 primary key
标识该字段为该表的主键,可以 唯一的标识记录
单从约束角度来说primary key 就等价于 not null unique # 非空 且不能重复
用法:create table t11(id int primary key);
desc t11;
insert into t11 values(1),(1); # 报错
insert into t11 values(1),(2);
########################################
Innodb存储引擎在建表的时候,要求表必须有且只有一个主键
1. 当你没有设置主键的时候,会自上往下寻找非空且唯一的约束字段自动将其升级为主键字段
2. 当你的表中没有任何约束字段的时候, Innodb会使用内部隐藏一个主键字段;但无法利用该主键字段加快查询
通常情况下 每张表都必须有一个能够唯一标识数据的编号字段
id 这个id字段一般也是主键字段
#########################################
联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键
如:create table t18(
ip char(16),
port int,
primary key(ip,port)
);
desc t18;
2.7 auto_increment
标识该字段的值自动增长(整数类型,而且为主键)
应用:主键 id 作为数据的编号,每次最好能自动递增
create table t13(
id int primary key auto_increment,
name char(16)
);
insert into t13(name) values(‘jason‘),(‘jason‘),(‘jason‘);
id字段自动从1开始递增
注意:auto_increment 通常都是加在主键上,并且只能给设置为 key 的字段加
通常都是跟primary key联合使用 create table t30(id int auto_increment);
主键设置成自增之后 id永远是增加 不会因为你数据的删除而重置
如果你想重置id,只能将表清空 ---> truncate 表名
原文:https://www.cnblogs.com/pupy/p/11379872.html
mysql约束条件整型_MySQL 表的操作相关推荐
- mysql约束条件整型_MySQL 数据类型(整型,浮点型,字符类型,日期类型,枚举和集合) 约束条件 自增...
存储引擎补充: 不同的应用软件处理不同类型的数据 MySQL5.5版本及以上默认的存储引擎为innodb innodb:支持行锁表锁,外键,事物,安全性更高,教myisam数据更安全 myisam:仅 ...
- float取小数点后几位_python Integer整型与Float浮点型操作
今天学习python的Integer整型与Float浮点型操作,并记录学习过程欢迎大家一起交流分享. 首先新建一个python文件命名为py3_integer_float.py,在这个文件中进行字符串 ...
- mysql查看表描述_MySQL表记录操作介绍(重点介绍查询操作)
MySQL表记录操作指的是对数据库表中数据进行CRUD增删改查操作,一下将一一给大家介绍,重点介绍查询操作. 一.插入数据(INSERT) 二.删除数据(DELETE) 三.修改数据(UPDATE) ...
- MYSQL数据库字段关联_MySQL数据库基础——操作关系表、连接查询
MySQL数据库基础入门--day11 一.操作关联表 1.关联关系: 关联关系有:多对一.多对多和一对多. 一对一关联关系可以应用在以下几方面: (1)分割具有很多列的表 (2)由于安全原因而隔离表 ...
- MySQL基本操作命令和数据表高级操作
数据库之MySQL基本操作命令 一.常用的数据类型 二.查看数据库.表和表结构 1.查看数据库 2.查看数据库包含的表 3.查看表结构 三.SQL语句 创建新的数据库 创建新的表 删除指定数据表 删除 ...
- 【MySQL】数据库基本操作、表的操作
一.数据库 1.什么是数据库 2.数据库基本操作 2.1.显示数据库 2.2. 创建数据库 2.3.选中数据库 2.4.删除数据库 3.数据库分类 4.MySQL 安装 二.数据表的使用 1. 常用数 ...
- Mysql数据库教程(第一章 表的操作)
Mysql数据库教程 前言 库的基本操作 一.数据类型 1.1 数值型 1.2 日期和时间类型 1.3 字符串类型 二.表的操作 2.1 创建表 2.2 删除表 2.3 修改表 2.4 显示表 三.创 ...
- mysql+显示表ddl_MySQL_DDL_数据库和表的操作
#一.创建表 语法: CREATE TABLE [IF NOT EXISTS] 表名( 字段名 字段类型 [字段约束], 字段名 字段类型 [字段约束], 字段名 字段类型 [字段约束] ); -- ...
- mysql 短整型_C++ int,short,long(详解版)
C++ 有许多不同类型的数据.变量根据其数据类型进行分类,并确定可能存储在其中的信息种类.在这些数据类型中,整型变量只能保存整数. 计算机程序从现实世界收集数据,并以各种方式操作它们.有许多不同类型的 ...
最新文章
- Warning message:In a + b : longer object length is not a multiple of shorter object length
- 思科分析引擎助力大型数据中心应用发展
- MySQL-性能优化_大表和大事务的常用处理方案
- 【解决办法】Oracle登录报错ORA-28000: the account is locked
- 开源视频会议bigbluebutton
- QT 动态创建对象(第一种方法)
- 使用 rapidxml 做配置文件
- angular8实现对象数组根据某个属性排序(多个也可以)
- css background 一半_CSS小技巧
- vue项目实践教程1:vux项目搭建和简介
- 下一个十年:练好内功被集成的弹性计算
- 云计算之openstack(N版)neutron网络服务最佳实践
- Extjs 4.1 学习笔记(二)(panel 自适应高度)
- 用Java实现并查集
- 3万一5万新能源电动汽车,3万内的新能源电动轿车
- 如何在UltraCompare中编辑文件?
- oracle 添加表权限不足,oracle 创建表空间报权限不足,引发的问题如下 | 学步园...
- ping服务器地址显示TTL传输中过期,ping公网固定IP出现: TTL 传输中过期,怎么处理?...
- Linux gpio 接口
- Java常用加密解密算法全解
热门文章
- javascript正则表达式复习
- Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
- android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
- access 如何使用dolby_用Access开发《生产管理系统》
- 乐高小颗粒履带机器人_乐高搭建+乐高编程…快带小朋友来漳州这家培训中心,边玩边学...
- mybatis mapper配置 bigint_Mybatis-Plus入门
- java方法重载_在Python中该如何实现Java的重写与重载
- 有了这些字体,才是高逼格的UI设计!
- matlab求解lmi,Matlab的LMI工具箱中最优化问题
- mysql 自定义函数 事务_MySQL存储过程、触发器、自定义函数、事务