表相关操作

表相关操作

1、存储引擎

1、存储引擎:是用于根据不同的机制处理不同的数据

2、查看MySQL中所有的引擎

​ show engines;

3、存储引擎几种常见类型

  1. innodb:默认使用的引擎
    • 支持事务
    • 行锁
    • 外键
  2. myisam:5.5之前的老版本使用的引擎
  3. memory:通电数据存在,断电丢失
  4. blackhole(黑洞):类似于队列中的数据,存进去即消失

插入数据验证引擎的作用:

使用不同引擎:

use db1;

create table t1(id int)engine=innodb;

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);

关闭服务器重启后

2、创建表完整的语法

约束条件:可有可无

宽度:限制某些数据类型的存储大小

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,'张全蛋');

注意:

​ 1、创建表字段名不能重复

create table test(id int,id int);

​ 2、创建最后一个字段不能在末尾加 ,号

create table test(id int,name varchar(18),);

​ 3、字段名必须要有字段类型与宽度,整型默认宽度是11,char默认宽度是1

3、字段类型

1、确定表结构

2、字段与字段类型

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,可设置宽度,若插入记录数据超过设置宽度,则正常显示,插入不足则会以空格补全

2、浮点型

1、float(宽度最大255)

2、double(宽度最大255)

3、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);

3、字符类型

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

4、日期类型

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类型

5、枚举与集合

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');

严格模式下,选择集合以外的数据会报错

4、约束条件

1、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

2、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');

3、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');

4、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');

5、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);

6、zerofill:使用0填充空格

create table u7(id int zerofill);

insert into u7 values(123);

7、default:约束默认值

create table u8(pwd varchar(20) default '000000');

5、严格模式

设置严格模式(管理员模式进入客户端修改)

1、查看数据库配置中变量名包含mode的配置参数:

show variables like "%mode%";

2、修改安全模式:

set session; # 局部有效,只在你当前操作的窗口有效

set global session; # 全局有效,永久有效

3、修改完之后退出当前客户端重新登录即可

set global sql_mode="strict_trans_tables,only_full_group_by";

posted @ 2019-12-11 19:10  Mr沈  阅读(198)  评论(0编辑  收藏  举报