数据库的存储引擎,数据类型,约束条件,严格模式

【一】存储引擎
1.什么是存储引擎
    存储引擎可以理解为处理数据的不同方式
2.查看存储引擎
    show engines;
3.须知的引擎
     MyISAM
        5.5之前版本MySQL默认的存储引擎
        特点:存取数据的速度快 但是功能很少 安全性较低
        速度快因为自带索引
      InnoDB
        5.5之后版本MySQL默认的存储引擎
        特点:有诸多功能 安全性较高 存取速度没有MyISAM快
      BlackHole(吃数据的黑洞)
        任何写入的数据都会立刻消失(类似于垃圾回收处理站)
      Memory(比作是缓存)
        以内存作为数据存取地 速度快但是断电立刻丢失 
4.自定义选择存储引擎语句
    create table t1(id int)engine=myisam;
【二】各个引擎的特点
1.innodb引擎
    frm : 存储的表结构
    ibd : 存储表的数据
    特点:存储数据持久化存储退出也存在
2.myisam引擎
    frm : 存储的表结构
    MYD : 表的数据
    MYI : 表的索引结构
    特点:存储数据持久化存储,退出也存在
3.blackhole引擎
    frm :存储的表结构
    特点:存储数据不会有任何反应,不会存储任何数据
4.memory引擎
    frm:存储的表结构
    特点就是基于内存存储,只要服务重启,所有数据丢失
【三】创建表的完整语法
create table 表名(
    字段名1 字段类型(数字) 约束条件,
    字段名2 字段类型(数字) 约束条件,
  字段名3 字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件可以写多个 空格隔开即可(后面详细讲解)
    字段名1 字段类型(数字) 约束条件1 约束条件2 约束条件3
4.最后一行字段结尾不能加逗号
    极其容易被忽略!!!
【四】约束条件(null)
约束条件之为空和不为空---》意思为这个字段的数据可以空还是不空
【五】严格模式
它要求数据库在执行某些操作时遵循更严格的规则和限制
sql_mode(严格模式)
show variables like "%mode";
show variables like "_mode";
 %匹配任意个字符
 _只能匹配单个字符
-- 临时修改 : 退出客户端重新连接,修改后严格模式还是原来的
set session sql_mode = 'STRICT_TRANS_TABLES'
-- 永久修改 : 退出客户端重新连接,严格模式修改会一直生效
set global sql_mode = 'STRICT_TRANS_TABLES'
【六】数据类型
【1】整型
整数类型字节无符号数的取值范围有符号数的取值范围
TINYINT10~255-128~127
SMALLINT20~65535-32768~32767
MEDIUMINT30~16777215-8388608~8388607
INT40~4294967295-2147483648~2147483647
BIGINT80~18446744073709551615-9223372036854774808~9223372036854774807
1.是否有符号 
    默认情况下是带符号的
2.超出最大范围会如何 
    超出限制只能存最大接受值
3.字段类型后面跟着的宽度只是显示的宽度int(4)只显示四位
4.插入的长度是按照谁,当前字段的最大长度进行限制
5.约束条件之 zerofill会左填充0直到满足我所给的长度,比我所给的长度长只要没超限制显示不用填充
【2】浮点型
数据类型字节数取值范围
FLOAT4-2^128~2 ^128,即-3.40E+38~+3.40E+38
DOUBLE8-2^1024~ 2^1024,即-1.79E+308~1.79E+308
DECIMAL设置位数和精度。65 ~ 30
  decimal>double>float
"""
虽然三者精确度有差距 但是具体用哪个应该结合实际情况
    比如正常业务 使用float足够
    如果是高精尖 可以使用decimal
"""
【3】字符
1.char定长,给长度 4 位,超出会报错,不够默认用空格补全,前提是严格模式开启
2.varchar变长,给 4 个长度,超过四个直接报错,有几个存几个
比较:
(1)char
缺点:浪费空间
优点:存储简单 
直接按照固定的字符存储数据即可
(2)varchar
优点:节省空间
缺点:存储麻烦 
存的时候,在真正数据的前面加报头(表示数据真正大小)
取的时候,需要先读取报头,才能读取真实的数据
【4】日期时间类型
date : 年月日
datetime : 年月日时分秒
time : 时分秒
year : 年份
mysql> create table student(
    ->  id int,
    ->     name varchar(16),
    ->     born_year year,
    ->     birth date,
    ->     study_time time,
    ->     reg_time datetime
    -> );
insert into student values(
		 1,
    'dream',
    '2024',
    '2024-5-31',
    '11:11:11',
    '2023-6-30 11:11:11'
);
【5】枚举和集合类型
枚举:多选一 用枚举类型给多个备选项,但是你只能选一个 enum
集合:多选多 用集合类型给多个备选项,但是你能选多个 set
1.枚举类型 enum:
create table user(
	id int,
    name char(16),
    gender enum('male','female','others')
);
insert into user(id,name,gender) values(1,'dream','male');插数据的时候再枚举选项中选一个否则会报错
2.集合类型 set
create table teacher(
	id int,
    name varchar(16),
    gender enum('male','female','others'),
    hobby set('read books','listen music','play games')
);
insert into teacher values(
	2,
    'chimeng',
    'female',
    'read books,listen music'
);
【七】MySQL中有哪些约束条件
1.约束条件之 zerofill会左填充0直到满足我所给的长度,比我所给的长度长只要没超限制显示不用填充
2.null或not null插入的数据是否可以为空
3.DEFAULT(默认约束)为列指定默认值,当插入新记录时,如果没有为该列指定值,则使用默认值。
4.UNIQUE(唯一约束),确保列中的所有值都是唯一的。
注意:唯一约束允许NULL值,但最多只能有一个NULL值。
5.PRIMARY KEY(主键约束),唯一标识表中的每一行数据,确保主键列中的值唯一且不为NULL。
注意:一个表只能有一个主键,但主键可以由多个列组成(复合主键)。
6.FOREIGN KEY(外键约束),用于限制两个表之间的关系,确保从表中的外键值在主表中存在。
注意:外键约束指向的表必须存在一个对应的主键或唯一约束。
7.CHECK(检查约束),规定一个必须为真的逻辑条件,确保插入到表中的所有数据都满足这个条件。
注意:MySQL 8.0.16及以后版本开始支持CHECK约束。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值