今日内容概要

存储引擎

MySQL的数据类型

约束条件

今日内容详细

存储引擎

"""

针对不同的数据可以有不同的存储方式

存储引擎就相当于针对数据采用不同的存储方式

"""

查看mysql内部所有的存储引擎

show engines;

需要了解的

MyISAM 是mysql5.5版本之前默认的存储引擎

优点:存取数据速度较于innoDB更快

缺点:数据安全性不高

blackhole 黑洞(往里面写什么都会自动消失)

memory 内存(数据会全部存在内存中 断电全部丢失)

innoDB mysql5.5版本之后默认使用的存储引擎

优点:管理数据更加的安全、更加丰富的功能

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

insert into t2 values(1);

insert into t3 values(1);

insert into t4 values(1);

创建表的完整语法

create table 表名(

字段名1 字段类型[(宽度)约束条件],

字段名2 字段类型[(宽度)约束条件],

字段名3 字段类型[(宽度)约束条件],

...



1.[]包裹的都是可选参数(可写可不写,即不是必须的)

2.字段名和字段类型则是必须要写的

3.最后一个字段语句后不能有逗号

4.约束条件可以有多个 彼此之间空格隔开即可

create table t1(

id int,

name char,

password int #千万千万不要加逗号

);

字段类型

整型

tinyint 1个字节 可能包含正负数 也可以只是正数

smallint 2个字节 可能包含正负数 也可以只是正数

int 4个字节 可能包含正负数 也可以只是正数

bigint 8个字节 可能包含正负数 也可以只是正数

正负号需要一个比特位

"""

补充知识点

1个字节=8个比特位

(每一个比特位只能是数字0或者1)

00000000

10000000

11000000

"""

create table t2(id tintyint);

"""

默认是带正负号的

如果插入的数据超出了范围

1.5.6版本不会报错

会按照该字段最大限度存储

2.5.6版本之后由于严格模式的存在

会直接报错不让你插入数据

"""

如果你不想有正负号 你需要自己制定

create table t4(id int unsigned);

宽度唯独在整型部分表示的不是限制长度*******

了解即可

create table t5(x int(8) unsigned zerofill);

insert into t5 values(4294967296123);

insert into t5 values(66);

mysql> select * from t5;

+------------+

| x |

+------------+

| 4294967295 |

| 00000066 |

+------------+

2 rows in set (0.00 sec)

"""

针对整型括号里面的数字不是用来显示存储长度的

而是用来限制展示长度的

够位数正常显示

不够用0填充(空格填充)

"""

在定义整型字段的时候你不要考虑括号里面的数字**

create table t1(id int);

create table t1(id tinyint);

create table t1(id smallint);

create table t1(id bigint);

针对整型不要自己写宽度

严格模式

show variables like '%mode%';

+----------------------------+------------------------+

| Variable_name | Value |

+----------------------------+------------------------+

| binlogging_impossible_mode | IGNORE_ERROR |

| block_encryption_mode | aes-128-ecb |

| gtid_mode | OFF |

| innodb_autoinc_lock_mode | 1 |

| innodb_strict_mode | OFF |

| pseudo_slave_mode | OFF |

| slave_exec_mode | STRICT |

| sql_mode | NO_ENGINE_SUBSTITUTION |

+----------------------------+------------------------+

sql_mode严格模式

"""

能尽量少让数据库干活就尽量少干活

不在操作数据库的时候数据库只应该做存取数据的活

其他所有的活都不应该干

比如帮你修改数据长度

先计算当前数据类型最大能够存储的数据

之后按照最大的存储

在存储数据的时候,如果数据不合法数据库层面应该直接报错,而不是自己处理

"""

set global sql_mode ='STRICT_TRANS_TABLES';

要退出客户端重新登录即可

浮点型

小数

float(255,30) # 总共255位小数占30位

double(255,30) # 总共255位小数占30位

decimal(65,30) # 总共65位小数占30位

"""

三者的区别在于精确度不一样

float<double<decimal

针对精确度的问题,有时候数字类型都会有点偏差

有时候我们会将看似应该用数字存储的数据用字符串存储

"""

字符类型

在mysql中字符类型只有两类

1.char 定长(长度是固定的)

2.varchar 不定长(长度是可变的)

charI(4)#只能存四个字符,多了直接报错少了默认用空格补全

varchar(4)#只能存四个字符,多了直接报错少了有几个就存几个

"""

针对char不够位数用空格填充,但是你在将数据取出来的时候会自动帮你将之前的空格再异常掉

char_length 统计字符串长度

如果你想取消自动填充自动移除的功能 需要修改严格模式

"""

set global

sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";

一定要退出当前客户端再加入

"""

char与varchar的使用区别

"""

char

优点:存取数据的速度都很快(暴力 存取都是按照固定的长度)

缺点:浪费存储空间

varchar

优点:节省存储空间

缺点:存取速度较于char慢

"""

jason eva egon wusir

char(5)

jasoneva egon wusir

varchar(5)

1bytes+jason1bytes+eva1bytes+egon1bytes+wusir

先取1bytes里面包含了Jason数据的长度5 然后我就读5位

之后再读1bytes里面包含了eva数据的长度3 然后我就读3位

"""

后面我们在使用的时候用char还是用varchar

以前基本上用的都是char

现在varchar用的更加普遍

一般情况下用varchar具体可以根据业务情况而定

日期类型

分类

-date:2019-05-01 年月日

-time:11:11:11 时分秒

-datetime:2019-01-02 11:11:11 年月日时分秒

-Year:2019 年

create table student(

id int,

name char(16)

born_year year,

birth date,

study_time time,

reg_time datertime

);

insert into student values(1,'jason','2019','2019-05')

枚举与集合

枚举 单选

create table user(

id int,

name char(16),

gender enum('male','female','others')

);

在插入数据的时候针对enum字段 只能插入括号内列举的

集合 多选

create table teacher(

id int

name char(16),

hobby set('read','sleep','sanna','abj')

);

约束条件

约束条件其实就是对字段额外的限制

not null 该字段不能为空

create table t17(id int,name varchar(4)not null);

insert into t17 values(1,null);#报错 不能插入null

"""在往表中插入数据的时候可以指定字段插入"""

insert into t17(id)values(666);#报错 name字段必须给支

2.default 默认值

"""

你不给值就用默认的,如果你给了就用你给的

"""

3.unique 唯一

"""

该字段在整个表中都不能有重复的数据出现

"""

联合唯一

单个字段可以出现重复,但是多个字段联合起来的结果必须是唯一的

约束条件之primary key

primary key 主键

"""

在限制层面上的效果等价于

not null+nnique

但是它除了上述效果之外还有特定的功能

类似于书的目录,能够加快数据的查询速度

"""

create table t20(id int primary key);


1.在innoDB存储引擎中规定所有的表都必须有且只有一个主键

2.如果你没有指定的话,那么InnoDB会自己用一个隐藏字段作为主键

以后我们正儿八经的创建表的时候就需要加上主键

并且我们通常都是将表的ID字段作为主键


create table t22(id int primary key auto_increment,name varchar(16));

结论

以后主键都是固定写法

in int primary key auto_increment

扩展

1.一张表中必须有且只有一个主键,如果你没有设置主键,那么会从上到下搜索直到遇到一个非空且唯一的字段

自动将其设置为主键

2.联合主键 使用较少

多个字段组合到一起形成一个主键,其本质其实还是一个主键

HTML 5196 字节 465 单词 276 行

MySQL日常笔记第二讲的更多相关文章

  1. mysql 学习笔记 第二天

    插入表格数据: Insert into table_name set columns_1=value1,columns_2=value2,对于没有赋值的列,将会取默认值,并且这个方法只能一次插入一个数 ...

  2. mysql日常笔记(持续更新)

    常用场景 sql_mode问题:http://blog.csdn.net/ccccalculator/article/details/70432123 连续日期补全/数据补零操作 在不使用存储过程和函 ...

  3. MySQL实战45讲学习笔记:日志系统(第二讲)

    一.重要的日志模块:redo log 1.通过酒店掌柜记账思路刨析redo log工作原理 2.InnoDB 的 redo log 是固定大小的 只要赊账记录在了粉板上或写了账本上,之后即使掌柜忘记了 ...

  4. 基于微信公众平台的开发(清华大学第二讲)_Alien的笔记

    基于微信公众平台的开发(清华大学第二讲)_Alien的笔记 基于微信公众平台的开发(清华大学第二讲)

  5. MySQL日常使用笔记

    逍遥山人的MySQL使用笔记,持续更新中 表结构 新建表以及添加表和字段的注释 create table t_user( ID INT(11) primary key auto_increment c ...

  6. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  7. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  8. MySQL提升笔记(3)日志文件详解

    在MySQL数据库和InnoDB存储引擎中,有很多种文件,如:参数文件.日志文件.socket文件.pid文件.MySQL表结构文件.存储引擎文件. 本节重点关注日志文件,MySQL的复制.事务等重要 ...

  9. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

随机推荐

  1. C# 读取txt文件生成Word文档

    本文将以C#程序代码为例介绍如何来读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: Visual Studio 2017 .Net Framework 4.6.1 ...

  2. NOIP PJ/CSP-J 题目选做

    1. luoguP7074 [CSP-J2020] 方格取数 2. luoguP5662 [CSP-J2019] 纪念品 3. luoguP2671 [NOIP2015 普及组] 求和 4. luog ...

  3. oracle 相关查询和非相关查询,oracle 去除重复数据,以及oracle的分页查询!

    一.oracle中的相关查询?和非相关查询? 二.oracle去除重复数据 1. 2. 3.oracle 实现分页? 利用rownum的唯一性,和子查询,将rownum从伪列变成实际列!

  4. 微服务架构 | 10.2 使用 Papertrail 实现日志聚合

    目录 前言 1. Papertrail 基础知识 1.1 Papertrail 特点 1.2 Papertrail 是什么 2. 使用 Papertrail 进行日志聚合的示例 2.1 创建 Pape ...

  5. Codeforces Round #742 (Div. 2)

    A. Domino Disaster 思路 按照题意模拟即可 如果是 对应关系为R --> R L --> L U --> D D --> U AC_CODE inline v ...

  6. 7.2.*PHP编译安装时常见错误解决办法,php编译常见错误

    configure: error: Cannot find ldap.h   检查下面是不是已经安装,如果没有安装之:检查:yum list openldapyum list openldap-dev ...

  7. Java基础复习(七)

    一.基本语法 1. java没有sizeof.goto.const这些关键字,但不能用goto.const作为变量名,虽然可以用sizeof,但为啥非得要用这个呢. 2.十六进制数以0x或0X开头: ...

  8. java_JDBC,连接数据库方式,RestSet结果集,Statement,PreparedStatement,事务,批处理,数据库连接池(c3p0和Druid)、Apache-DBUtils、

    一.JDBC的概述 1.JDBC为访问不同的数据薛是供了统一的接口,为使用者屏蔽了细节问题.2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作 ...

  9. logback1.3.x配置详解与实践

    前提 当前(2022-02前后)日志框架logback的最新版本1.3.0已经更新到1.3.0-alpha14版本,此版本为非stable版本,相对于最新稳定版1.2.10来说,虽然slf4j-api ...

  10. 通过C#在控制台输出各种图形文字

    这不是要准备公司年会了嘛 每个部门抓壮丁,必须安排至少一个节目 想着上去唱首歌算了,被毙,没有部门特色 妈蛋,唱歌没特色,那隔壁在前线工作的部门要表演个啥,抄表? 冥思苦想之下,给节目加了点部门特色, ...