MySQL基本概念,存储引擎,数据类型

本文介绍了MySQL数据库的基本概念、操作,重点阐述存储引擎和数据类型。存储引擎方面,分析了MyISAM、InnoDB、MEMORY的特性;数据类型涵盖整数、浮点、日期时间、字符串等。还提及MySQL使用B+树,对比了哈希和平衡二叉树的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL使用B+树:
哈希:无序,不支持连续区域查找和动态扩展存储内存
平衡二叉树:
存B+:存储特质决定,避免频繁操作

一 数据库的基本概念

1,数据库(DataBase DB):长期保存在计算机的存储设备上,按照一定的规则组织起来,可以被各种用户或应用共享的数据集合。

2,数据库管理系统(DataBase Management System,DBMS):是指一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统来访问数据库中的数据。

3,数据库系统(DBS):是指计算机系统中引入数据库后的系统,通常由计算机硬件,软件,数据库管理系统和数据管理员组成。

二 数据库的基本操作

1,创建数据库

create Database databasetest;

2,选择数据库

use databasetest;

3,删除数据库

drop Database databasetest;

4,显示数据库

show Databases;

三存储引擎和数据类型

1,查看存储引擎

show engines \G

2,查看默认存储引擎

show variables like 'storage_engine%';

3,存储引擎特性
 

聚簇索引:innodb:数据和文件在一个地方,以主键id为键,叶子节点直接存储数据记录

非聚簇索引:myisam:最后一层是叶子节点(物理地址),再通过地址查找响应数据

MyISAM
  
它不支持事务,也不支持外键,尤其是访问速度快,因此对事务完整性没有要求或者以访问(SELECT、INSERT)为主的应用都可以使用这个引擎来创建表。

InnoDB
  
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。对事务完整性要求高,需要实现并发控制,适合使用该存储。
1)自动增长列:
  
InnoDB表的自动增长列可以手工插入,但是插入的如果是空或0,则实际插入到则是自动增长后到值。可以通过"ALTER TABLE...AUTO_INCREMENT=n;"语句强制设置自动增长值的起始值,默认为1,但是该强制到默认值是保存在内存中,数据库重启后该值将会丢失。可以使用LAST_INSERT_ID()查询当前线程最后插入记录使用的值。如果一次插入多条记录,那么返回的是第一条记录使用的自动增长值。
对于InnoDB表,自动增长列必须是索引。如果是组合索引,也必须是组合索引的第一列,但是对于MyISAM表,自动增长列可以是组合索引的其他列,这样插入记录后,自动增长列是按照组合索引到前面几列排序后递增的。
2)外键约束:
  
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

MEMORY

memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

四,数据类型:整数类型,浮点型,定点数,位类型,日期和时间,字符串

1整数类型

整数类型字节
TINYINT10-2^8-1
SMALLINT20-2^16-1
MEDIUMINT30-2^24-1
INT  /   INTEGER40-2^32-1
BIGINT80-2^64-1

2浮点型

浮点型类型字节
float41.75E-38------3.40E+38
double82.22E-308----1.79E+308

3定点数类型

定点数字节
DEC(M,D)   /    DECIMAL(M,D)M+2与double相同

4位类型

位类型字节
BIT(M)1-8BIT(1)-BIT(64)

5日期和时间

日期和时间类型字节最小值最大值
DATE41000-01-019999-12-31
DATETIME81000-01-01 00:00:009999-12-31 23:59:59
TIMESTAMPT4197001010800012038年的某个时刻
TIME3-835:59:59835:59:59
YEAR119012155

create table d_test(f_date DATE,f_datetime DATETIME,f_timestamp TIMESTAMP,f_time TIME,f_year YEAR);

insert into d_test values(cuedate(),now(),now(),time(now()),year(now()));

select * from d_test \G

6,字符串类型

char系列字符串类型字节描述
char(M)MM位0-255之间的整数
varchar(M)MM位0-65535之间的整数

7,text系列字符串类型

text系列字符串类型字节描述
tinytext0-255值的长度为+2字节
text0-65535值的长度为+2字节
mediumtext0-2^24值的长度为+3字节
longtext0-2^32值的长度为+4字节

8,binary系列字符串类型

binary系列字符串类型字节描述
binary(M)M允许长度为0-M
varbinary(M)M允许长度为0-M

9,blob系列字符串类型

blob系列字符串类型字节
tinyblob0-255
blob0-2^16
mediumblob0-2^24
longblob0-2^32

create table user(id int,name varchar(20));

insert into user values((1,'bob'),(2,'petter'),(3,'a345678454267123456789'));

show warnings;

select * from user;

id         name

1           bob

2           petter

3           a3456784542671234567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值