300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql引擎模式_mysql引擎 完整的见表语句 数据库模式 常用数据类型 约束条件...

mysql引擎模式_mysql引擎 完整的见表语句 数据库模式 常用数据类型 约束条件...

时间:2023-02-17 00:34:29

相关推荐

mysql引擎模式_mysql引擎 完整的见表语句 数据库模式  常用数据类型 约束条件...

引擎

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%" 查看当前数据库模式,%代表模糊查找

setglobal 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) 234 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模式 来让它现出原形

setglobal sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"设置完成后重启msyql 再次查询长度

时间类型

year:年 yyyy(1901/2155)

date:年-月-日 yyyy-MM-dd

time:时分秒 HH:mm:ss

datetime:年月日时分秒 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,-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 )notnull:不能为空

default:默认值

unsigned : 无符号

zerofill : 0填充

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。