翼度科技»论坛 编程开发 python 查看内容

存储引擎和数据类型

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
目录

配置文件
  1. # 1. 复制my-default.ini文件
  2. # 2. 命名为my.ini
  3. # 3. 修改完配置文件只会,一定别忘重启服务端
复制代码
存储引擎(面试用)
  1. # 理论部分
  2. '''存储引擎其实就是数据库存储数据的方式!!!'''
  3. '''你们这个阶段,最好自己写一写,后面熟悉了在复制'''
  4. # MySQL中有哪些存储引擎
  5. show engines;
  6. # MySQL一定支持9种存储引擎,我们只需要掌握两种即可
  7. MyISAM
  8.         '''
  9.                 MySQL5.5及之前的版本默认的存储引擎,它相对InnoDB的存取速度更快了,但是,相对InnoDB数据不够安全.
  10.                 它不支持事务,行锁,外键;支持表锁
  11.         '''
  12. InnoDB
  13.         '''
  14.                 MySQL5.6及之后的版本默认的存储引擎,它相对MyISAM的存取速度更慢了,但是,相对MyISAM数据更安全.
  15.                 它支持事务,行锁,外键;
  16.         '''
  17. MEMORY
  18.         # 内存
  19.     '''数据存放在内存中,一旦断电,数据立马丢失,重启服务端数据就没了,不能长期保存数据'''
  20.    
  21. create database db4;
  22. create table t1 (id int) engine=MyISAM;
  23. create table t2 (id int) engine=InnoDB;
  24. create table t3 (id int) engine=MEMORY;
  25. '''
  26. 不同的存储引擎的区别:
  27.         1. MyISAM引擎产生3个文件
  28.           .frm  >>> 表结构
  29.           .MYD  >>> 存数据
  30.           .MYI  >>> 存索引   >>> 目录
  31.     2. InnoDB 产生2个文件
  32.             .frm  >>> 表结构
  33.             .ibd  >>> 表结构+数据
  34.           3. MEMORY产生1个文件
  35.                   .frm  >>> 表结构
  36. '''
复制代码
mysql的基本数据类型

1.整形
  1. tinyint   smallint   int   bigint   
  2.     # 存储数据的大小范围不一样
  3.     范围的比较:tinyint <  smallint  < int  < bigint
  4.     tinyint: 1个字节 ---> 11111111  ----> 0-255  -> -128~127
  5.     smallint:2个字节 ---->16位  ------> 0-32 768
  6.     int:4个字节
  7.     bigint:8个字节
  8.    
  9.     '''默认情况下,存储数据带不带符号'''
  10.     create table t4 (id tinyint);
  11.     create table t4 (id smallint);
  12.     create table t4 (id int);
  13.     create table t4 (id bigint);
  14.    
  15.     # 默认情况存储是带符号的,其他整型也是如此
复制代码
2.浮点型
  1. # 小数
  2.     float   double  decimal
  3.     '''总共255位,小数占30位'''
  4.     float(255, 30)
  5.     double(255, 30)
  6.     decimal(65, 30) '''总共65位,小数占30位'''
  7.    
  8.     create table t5 (id float(255, 30));
  9.     create table t6 (id double(255, 30));
  10.     create table t7 (id decimal(65, 30));
  11.    
  12.     insert into t5 values(1.1111111111111111111111); #1.1111111640930176
  13.     insert into t6 values(1.1111111111111111111111);#1.1111111111111112
  14.     insert into t7 values(1.1111111111111111111111);#1.1111111111111111111111
  15.     # 得出结论:精确到不一样
  16.     decimal  >>>   double >>>> float
  17.        
  18.     '''
  19.             根据多年工作经验来看,绝大部分来说,都选decimal
  20.     '''
复制代码
3.字符串
  1. char(4)  varchar(4)
  2.     char(4):定长,超出4位,报错,不够4位,空格填充
  3.     varchar(4): 可变长,不够4位,有几位存几位,超出4位,有几位存几位
  4.     create table t8 (id int, name char(4));
  5.     create table t9 (id int, name varchar(4));
  6.    
  7.     insert into t8 values(1, 'kevin');
  8.     insert into t9 values(1, 'kevin');
  9.    
  10.     # mysql5.6 之前不会直接报错,需要设置一个参数,才会报错
  11.     show variables like '%mode%'; # 模糊查询
  12.    
  13.     2中修改方式:
  14.             1. 配置文件修改---->一定要重启服务端
  15.         2. 临时修改
  16.                 set global sql_mode='STRICT_TRANS_TABLES';# 退出
  17.             客户端,从新进
  18.         3. set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';
  19.                
  20.                
  21. #######研究定长和可变长
  22. insert into t8 values(1, 'k');
  23. insert into t9 values(1, 'e');
  24. # 验证方法:char_length
  25. select char_length(name) from t8;
  26. select char_length(name) from t9;
复制代码
4.日期类型
  1. date  datetime time year
  2.     create table t13 (id  int,
  3.                       reg_time date,
  4.                       login_time datetime,
  5.                       logout_time time,
  6.                       birth_day year
  7.                      );
  8.         insert into t13 values(1, '2023-04-04','2023-04-04 11:11:11', '11:11:11', 1995);
  9.    
  10.     # 用的最多的就是datetime
复制代码
5.枚举与集合
  1. 5.1枚举:多选一 enum()
  2.     create table t14 (
  3.                                 id int,
  4.                         gender enum('male','female','other')
  5.                      );
  6.    
  7.    
  8. 5.2集合:多选多 set()
  9.         create table t15 (
  10.                                         id int,
  11.                         hobby set('read','music','tangtou','xijio','anmo')
  12.                                         );
复制代码
整型中括号内数字的作用(面试用)

字符串中括号中得数字代表的就是:限制存储的长度
  1. create table t11 (id int(3));
  2. insert into t11 values(9999999); #9999999
  3. """整型中括号内的数字代表的不是长度,代表的是展示的位数(多了不用管,少了在前面加0)"""
  4. create table t11 (id int(9) zerofill);
  5. insert into t12 values(9); #000000009
复制代码
创建表的完整语法
  1. CREATE TABLE `t15` (
  2.   `id` int(11) DEFAULT NULL,
  3.   `hobby` set('read','music','tangtou','xijio','anmo')
  4. )
  5. CREATE TABLE `t15` (
  6.   字段1 字段类型1 约束条件1 约束条件1 约束条件1,
  7.   字段2 字段类型2 约束条件1 约束条件1 约束条件1,
  8.   字段3 字段类型3 约束条件1 约束条件1 约束条件1,
  9.   字段4 字段类型4 约束条件1 约束条件1 约束条件1
  10. );
  11. """
  12.         1. 字段和字段类型是必须要写的
  13.         2. 约束条件是可选的,并且,约束条件可以有多个,空格隔开
  14.         3. 最后一条数据的逗号不能加
  15. """
复制代码
来源:https://www.cnblogs.com/whxx/p/17286824.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具