创建数据表

基本语法:

 create  table  数据表名称(
字段名称 字段类型 字段约束,
...
)[表选项];

字段类型

整数型

 tinyint :占用1个字节的长度,无符号型,可以表示0-255,有符号型,可以表示-128-127
smallint :占用2个字节的长度,无符号型,可以表示0-65535,有符号型,可以表示-32768-32767
mediumint :占用3个字节的长度,无符号型,可以表示0-16777215,有符号型,可以表示-8388608-8388607
int :占用4个字节的长度,无符号型,可以表示0-4294967295,有符号型,可以表示-2147483648-2147483647
bigint :占用8个字节的长度

使用推荐

 ①对于人的年龄,建议使用tinyint
②对于动物的年龄,建议使用smallint
③对于文章的数量,建议使用mediumint
④对于商品的数量,建议使用int
⑤对于大型的整型计数,建议使用bigint

插入科学计数法

 insert into sh_int(id3) values (1.23e5);
结果:12300

小数型

 ①浮点型
float(M,D):占用4个字节的存储空间,能表示的十进制有效位:8位
double(M,D):占用8个字节的存储空间,能表示的十进制有效位:16位
②定点型
decimal(M,D):占用空间不是固定的,变长。
记住:M代表总长度(包括整数部分+小数部分),D小数点后面的位数。

如果decimal没有指定M与D,则默认返回整数,小数位会自动采用四舍五入。

在小数类型中,其M值一定不能超过指定的M值,否则无法插入数据。

在小数类型中,如果D值超过了指定的D值,其是可以正常插入的,但是其结果会进行四舍五入。

如果整数位+小数位超过了M,整数部分没有越界但是小数部分越界了,四舍五入,???从高位起,能存几位,存几位???

字符串型

char与varchar

 char(M)类型:定长,M的最大值为255,对编码格式没有要求
varchar(M)类型:变长,M的理论值65535,但是还要特别注意,
其还需要1-2个字符存储长度信息,而且还需要1个字符左右存储额外的信息(如Null)。
所以实际上它真正能使用存储数据的大约只有65532。
另外M还与编码格式有关,如果GBK格式,还需要除2,如果是UTF8还要除3。

char与varchar区别

 存储方式不同:
char固定长度,先开辟内存空间,然后在存储数据。如果数据没有填充满M长度,则会造成空间的浪费。
varchar变长,先开辟内存空间,根据存储的数据调整空间大小,避免空间的浪费
效率也不同:
char是固定长度,不需要额外的计算,所以其效率要高于varchar类型。
两者对于空格的处理方式不同:
char类型:会自动去除元素的首位空格
varchar类型:会自动保留元素的首位空格

text文本类型

使用text文本类型用于存储数据,例如存储文章的内容、产品的详细介绍...

创建文章表,基本语法:

 create  table  sh_article(
id mediumint,
title varchar(40),
description varchar(255),
content text
) engine = myisam default charset=utf8;

blob二进制类型

 blob可以保存二进制数据,
在实际应用中可以保存图片、附件等资源。
但是在实际应用中,此类型很少使用,
实际资源数据通常是以路径方式进行保存,而不会资源本身,对于空间过于浪费。

enum枚举类型(多选一,单选情况)

基本语法:

 create  table  sh_user(
id int,
username varchar(10),
password char(32),
age tinyint unsigned,
sex enum(‘男’,’女’,’保密’),
address varchar(255)
) engine = myisam default charset=utf8;

在实际应用中,enum中的选项是由数量限制的,数量为65535。

set集合类型(复选情况)

复选框情况在实际保存时,通常是这样保存的:项1,项2,项3...

基本语法:

 create  table  sh_user(
id int,
username varchar(10),
password char(32),
age tinyint unsigned,
sex enum(‘男’,’女’,’保密’),
hobby set(‘吃饭’,’睡觉’,’打豆豆’),
address varchar(255)
) engine = myisam default charset=utf8;

时间类型

基本语法:

 create  table  sh_time(
dt datetime,
ts timestamp,
d date,
t time,
y year
) engine = myisam default charset=utf8;

相关细节

 ①datetime与timestamp类型的区别?
第一:两者表示的范围不同,datetime范围更广
第二:timestamp不能为空,其拥有默认值,默认值为当前服务器的时间,而且在当前记录更新时,其时间字段也会随之更新。 ②在实际项目开发中,一般我们选择哪种时间类型呢?
如果我们使用PHP编程语言,一般情况下在存储时间时,通常不会使用时间类型,而是使用int类型进行存储。
在PHP中,可以使用time()获取当前时间的时间戳,其返回一个整数,存储比时间类型更加节省空间,而且PHP中的内置函数,提供了对时间的格式化函数date()函数。
<?php
$addtime = time();
echo ‘datetime:’.date(‘Y-m-d H:i:s’,$addtime);
?>

探究varchar类型的最大值

1、gbk格式

2、utf8格式

字段约束

00、unsigned无符号型

基本语法:

 ①创建时指定无符号型
create table 数据表名称(
字段名称 整数类型 unsigned,
...
) [表选项]; ②修改字段的类型
alter table 数据表名称 modify 字段名称 字段类型 unsigned;

0、zerofill零填充

基本语法:

 ①使用desc查看数据表的表结构
desc sh_int;
②zerofill零填充
在MySQL中,整数型数据后面的数字只和zerofill有关系,代表0填充,
5 如果当前字段为无符号型,默认长度为4,但是实际输入的数据只有2位,则系统会自动在前面添加两个0,形成00数据.

1、空值约束

基本语法:

 create  table   sh_goods(
id int not null,
title varchar(40) not null,
description varchar(255),
price decimal(11,2) not null,
content text,
addtime int
) engine = myisam default charset=utf8;

2、主键约束

主键约束:强调数据不能为空、强调数据不能重复。

基本语法:

 //第一种
create table sh_goods(
id int not null primary key,
title varchar(40) not null,
description varchar(255),
price decimal(11,2) not null,
content text,
addtime int
) engine = myisam default charset=utf8; //第二种
create table sh_goods(
id int not null,
 title varchar(40) not null,
description varchar(255),
price decimal(11,2) not null,
content text,
addtime int,
 primary key(id)
) engine = myisam default charset=utf8; //第三种
alter table sh_goods add primary key(id);

自动增长

基本语法:

 create  table  sh_goods(
id int not null auto_increment,
title varchar(40) not null,
description varchar(255),
price decimal(11,2) not null,
content text,
addtime int,
primary key(id)
) engine=myisam default charset=utf8;

查看自动增长,其每次增长的步长,基本语法:

 show variables like ‘auto_increment%’;

设置步长

 set auto_increment_increment=5;

设置起始值

 alter table sh_goods auto_increment=60;

默认值(default)

基本语法:

 create  table  sh_user(
id int,
username varchar(10),
password char(32),
age tinyint unsigned,
sex enum(‘男’,’女’,’保密’) default‘女’,
hobby set(‘吃饭’,’睡觉’,’打豆豆’),
address varchar(255)
) engine = myisam default charset=utf8;

触发方式一共有两种形式:

①插入数据时,不插入默认值字段

②插入数据时,默认值字段使用default

字段备注(comment)

基本语法:

 create  table  数据表名称(
字段名称 字段类型 字段约束 comment ‘字段备注’
)[表选项];

唯一键约束(unique key)

主键强调:不能为空,不能重复。

唯一键强调:不能重复,但是可以为空。为空字段会自动忽略。

基本语法:unique [key]

 第一种创建方式:
create table 数据表名称(
id int unique key
)[数据表选项]; 第二种创建方式:
create table 数据表名称(
id int,
unique key(id)
)[数据表选项]; //第三种创建方式
alter table 数据表名称 add unique key(id);

唯一键删除

 alter  table  数据表名称  drop  index  唯一键名称;

逐渐删除

 alter  table  数据表名称  drop   primary key;

###################################################################

MySQL开发——【字段类型、约束】的更多相关文章

  1. MySQL 常用字段类型,介绍及其建表使用方法经验分享

    由于工作的公司没有专业的DBA又经常需要建立各种各种的表来满足自己的业务逻辑,所以经常查看MySQL 手册或者谷歌查看相关资料,所以本人就根据我的工作经验和相关资料来介绍一下MySQL各种字段类型及其 ...

  2. Oracle与mysql的字段类型整理

    Oralce的字段类型整理如下: Mysql的字段类型整理如下: 最后面一栏是对应JAVA的基本类型.希望对初学者有用,初学者在学习JAVA的时候,不知道怎么把JAVA的对象指向到ORALCE或者MY ...

  3. MySQL字段类型 约束

    目录 MySQL存储引擎 非空约束 字段类型 整形类型INT TINYINT 浮点类型float 字符类型char varchar 日期类型 枚举集合 约束条件 主键 自增 unsigned无符号 z ...

  4. MySQL中字段类型为timestamp的小坑

    之前遇到过一个MySQL的字段为timestamp类型的小坑. MySQL中一个字段存储时间类型数据的时候,该字段的类型如果为timestamp类型的话,最多只能存储到2038-01-19 11:14 ...

  5. Mysql修改字段类型

    mysql 修改字段长度 alter table news  modify column title varchar(130); alter table 表名 modify column 字段名 类型 ...

  6. Mysql中字段类型之时间戳大坑2

      本文的内容依旧是讨论mysql字段类型为时间戳timestamp的问题,在遇到了之前的那个问题之后,今天测试人员又给我提了一个bug,是在前端页面提交会议表单的时候,选择了一个会议时间(2059年 ...

  7. mysql 修改字段类型

    1.更改Float字段类型to Decimal ALTER TABLE 表名 MODIFY 字段名 decimal(10,2) not null default '0': 如: ALTER TABLE ...

  8. Mysql中字段类型之时间戳大坑

         一 .环境说明: 在目前项目中,有这样的一张表,用来记录会议的相关信息,例如:会议的内容.会议的参会人员.会议的地点.会议的状态(会议是否已结束.会议是否被撤销).会议的开始时间以及该条信息 ...

  9. mysql数据库字段类型的选择原则

    原文链接:http://blog.csdn.net/u013412790/article/details/51615407 数据库类型的选择对数据库的性能影响很大 1 . 数据类型会影响存储空间的开销 ...

  10. MySQL 常用字段类型与对应的Java类型

    varchar 不定长字符串 字符串或是没有合适类型时,可以选择它作为字段类型 对应Java中的String int bigint 数值 一般以int作为数字的默认选择,数值很大时使用bigint 对 ...

随机推荐

  1. 手把手教你实现 Google 拓展插件(转自实验楼)

    一.课程简介 1.1 实验介绍 本课程的实验环境由实验楼提供,Google 浏览器拓展的运行环境为 Google 浏览器.在本实验中,你将了解如何制作一个属于你自己的 Google 拓展插件. 课程实 ...

  2. HTTP Request & Response

    Request & Response header details can be found here The request method indicates the method to b ...

  3. storj白皮书v3最全面解读,Docker创始人的加入能否扳倒AWS S3

    Storj新发了白皮书v3,地址是:https://storj.io/storjv3.pdf. 这次白皮书一共有90页,看完还真要费不少时间.如果你没有时间看,可以看一下我这篇快速技术解读. 上次St ...

  4. html5 + shiro

    偶然与巧合 舞动了蝶翼 谁的心头风起 前赴而后继 万千人追寻 荒漠唯一菩提 似擦肩相遇 或擦肩而去 命运犹如险棋 无数时间线 无数可能性 终于交织向你

  5. Spring Bean生命周期详解

    对象生命周期:创建(实例化----初始化)---使用----销毁,而在Spring中,Bean对象周期当然遵从这一过程,但是Spring提供了许多对外接口,允许开发者对三个过程(实例化.初始化.销毁) ...

  6. 有一个VC的bug:非标准语法

    ---恢复内容开始--- 主函数中调用类的成员函数时报错: “error C3867:非标准语法:请使用 "&" 来创建指向成员的指针” 这时在函数前老老实实加上& ...

  7. C++ #define #if #ifndef 宏指令

    不会用就直接复制粘贴 #define CURSOR(top,bottom) (((top)<<8)|(bottom)) #define mul(x1,x2) (x1*x2) #define ...

  8. IntelliJ IDEA 构建maven多模块项目

    我们在开发中 因为项目之间需要依赖 所以会在maven创建多个项目配置依赖,这种项目结构主要应用在大型项目中,多人协作开发 1.创建一个项目 File ->NEW -> Projec 2. ...

  9. 《从零玩转python+人工智能-3》网易云课堂王顺子

    #1.145——152节课25章——面向对象三大特性小案例 class Animal: def __init__(self,name,age=1): self.name = name self.age ...

  10. spring boot报Unsupported Media Type Content type '*/*;charset=UTF-8' not supported

    1.请求设置Content-Type:application/json即可 ajax一般默认:Content-Type: application/x-www-form-urlencoded;chars ...