关于库的知识
1.在不同的面板进行库的创建
1.1在workbench 上面进行创建数据库(图像化的操作面板)
1.2在sql
CREATE SCHEMA db_11_20
DEFAULT CHARACTER SET utf8mb4;
2.关于 删除库的操作
2.1 workbench操作 drop DATABASE db_11_20
;
2.sql
——关于删库的操作引申
drop、delete 与 truncate 区别?
用法不同
-
drop(丢弃数据):
drop table 表名
,直接将表都删除掉,在删除表的时候使用。 -
truncate (清空数据) :
truncate table 表名
,只删除表中的数据,再插入数据的时候自增长 id 又从 1 开始,在清空表中数据的时候使用。 -
delete(删除数据) :
delete from 表名 where 列名=值
,删除某一列的数据,如果不加 where 子句和truncate table 表名
作用类似。
truncate 和不带 where 子句的 delete、以及 drop 都会删除表内的数据,但是 truncate 和 delete 只删除数据不删除表的结构(定义),执行 drop 语句,此表的结构也会删除,也就是执行 drop 之后对应的表不复存在。
属于不同的数据库语言
truncate 和 drop 属于 DDL(数据定义语言)语句,操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。而 delete 语句是 DML (数据库操作语言)语句,这个操作会放到 rollback segement 中,事务提交之后才生效。
DML 语句和 DDL 语句区别:
-
DML 是数据库操作语言(Data Manipulation Language)的缩写,是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。
-
DDL (Data Definition Language)是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的操作语言。它和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。DDL 语句更多的被数据库管理员(DBA)所使用,一般的开发人员很少使用。
执行速度不同
一般来说:drop>truncate>delete(这个我没有实际测试过)
关于字符编码的知识
1.利用一张不重复的表格,建立字符与数据的一一对应的关系
建立编码表 (encoding table)
eg:针对英语使用群体的表的制定 ASCLL (American Standard Code For Information Interchange) 最后的对于其他语言发明使用了Unicode 当然 包含 ASCLL
//但是Unicode 并不是真正储存的在硬盘上的 编码
for 节省空间 采用了其他的编码语言 例如 utf-8是中文使用的编码。//
所以也就是 当使用了 utf-8 背后就必然是unicode 的编码了。
并且字符集的依据传导性的原理 要求链条上人人不能出错。
而使用统一的字符集编码 则是最简单的方法。
MySQL 的字符继承规则
//之前的 utf-8不适合emoji字符
而在之后推出的 utf-8mb4 支持全部字符
因此进行建库的操作时 字符集的编码默认使用utf8mb4//
库的字符集——表的默认字符集——字段的默认字符集
1.当正向操作的时候设置了 库的字符集之后 那么之后的表的 以及字段的编码 字符集也是 同样
反之 ,先进行表的字符集 或者字段的编码的创建的话 那么上一个等级 的字符集 不会随之更改
如果要进行字符集的 的修改 最好直接进行删库的操作 而不是逆序的改字符集。
字符集具有传递性:要求从 client service的字符集 表意相同不至于乱码和出现错误
关于表的操作
数据的类型
1数值类型 :整型 和非整型
整型:
int (此时的数据类型不区分大小写)
tinyint < smallint <int <bigint
浮点(有精度损失的小数):
float<double
带有精度的小数
decimal、numeric
2.
2.1字符串类型/二进制数据
char vachar 80%的应用场景
定长 和 非定长的区别
char 长度为4个字符(不是字节)的数据类型 无论什么长度都占用4个字符 一个字符的长度为2个字节 一个字节8位
varchar 则不定长 最多为四个字符
字符串更长的情况 text
smalltext < text < longtext
2.2二进制的数据类型(声音 图像)
blob (Binary LArge OBject) 较大的二进制对象
blob < longblob
3.时间的数据类型
(凡是涉及到时间,都有一个很重要的概念:时区(timezone)
我们的时区 东+8时区
//概念:时间戳timestamp 从1970-1-1 开始经过的秒数(格兰维治时区)优点:占用空间小 缺点: 时间跨度小 1970-2036
//
date
time
datetime
timestamp
对于数据中的时间则使用字符串来表示
“2021-11-20 10:02:02”
在MySQL的语法之中使用 单引号(‘)或(“)都可表字符串
重点数据类型: int\varchar\text\blob\date\time\datetime
约束(constrait):用来约定字段数据的范围,支持那些数据,不支持那些数据。
PK\NN\UQ\AI\DEFAULT\COMMENTS
PK 主键
NN 不能为null
UQ 唯一的,不能重复的信息
B 二进制的方法显示
UN 无符号
ZF 用“0”填充显示
AI 自增
G 暂无用途
default/express 该字段的默认值
comment 该字段的描述
1.主键 PK
关系型数据库要求 对于一张表,必须有主键
主键:一条的记录的唯一标识 ,不能重复
通过主键,一定可以唯一确定一条记录
//
例如身份证号 学号 卡号
而在实际的生活之中 还可以利用几个字段的联合,来确定一条唯一的记录。
例如一个地址//
TCP连接:五元组(协议+源ip+源port+目标ip+目标port)
实操之中,建议,主键(PK)使用int bigint
配合 AI使用
NN
不许为空
1.关于对于NN的理解 一般代表该字段的不可知,不可记录
关于null&&Default的四种情况的讨论
ps:
UQ
该字段的值不可以重复
Default
insert 某一个值为一个新字段时。
要么,为字段的插入值,要么该字段有默认值。
ID 自增视为有默认值
几种情况的讨论 关于insert
库、表、字段 都支持comment 为了说明用途
表的结构
名称+数据类型+约束