一、存储引擎:是用于根据不一样的机制处理不一样的数据python
二、查看MySQL中全部的引擎sql
show engines;数据库
三、存储引擎几种常见类型安全
插入数据验证引擎的做用:服务器
使用不一样引擎:session
use db1;3d
create table t1(id int)engine=innodb;blog
create table t2(id int)engine=myisam;排序
create table t3(id int)engine=blackhole;索引
create table t4(id int)engine=memory;
插入数据验证:
insert into t1 values(111);
insert into t2 values(222);
insert into t3 values(333);
insert into t4 values(444);
关闭服务器重启后
约束条件:无关紧要
宽度:限制某些数据类型的存储大小
create table 表名(字段名1 字段类型(宽度) 约束条件,字段名2 字段类型(宽度) 约束条件);
初始约束条件:not null # 约束插入记录时不能为空
例:create table t5(id int not null,name varchar(16));
insert into t5 values(null,'张全蛋');
》》》ERROR 1048 (23000): Column 'id' cannot be null
insert into t5 values(1,'张全蛋');
注意:
一、建立表字段名不能重复
create table test(id int,id int);
二、建立最后一个字段不能在末尾加 ,号
create table test(id int,name varchar(18),);
三、字段名必需要有字段类型与宽度,整型默认宽度是11,char默认宽度是1
一、肯定表结构
二、字段与字段类型
一、整型:
tinyint:默认范围(-128,127)
create table t5(id tinyint);
insert into t5 values(-128),(127);
插入id为空严格模式下会报错,非严格模式下不会报错可是没法插入数据,5.6.4版本为非严格模式,插入会成功插入可是会自动将值限定在范围内
insert into t5 values(-129);
insert into t5 values(128);
int:默认范围是(-2147483648, 2147483647)
create table t6(id int);
insert into t6 values(-2147483648),( 2147483647);
插入id为空严格模式下会报错,非严格模式下不会报错可是没法插入数据,5.6.4版本为非严格模式,插入会成功插入可是会自动将值限定在范围内
insert into t6 values(-2147483649);
int默认宽度是11,可设置宽度,若插入记录数据超过设置宽度,则正常显示,插入不足则会以空格补全
二、浮点型
一、float(宽度最大255)
二、double(宽度最大255)
三、decimal (宽度最大65)
字段特色(255,30)前一个数255表明最大的长度(包括小数),30表明是小数的位数
这三种浮点型区别:精确度逐渐增高
create table t8(sal float(255,30));
create table t9(sal double(255,30));
create table t10(sal decimal(65,30));
insert into t8 values(1.111111111111111111111111111111);
insert into t9 values(1.1111111111111111111111111111);
insert into t10 values(1.1111111111111111111111111111);
三、字符类型
char(16);指定定长字符16
create table t11(name char(16));
insert into t11 values('沈'); # 沈+15个空格
优势:存取速度快
缺点:浪费空间
varchar(16): 不定长字符
存几个符,就是几个字符的大小,每一个字符前都要有+1bytes
优势:节省空间
create table t12(name varchar(4));
insert into t12 values('a') # 1bytes+a
四、日期类型
date:2019-12-11
datetime: 2019-12-10 11:11:11
time:11:11:11
year:2019
timestamp:时间戳,用null自动记录当前时间,每次对那一条记录操做则会改变
create table student(id int,name varchar(4),birth date,register datetime,work_time year,t_time time,update_time timestamp);
insert into student values(1,'张全蛋','2000-12-11','2010-11-11 11:11:11','2019','11:11:12',null);
注意:python插入时间数据时,转成str类型
五、枚举与集合
enum:能够 多选一
create table t13(id int,name varchar(4),gender enum('male','female'));
insert into t13 values(1,'shen','male');
严格模式下,选择枚举之外的数据会报错
set:能够 多选一 或者多选多
create table t14(id int,name varchar(6),gender enum('male','female'),hobbies set('read','study','play'));
多选一
insert into t14 values(1,'tate','male','play');
多选多,顺序可不一致,按照建立的顺序自动排序
insert into t14 values(2,'shen','male','study,play,read');
严格模式下,选择集合之外的数据会报错
一、not null:设置不能为空
create table u1(id int not null);
insert into u1(id) values(1);
insert into u1(id) values(null); >>> ERROR 1048 (23000): Column 'id' cannot be null
二、unique:设置为惟一值(若是设置为null,能够重)
create table u2(id int unique,name varchar(4));
insert into u2 values(1,'shen');
insert into u2 values(1,'tate'); >>> ERROR 1062 (23000): Duplicate entry '1' for key 'id'
insert into u2 values(null,'shen');
insert into u2 values(null,'tate');
三、primary key ==》not null + unique :主键
pk就是表中的索引:能够经过索引快速查找某些数据,提升查询效率
将id设为主键,非空且惟一
create table u3(id int primary key,name varchar(4));
insert into u3 values(1,'tank');
insert into u3 values(2,'sean');
四、auto_increment:自增
须要与key连用,将指定的字符段会自动排序,不写指定的字符段会默认从1开始,指定一个值后面不写会自增
与unique连用,将指定的字符段会自动排序,不写指定的字符段会默认从1开始,指定一个值后面不写会自增
与primary key连用,不写指定的字符段会默认从1开始,也能够指定一个值后面不写会自增
create table u4(id int unique auto_increment,name varchar(4));
insert into u4(name) values('a');
insert into u4(name) values('c');
create table u5(id int primary key auto_increment,name varchar(4));
insert into u5(name) values('a');
insert into u5 values(3,'b');
insert into u5(name) values('c');
删除记录
delete from 表名;# 清空表中全部的记录,下次添加数据id默认从清空前开始
delete from u5;
insert into u5(name) values('d');
truncate table 表名;# 清空全部的记录,而且id重置为0
truncate table u4;
insert into u4(name) values('f');
五、unsigned:无符号
create table u6(id int unsigned);
insert into u6 values(-10); >>>ERROR 1264 (22003): Out of range value for column 'id' at row 1
insert into u6 values(0);
六、zerofill:使用0填充空格
create table u7(id int zerofill);
insert into u7 values(123);
七、default:约束默认值
create table u8(pwd varchar(20) default '000000');
设置严格模式(管理员模式进入客户端修改)
一、查看数据库配置中变量名包含mode的配置参数:
show variables like "%mode%";
二、修改安全模式:
set session; # 局部有效,只在你当前操做的窗口有效
set global session; # 全局有效,永久有效
三、修改完以后退出当前客户端从新登陆便可
set global sql_mode="strict_trans_tables,only_full_group_by";