在数据库中,一起皆是表,可以说表是数据库最重要的组成部分.后续的
sql
语句也大多数就是对表进行操作.
语法:
CREATE TABLE 表名(
属性名1 属性类型
属性名2 属性类型
属性名3 属性类型
)character set 字符集 collate 校验规则 engine;
/etc/my.cnf
我们可以怎么查看表的存储引擎呢?
找到/var/lib/mysql/数据库名
进入这个目录,找到刚刚创建的表:
当我们使用innodb
这个存储引擎时,会产生这两个文件.
在 MySQL 中,存储引擎(Storage Engine) 决定了表的底层实现方式,比如数据的存储、索引的使用、事务支持等特性。 下表由GPT生成:
特性 | InnoDB 🏆(默认) | MyISAM 🗂️ | MEMORY ⚡ | ARCHIVE 📦 |
---|---|---|---|---|
事务支持 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
外键支持 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
锁粒度 | 行级锁 | 表级锁 | 表级锁 | 表级锁 |
崩溃恢复 | ✅ 支持 | ❌ 较差 | ❌ 易丢失 | ❌ |
存储位置 | 磁盘 | 磁盘 | 内存 | 磁盘 |
适合场景 | 高并发读写、事务场景 | 查询多写少 | 缓存临时表 | 日志压缩存储 |
存储引擎是表的“内核”,不同引擎适用于不同场景 |
show tables;
desc 表名;
有两种方法来查看建表信息:
show create table 表名;
show create table 表名/G
个人认为,/G
更好点~
我们可以从建表信息中得到什么呢?
我们写得属性名和属性类型都可以看到,除此之外还可以看到存储引擎\字符集,以及(DEFAULT 默认值,可以看出C++中的缺省).
当然可以看到到还不值这些,比如:注释信息(我没写) 主键\外建\非空等等约束,这些应该会在表的约束和大家见面.
悄悄告诉你,其实desc 表名
的内容就是从这个建表信息中提取的.
修改表有很多操作,就比如:添加属性,修改属性(修改属性名,修改属性类型),删除属性. 语法:
ALTER TABLE 表名 ADD (属性1 属性类型[DEFAULT expr][,属性2 属性类型]...);
ALTER TABLE 表名 MODIFY (属性1 属性类型[DEFAULT expr][,属性2 属性类型]...);
ALTER TABLE 表名 DROP (column);
现在我就新增两个属性,分别为班级和社团
新增的属性默认是最后的,不过新增属性时也支持指定位置,但是只有在新增单个属性时才可以指定位置.
修改属性又可以分为对属性名的修改,对属性类型的修改。
ALTER TABLE tablename MODIFY column datatype [DEFAULT expr], [MODIFY ...];
,
分离。2. 修改属性名
ALTER TABLE tablename CHANGE oldcolumn newcolumn datatype [DEFAULT expr];
除了可以修改属性名外,其实也是可以修改属性类型的。
语法:
ALTER TABLE 表名 DROP 属性名;
如果要删除一样东西的话,一定要确定他是对你没有的东西,以后也不会有用了。
语法:
ALTER TABLE 旧表名 rename [to] 新表名
创建一个临时的表,来演示修改表名和删除表~
这是新创建的表,下面开始修改它。
语法:
DROP [TEMPORARY] TABLE [IF NOT EXISTS] 表名 [,表名2]...
下面看演示:
同样的,在删除表前一定要清楚删除后会用什么后果哦~
本文主要讲述了对表的增(创建)删查改,不过这些都是表的基操作,后续的文章就对表的操作进行进阶