博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql引擎,完整的见表语句,数据库模式, 常用数据类型,约束条件
阅读量:4703 次
发布时间:2019-06-10

本文共 2931 字,大约阅读时间需要 9 分钟。

 引擎

show engines : 查看引擎innodb(默认引擎):支持事务,行级锁,外键myisam:查询效率由于innodb,不需要支持事务,行级锁,外键,可以选用myisam来优化数据库mysql> create table t1(id int)engine=innodb;mysql> create table t2(id int)engine=myisam;mysql> create table t3(id int)engine=blackhole;mysql> create table t4(id int)engine=memory;
eg:   create table t1(name char,id int) engine=innodb   insert into t1 values(1)

一个完整的建表语句

create table 表名 (   字段名1 类型[(宽度)约束条件],   字段名2 类型[(宽度)约束条件],   字段名3 类型[(宽度)约束条件], )engine=innodb charset="utf8"; #engine 指引擎,charset指字符编码集

数据库模式:

 严格模式:超出范围报错      非严格模式:超出范围不报错

show variables like "%sql_mode%"  查看当前数据库模式,% 代表模糊查找set global sql_mode="strict_trans_tables";     设置数据库模式no_engine_substitution:非安全性,默认strict_trans_tables:安全模式(严格模式)

mysql数据类型

规定数据存放的哪些数据 整形 浮点型 字符型 时间类型 枚举类型 集合类型

 整形:(长度默认是11)

整形: 不同类型所占字节数不一样,决定所占空间及存放数据大小限制 tinyint:1字节  -128 到 127smallint:2字节mediumint:3字节int:4字节bigint:8字节

形式  tinyint    smallint   mediumint   int    bigint

字节  1(255)        2          3         4       8

 

宽度:

1.不能决定整形存放数据的宽度,超过宽度可以存放,最终由数据类型所占字节决定

2.如果没有超过宽度,且有zerofill限制,会用0填充前置位的不足为

3.没有必要规定整形的宽度,默认设置的宽度就为最大宽度

 整形的限制:不是容量限制,而是显示宽度

   create table t1(id int(5) zerofill)  当查看的数是小于长度5,用0补上

 浮点型

   float   double     decimal 字节   4       8       (自定义)
float:4字节         精度最低,最常用double:8字节        精度高,占位多decimal:自定义字节   字符串存,全精度 float(M,D) M为总位数,D为小数位 根据总位数可以算出整数位的位数float(6,3)

字符集

char:定长    一定按规定存放数据,以规定宽度读取数据varchar:不定长    首先根据数据长度计算宽度,并在数据开始以数据头方式将宽度信息保存起来,计算耗时 宽度:char(4):以四个字符长度存储,超出报错浪费空间,以空间换取时间效率,减少IO varchar(4):数据长度决定字符长度,但也不能超出长度,节省空间 总结:数据长度相近的数据提倡用char来存取数据,数据需要高速存取,异空间换时间 char(3)  在硬盘保存为3 字符长度     yxx exx lxx zxx char(3) 如果是char类型 ,数据不足,空格补全 smysql自动去除空格 select *from t1 where name='yh'
 

char 存取效率高/ 浪费存储空间

varchar 存取效率低于char/节省存储空间

字符串现出原形:

char_length(x)  字符的个数我们可以设置sql模式 来让它现出原形set global sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"设置完成后重启msyql 再次查询长度

 

时间类型

year:年  yyyy(1901/2155)date:年-月-日  yyyy-MM-ddtime:时分秒   HH:mm:ssdatetime:年月日时分秒 yyyy-MM-dd HH-mm-ss    可以为空,不依赖时区timestamp:年月日时分秒 yyyy-MM-dd HH-mm-ss   不能为空,默认位当前时间,依赖时区 共同点: 时间存取通过字符串类型 都可以使用now()函数来插入当前时间

create table student(

    id int primary key auto_increment,

    name char(16),

    born_year year,

    birth date,

    class_time time,

    reg_time datetime

);

insert into student value(2,'zxx',2000,2018-11-11,now(),now());

枚举与集合

枚举 enum:单选集合 set:多选 性别:单选 爱好:多选create table t1 (  sex enum('male',"female","wasai") not null default "wasai"",  #枚举  hobbies set("play","read","music")  #集合);insert into t1(sex,hobbit) values("male","play,read");

约束条件

foreign ket:外键(联合索引)主键: 表默认都有主键primary key:主键(不为空,唯一性)单例主键:create table t1(id int primary key)联合主键:create table t1(ip char(16),port int,primary key(ip,port))唯一性:unique key: 唯一性约束,联合唯一单列唯一(单个字段不能重复)create table t1(id int unique)联合唯一(指联合的字段不能同时重复)create table t1(  ip char(16),  port int,  unique(ip,port))自增:auto_increment:自增,只能跟key字段连用create table t1(id int primary key auto_increment )not null:不能为空default:默认值unsigned : 无符号zerofill : 0填充

 

转载于:https://www.cnblogs.com/liu--huan/p/9637309.html

你可能感兴趣的文章
ES5初尝试Object.create
查看>>
NTP校时设置
查看>>
Perl 面对对象的案例理解
查看>>
两数组比较,筛选出不同元素(附数组去重)
查看>>
C#dataset中数据导出到excel
查看>>
node和yarn
查看>>
Java连接MySQL数据库——含详细步骤和代码
查看>>
fast-json 内幕
查看>>
固定导航栏demo
查看>>
前端通信、跨域
查看>>
MD5加密
查看>>
如何向ASP.NET Web 服务器控件添加客户端脚本事件
查看>>
quick check
查看>>
陶瓷天线
查看>>
Android 环信聊天头像昵称显示解决方案
查看>>
Android 快速开发系列 ORMLite 框架最佳实践
查看>>
设计模式 单例模式
查看>>
springmvc返回值、数据写到页面、表单提交、ajax、重定向
查看>>
JQuery插件使用小结
查看>>
C#:String.Format数字格式化输出
查看>>