表的操作

创建表的完整语法:

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 表的操作相关推荐

  1. mysql约束条件整型_MySQL 数据类型(整型,浮点型,字符类型,日期类型,枚举和集合) 约束条件 自增...

    存储引擎补充: 不同的应用软件处理不同类型的数据 MySQL5.5版本及以上默认的存储引擎为innodb innodb:支持行锁表锁,外键,事物,安全性更高,教myisam数据更安全 myisam:仅 ...

  2. float取小数点后几位_python Integer整型与Float浮点型操作

    今天学习python的Integer整型与Float浮点型操作,并记录学习过程欢迎大家一起交流分享. 首先新建一个python文件命名为py3_integer_float.py,在这个文件中进行字符串 ...

  3. mysql查看表描述_MySQL表记录操作介绍(重点介绍查询操作)

    MySQL表记录操作指的是对数据库表中数据进行CRUD增删改查操作,一下将一一给大家介绍,重点介绍查询操作. 一.插入数据(INSERT) 二.删除数据(DELETE) 三.修改数据(UPDATE) ...

  4. MYSQL数据库字段关联_MySQL数据库基础——操作关系表、连接查询

    MySQL数据库基础入门--day11 一.操作关联表 1.关联关系: 关联关系有:多对一.多对多和一对多. 一对一关联关系可以应用在以下几方面: (1)分割具有很多列的表 (2)由于安全原因而隔离表 ...

  5. MySQL基本操作命令和数据表高级操作

    数据库之MySQL基本操作命令 一.常用的数据类型 二.查看数据库.表和表结构 1.查看数据库 2.查看数据库包含的表 3.查看表结构 三.SQL语句 创建新的数据库 创建新的表 删除指定数据表 删除 ...

  6. 【MySQL】数据库基本操作、表的操作

    一.数据库 1.什么是数据库 2.数据库基本操作 2.1.显示数据库 2.2. 创建数据库 2.3.选中数据库 2.4.删除数据库 3.数据库分类 4.MySQL 安装 二.数据表的使用 1. 常用数 ...

  7. Mysql数据库教程(第一章 表的操作)

    Mysql数据库教程 前言 库的基本操作 一.数据类型 1.1 数值型 1.2 日期和时间类型 1.3 字符串类型 二.表的操作 2.1 创建表 2.2 删除表 2.3 修改表 2.4 显示表 三.创 ...

  8. mysql+显示表ddl_MySQL_DDL_数据库和表的操作

    #一.创建表 语法: CREATE TABLE [IF NOT EXISTS] 表名( 字段名 字段类型 [字段约束], 字段名 字段类型 [字段约束], 字段名 字段类型 [字段约束] ); -- ...

  9. mysql 短整型_C++ int,short,long(详解版)

    C++ 有许多不同类型的数据.变量根据其数据类型进行分类,并确定可能存储在其中的信息种类.在这些数据类型中,整型变量只能保存整数. 计算机程序从现实世界收集数据,并以各种方式操作它们.有许多不同类型的 ...

最新文章

  1. Warning message:In a + b : longer object length is not a multiple of shorter object length
  2. 思科分析引擎助力大型数据中心应用发展
  3. MySQL-性能优化_大表和大事务的常用处理方案
  4. 【解决办法】Oracle登录报错ORA-28000: the account is locked
  5. 开源视频会议bigbluebutton
  6. QT 动态创建对象(第一种方法)
  7. 使用 rapidxml 做配置文件
  8. angular8实现对象数组根据某个属性排序(多个也可以)
  9. css background 一半_CSS小技巧
  10. vue项目实践教程1:vux项目搭建和简介
  11. 下一个十年:练好内功被集成的弹性计算
  12. 云计算之openstack(N版)neutron网络服务最佳实践
  13. Extjs 4.1 学习笔记(二)(panel 自适应高度)
  14. 用Java实现并查集
  15. 3万一5万新能源电动汽车,3万内的新能源电动轿车
  16. 如何在UltraCompare中编辑文件?
  17. oracle 添加表权限不足,oracle 创建表空间报权限不足,引发的问题如下 | 学步园...
  18. ping服务器地址显示TTL传输中过期,ping公网固定IP出现: TTL 传输中过期,怎么处理?...
  19. Linux gpio 接口
  20. Java常用加密解密算法全解

热门文章

  1. javascript正则表达式复习
  2. Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
  3. android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
  4. access 如何使用dolby_用Access开发《生产管理系统》
  5. 乐高小颗粒履带机器人_乐高搭建+乐高编程…快带小朋友来漳州这家培训中心,边玩边学...
  6. mybatis mapper配置 bigint_Mybatis-Plus入门
  7. java方法重载_在Python中该如何实现Java的重写与重载
  8. 有了这些字体,才是高逼格的UI设计!
  9. matlab求解lmi,Matlab的LMI工具箱中最优化问题
  10. mysql 自定义函数 事务_MySQL存储过程、触发器、自定义函数、事务