mysql 一 基本数据类型 和 存储引擎

本文介绍了MySQL数据库的基本操作,包括数据库的创建、查询、修改和删除,同时详细解释了各种存储引擎的特点及适用场景,并概述了MySQL支持的主要数据类型。

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

简单的说明

[ ]中括号中内容为可选

{ }大括号中内容为必选

| 表示选择(可以选择其一 也可以都选择)

; 结尾 以表格的形式显示结果  同 \g

\G 结尾 以列表的形式显示结果

一 数据库和存储引擎

数据库DATABASE

数据库可由 字母 数字 下划线 $ 组成 .但不能有纯数字构成,仅有_或$构成也是可以的

名称 最长64字符 别名 256个字符 

默认字符集 my.ini default-character-set 

        增:   创建数据库

               1   CREATE DATABASE [IF NOT EXISTS] dbname [指定字符集];

               2.  CREATE  SCHEMA    [IF NOT EXISTS] dbname ;

         指定字符集:在创建数据库语句后添加 default character set = 字符集; 或 default character utf8;

        查: SHOW DATABASES ;

        改: 修改相关参数(字符集 校对规则),不能修改数据库的名字

                 ALTER { DATABASE | SCHEMA} [dbname] {修改字符集 | 修改校对规则}

                       若未指定dbname 则默认当前数据库

                        修改字符集 :  [DEFAULT] CHARCTER SET [=]字符集

                        修改校对规则 :   [DEFAULT] COLLATE [=] 校对规则名称

                            collation :校对、排序规则 ,校对规则是依赖字符集而存在的,不同的字符集可能拥有不同的排序规则

                         校对规则名称由: “字符集_地区名_校对规则”

                           例如:big5_chinese_ci  big5为字符集 ci大小写不敏感(后缀还有:cs 表大小写敏感,bin 表二进制编码比较)

                要求: 其用户必选有修改权限

       删:DROP DATABASE dbname ;

       使用: USE dbname;

存储引擎 ENGINE

通过设置表的ENGINE属性 来指定表的存储引擎   ENGINE =存储引擎类型

  1. 存储数据
  2. 为存储的数据建立索引
  3. 更新 查询数据

   查询存储引擎:  1.查询支持的全部引擎 SHOW DATABASES ;

                           2.查询默认的存储引擎 SHOW VARIABLES 语句查看系统变量及其值 再经过 like 

                                                       SHOW VARIABLES like '%storage_engine%'

mysql> show engines \G
*************************** 1. row ***************************
      Engine: InnoDB
     Support: YES
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions   XA Savepoints: NO  
*************************** 3. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions   XA Savepoints: NO  
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions   XA Savepoints: NO  
*************************** 5. row ***************************
      Engine: MyISAM
     Support: DEFAULT
     Comment: MyISAM storage engine
Transactions   XA Savepoints: NO  
*************************** 6. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions   XA Savepoints: NO  
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions   XA Savepoints: NO  
*************************** 8. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions   XA Savepoints: NO  
*************************** 9. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions   XA Savepoints: NULL
9 rows in set (0.00 sec)

mysql> show variables like '%storage_engines%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| disabled_storage_engines |       |
+--------------------------+-------+
1 row in set, 1 warning (0.00 sec)

InnoDB

InnoDB 给Mysql表 提过了事务,回滚,崩溃修复能力 和多版本并发控制的事务安全

但 读写效率稍差 占用的数据空间相对比较大

特性

  1. 事务处理能力
  2. 支持自动增长列 AUTO_INCREMENT ,其值必须唯一且为空
  3. 提供外键约束
  4. 表结构存储在 .frm文件                                                                                                                                                                             数据存储在 innodb_data_home_dir                                                                                                                                                       索引存储在innodb_data_file_path

适用

  • 更新密集的表:适合处理多重并发的更新请求
  • 事务             :InooDB是唯一支持事务的标准Mysql存储引擎
  • 自动灾难恢复

MyISAM

占用空间小,处理速度快

但不支持事务的完整性和并发性

管理非事务的表,提供高速的存储和检索,支持全文搜索

适用于 对应用的完整性 并发性要求低 的非事务表

.frm  存储表结构.MYD存储数据

.MYI 存储索引

1.MyISAM 静态 若不是用 xBLOB xTEXT VARCHAR类型,Mysql就会自动使用静态MyISAM格式

2.MyISAM 动态 有 xBLOB xTEXT VARCHAR类型 ,动态格式的表占用空间小 ,若修改表的内容可能造成位置的移动,将会产生碎片,碎片的积累将导致性能的下降 

  • 尽可能使用静态数据结构
  • 使用OPTIMIZE TABLE语句,整理表的碎片,恢复由更新或删除导致的空间丢失

3.MyISAM压缩

只读的表 使用myisampack工具将其转换为MyISAM压缩表来减少空间

 MEMORY

1.使用存储在内存中的内容来创建表,并且所以数据也存放在内存中

2.每个基于MEMORY存储引擎的表实际对应一个磁盘文件,其名与表名相同 扩展名为 .frm 仅存储表的结构

而数据文件存储在内存

3.默认使用哈希(HASH)索引,速度比B型树(BTRE)索引要快

优点: MEMORY表大小受到限制,处理速度快 

但数据易丢失 生命周期短,安全性不高

适用于 较小的数据库表

二 数据类型

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

当指定不合法的MySQL不能表示的值时使用"零"值

BOOL1字节自动转换成TINYINT(1) 
TINYINT1字节YEAR                        YYYY 
SMALLINT2 字节  
MEDIUMINT3 字节DATE                                 YYYY-MM-DDTIME              HH:MM:SS
INT或INTEGER4 字节TIMESTAMP        YYYYMMDD HHMMSS混合日期和时间值,时间戳
BIGINT8字节DATETIME            YYYY-MM-DD HH:MM:SS混合日期和时间值
FLOAT

4 字节FLOAT(M,D)

FLOAT(M)

M最大位数,D小数精度 整数部分为M-D

FLOAT(M) 未发现作用

 
DOUBLE8 字节DOUBLE(M,D)M最大位数,D小数精度 整数部分为M-D 
DEC或DECIMAL

DECIMAL(M,D) 

要求M>=D 

M最大位数,D小数精度 整数部分为M-D 

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET

类型大小用途 
CHAR0-255字节定长字符串

保存和检索的方式不同

最大长度和是否尾部空格被保留等方面也不同

存储或检索过程中不进行大小写转换

char (M)  固定的列
VARCHAR0-65535 字节变长字符串节省空间
TINYBLOB0-255字节不超过 255 个字符的二进制字符串 
TINYTEXT0-255字节短文本字符串 
BLOB0-65 535字节二进制形式的长文本数据要搜索的内容区分大小写
TEXT0-65 535字节长文本数据要搜索的内容不区分大小写
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据 
MEDIUMTEXT0-16 777 215字节中等长度文本数据 
LONGBLOB0-4 294 967 295字节二进制形式的极大文本数据 
LONGTEXT0-4 294 967 295字节极大文本数据 

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。区别在于可容纳存储范围不同。

有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。

数据类型最大值说明适用
Enum("value1","value2",....)65535该类型可以容纳所列值之一成为NULL将列中的内容限定在一种选择
Set("value1","value2",....)64可容纳一组值或NULL允许列中的有多于一个的条目

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值