序言
在上一篇的数据库操作的内容中,学习了两种属性和常用的七种操作,学习是循序渐进的,库的操作学完了,就要开始学习表的操作了,而表可与数据强相关,比如DDL
,即数据定义语言,DML
,即数据操纵语言,都是与表相关的,而其区别就在于一个是对表结构的操作,而另一个是对表内容的操作,因此表的操作的内容分为上下两部分进行讲解。铺垫完毕,好了话不多说,开始今天的学习吧!
1.创建
create table (if not exists) [表名](
[变量名1] [类型],
[变量名2] [类型],
[变量名3] [类型]
)(charset=[字符集],collate=[校验集],engine=[存储引擎]);
说明:
- 第一个和第三个
()
的意思表示其中的内容可省略,第二个()
的意思是表的结构都包含哪些类型,不可省略。 - 请注意从开始的变量名到倒数第二个变量名,末尾都带有
,
,但是最后一个变量名末尾不带。 - 字符集和校验集只强调一点,如果没有设置默认与所在的数据库设置的对齐。而存储引擎没有设置跟MySQL默认的对齐。
- 在MySQL中推荐使用此种类似结构体定义的写法,可读性较高,当然也可以采用一行的写法,具体写法则根据个人喜好来即可。
如下图可得:我所在的MySQL下的默认的存储引擎是InnoDB,通过下图sql语句可进行查看。
- 给出一个示例:
简要说明一下,此处的类型暂不做讨论,留到后面的文章娓娓道来,而comment
,简单理解为给类型做注释,便于用户理解。
此时进入数据库所在的目录/var/lib/mysql/test_db
查看一下创建一个表发生了什么,在前面的文章中提及过创建一个数据库的本质就是创建一个目录,创建一个表实际就是在创建文件,那具体创建了什么文件呢?
- 如图:
说明:
- 以
.sdi
为后缀的文件中存放的表的结构。 - 以
.MYD
为后缀的文件中存放的是表的数据。 - 以
MYI
为后缀的文件中存放的是表的索引。
因此可以看出MyISAM采用的索引是一种非聚集索引,即数据和索引分开进行存储。
与此同时,再创建一个InnoDB类型的表,再次查看此目录下的文件与MyISAM进行比较看有什么不同,这里就省略不写了,就是换一个表名,然后将最后的存储引擎换成InnoDB。
- 如图:
相比之下,InnoDB创建的表虽然只建立了一个文件,但这个文件中包含了表的索引和所有数据,因此InnoDB采用的索引是聚集索引。
补充:
- MyISAM,MySQL5.5.8版本之前默认的存储引擎,不支持事务,采用非聚集索引。
- InnoDB,MySQL数据库5.5.8版本开始,默认的存储引擎,支持事务,采用聚集索引。
2.查看
创建信息
show create table [表名];
#一般将末尾的;换成\G打印出来的效果更好。
表结构
desc [表名];
简要说明一下,Field为字段名称,Type为类型,Null为是否可以为控制,Key为是否为索引,Default为是否有默认值,Extra为额外信息。
3.修改
表的重命名
alter table [表名] rename to [新表名]
#to可省略不写
如图:
此处在修改表名其实就是在数据库的目录下将其文件的前缀改为usr
。
如图:
增加列
alter table [表名] add [列名] [类型];
如图:
修改列属性
alter table [表名] modiy [列名] [新属性];
如图:
删除列
alter table [表名] drop [列名];
如图:
补充一个小知识:进入MySQL内部的命令行之后,是不能直接执行系统命令的,如果要执行可在前面加上system,比如system ls;
3.备份和恢复
mysqldump -P [端口号] -u [用户] -p [密码] 数据库 表名,表名,... > [文件].sql
#注意:mysql内执行要在mysqldump前加system。
首先向此表中插入一些数据之后,然后进行备份。
如图:
接着将此表删除之后,进行恢复。
source [指定目录下的.sql文件];
如图:
说明:恢复数据的过程其实就是将创建表和插入数据的sql语句记录下来,然后再执行一遍,这里Query OK的行有点冗余,为了避免截出来图片过长,我默默P掉了一部分,嘿嘿不用感谢我。
最后从表中查看数据验证结果。
对比之后结果无误,说明表恢复完毕。
尾序
今天学习了数据定义语言(DDL)中与表结构相关的操作,主要涉及创建,查看,修改,备份和恢复,当然还是一样内容并不难,关键就在于一个熟练度,敲就完事了。我是舜华,期待与你的下次相遇!