本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
-
常用命令
create database test; -- 创建数据库
use test; -- 使用数据库
show create database test -- 查看创建数据库的语句
-- CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
show create table student -- 查看创建表的语句
-- CREATE TABLE `student` (
-- `StudentNo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `LoginPwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `StudentName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `Sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `GradeId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `Phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `Address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `BornDate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-- `Email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
-- 查看表结构
desc student
科普:创建表或者数据库语句的时候字符编码 charset=utf8
数据库默认字符编码是Latin1,是不支持中文的,我们需要把字符集改为中文,才可以存储中文
修改字符集的方式有以下两种
1 创建表或者数据库的数据,字符集选择charset=utf8(建议使用这种方式)
2 修改my.ini(mysql核心配置文件)中配置默认的编码character-set-server=utf-8,下次创建表或者数据库的时候就不用一只选择字符编码了,但是不建议使用这种方式
-
INNODB和MYISAM
不论数据库版本是5.7还是8.0,默认使用的引擎就是innodb,
查看数据库全部的引擎
INNODB和MYISAM的区别
| MYISAM | INNODB | |
|---|---|---|
| 版本 | 是早期数据库的引擎 | 无论是5.7还是8.0,数据库默认使用的引擎都是innodb |
| 事务 | 不支持事务 | 支持事务,mysql自动开启事务,并且会自动提交事务 |
| 数据行锁 | 不支持,myisam是表锁, 会把整张表锁住 | 支持 innodb是行锁,只会锁住一行,效率更高 |
| 外键 | 不支持 | 支持 |
| 全文索引 | 支持 | 不支持 |
| 表空间大小 | 较小 | 较大,约为myisam的两倍 |
总结:
MYISAM:由于空间较小, 节约空间,速度更快
INNODB:由于支持事务,安全性高,而且支持外键,就可以多表多用户操作
数据库文件表在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库,本质还是文件的存储
mysql引擎在物理文件上的区别
innodb在数据库表中只有一个*.frm文件(存储表结构的文件),以及上级目录下的ibdata文件
myisam在数据库中以下文件
1 *.frm文件 存储表结构的文件
2 *.MYD文件(data) 存储表数据
3 *.MYI文件(inex) 索引文件
MYISAM和INNODB分别使用什么情况
MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。