mysql的create database

通过create database test1 语句创建的数据库,

就是在数据目录下创建了一个 test1 的文件夹,里面再建一个 db.opt 的文件,包含了字符集信息

mysql没用全局的database数据表,所以文件夹就是数据库,删掉数据库是只需把这个文件夹删掉就可以了,拷贝也是一样,,

这样实现比较简单

 

 

在innodb的创建表时,

先会在数据库目录创建一个后缀为 frm 的表定义文件, mysql_create_frm,这主要是为C++部分使用的;在C++部分有一套事务,锁,表的处理,在下面的innodb还有一部分

在inndodb之中,之后会在三张系统表中增加相应的元组, sys_tables, sys_columns, sys_indexs,

当在建表时,如果没有指定主键,那么就会把三个系统列rowid, trx_id, rollback_ptr 三个列和表的其它列一起,建一个cluset index,主键是 rowid。并没有像pg那样有专门的表,innodb中表就是索引,如果是指定主键,则是根据主键来建cluset index,所以如果建好表之后,修改别的列为主键时,相当于重新建表了,速度是非常慢的

 

 

删除表时,执行的是一个很大的SQL存储过程,

### 创建 MySQL 数据库的语法和示例 在 MySQL 中,`CREATE DATABASE` 是用于创建新数据库的关键字。以下是其基本语法: ```sql CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name]; ``` #### 参数说明 - `db_name`: 要创建的新数据库名称。 - `[IF NOT EXISTS]`: 如果指定此选项,则仅当不存在同名数据库时才创建该数据库[^2]。 - `[DEFAULT] CHARACTER SET charset_name`: 定义数据库默认字符集。如果未指定,默认使用服务器配置中的字符集。 - `[DEFAULT] COLLATE collation_name`: 定义数据库默认校对规则。 #### 示例 1: 基本创建数据库命令 以下是一个简单的例子,展示如何创建名为 `my_database` 的数据库: ```sql CREATE DATABASE my_database; ``` #### 示例 2: 使用 IF NOT EXISTS 防止重复创建 为了避免因已存在相同名称的数据库而导致错误,可以使用 `IF NOT EXISTS` 关键字: ```sql CREATE DATABASE IF NOT EXISTS my_database; ``` #### 示例 3: 设置默认字符集和校对规则 下面的例子展示了如何设置数据库的默认字符集为 `utf8mb4` 和校对规则为 `utf8mb4_general_ci`: ```sql CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` #### 查看现有数据库列表 可以通过运行以下查询来查看当前 MySQL 实例中存在的所有数据库: ```sql SHOW DATABASES; ``` #### 删除数据库 (可选操作) 如果需要删除某个数据库及其所有数据表,可以使用 `DROP DATABASE` 命令: ```sql DROP DATABASE my_database; ``` 需要注意的是,在实际生产环境中应谨慎使用此命令,因为它会永久删除整个数据库以及其中的所有对象[^2]。 此外,MySQL 支持通过存储过程实现更复杂的逻辑处理,但不建议直接在存储过程中执行 DDL 操作(如 CREATE 或 DROP),除非确实必要[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值