python之路---MySQL&表的相关操作

与表相关的基本概念

什么是表

MySQL中的表类似于文件,其内的一行数据叫做记录,记录所对应的标题称之为字段

cid和caption就是表字段,下面的一行行内容就是记录

存储引擎介绍

与普通的文件一样,MySQL的表也有各种各样的类型,表的类型不同,所对应的存取机制也不同。存储引擎就是存储数据,读取数据,查询数据,建立索引的实现方法,可以将其理解为是存储和操作表的类型

MySQL不同于其它关系型数据库为我们提供了多种存储引擎

MySQL一些常用的存储引擎

1.InnoDB存储引擎

InnoDB是MySQL最为常用的存储引擎,其设计目标主要是面向联机处理事务的应用,该存储引擎采用了聚集的方式,每张表都按照主键的顺序进行存储,如果未定义主键,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB使用它作为聚簇索引。如果没有这样的列,InnoDB就自己产生一个这样的ID值,它有六个字节,而且是隐藏的,使其作为聚簇索引。

2.Memory存储引擎

该存储引擎的数据都存放在内存中(重启数据库/数据库崩溃都会导致表中记录的丢失)--->常用于存储临时表数据,且默认使用的是哈希索引,而非B+树索引

3.blackhole存储引擎:又称黑洞存储引擎

4.MyISAM存储引擎:不支持事物,其缓冲池内只存储索引文件,而不存储数据文件

show engines\G  #查看所有支持的存储引擎
show variables like 'storage_engine%'; #查看正在使用的存储引擎

 使用不同的存储引擎

创建一个innodb存储引擎的表

create table t1(id int)engine=innodb;

发现innodb存储引擎将表分为两个文件存储,一个frm表用于存储表结构,一个ibd用于存储表索引和表的数据

创建一个MyISAM存储引擎的表

create table t2(id int)engine=myisam;

发现该存储引擎将表分为三个文件存储,frm为存储表结构,MYD为存储MyISAM的数据,MYI为存储索引

创建一个blackhole存储引擎和Memory存储引擎

create table t3(id int)engine=memory;
create table t4(id int)engine=blackhole;

都只有表结构

表的增,删,改,查

创建表

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);


eg:
create table t1(
    id int primary key auto_increment,    # 一般将id字段设置为主键
    name varchar(15),
    age int,
    gender enum('male','female')
)

其中

字段名(唯一),类型为必填

宽度,约束条件为可选(约束条件是在数据类型之外对字段添加的额外限制)

查看表

# 查看表结构,没有执行库名,默认当前库
desc 库名.表名;

# 查看详细表结构
show create table 库名.表名;
show create table\G 库名.表名;

# 查看当前库中的所有表名
show tables;

修改表

# 添加一个字段
alter table 表名 add 字段名 字段类型;
alter table 表名 add 字段名 字段类型 first;
alter table 表名 add 字段名 字段类型 after 字段名;

# 修改字段完整性约束宽度
alter table 表名 modify 字段名 类型();

# 修改字段名/类型
alter table 表名 change 原字段名 新字段名 类型();
alter table 表名 change 原字段名 新字段名 新数据类型();

# 删除字段
alter table 表名 drop 字段名;

# 修改表名
alter table 表名 rename 新表名

删除表

drop table 表名

复制表

# 复制表结构 + 记录(key不会复制:主键,外键,索引)
create table 新建表名 select * from 目标表名;

# 只复制表结构
create table 新建表名 select * from 目标表名 where 1=3;

猜你喜欢

转载自blog.csdn.net/ltfdsy/article/details/82532833