MySQL——2、库的操作和表的操作
库的操作和表的操作
- 1、创建和删除数据库
- 2、字符集和校验规则
- 3、校验规则对数据库的影响
- 4、操纵数据库
- 5、库的备份与恢复
- 6、表的操作
1、创建和删除数据库
首先进入数据库,我们可以使用show dabatases; 查看数据库列表:
创建一个名为d1的数据库:create database d1;
根据第一篇文章所讲,我们创建一个数据库,本质上就是在/var/lib/mysql目录下创建一个目录文件。
删除名为d1的数据库:drop database d1;
另外,我们可以使用system clear;进行清屏,效果类似于Linux下的clear命令。
删除数据库,本质上就是将/var/lib/mysql下的目录删除掉。
2、字符集和校验规则
创建数据库的时候,有两个编码集:
1、数据库编码集——数据库未来存储数据的编码。
2、数据库校验集——支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式。
数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的。
查看系统默认字符集以及校验规则:
show variables like 'character_set_database';
show variables like 'collation_database';
可以看到默认采用的数据库字符编码为utf8mb3,采用的字符校验规则编码为utf8mb3_general_ci。
查看数据库支持的字符集:
show charset;
查看数据库支持的字符校验规则:
show collation;
创建数据库并设置编码为utf8mb3:
create database if not exists d2 charset=utf8mb3;
create database if not exists d3 character set utf8mb3;
if not exists可带可不带,如果带了不存在就会创建数据库,如果已经存在就不会创建。
创建字符集为utf8mb3,并带检验规则为utf8mb3_general_ci的数据库:
创建字符集为gbk,并带校验规则为gbk_chinese_ci的数据库:
3、校验规则对数据库的影响
创建数据库,我们不指定字符集,默认就是utf8mb3。下面我们创建两个数据库,采用默认的字符集,设置不同的校验规则,第一个数据库test1校验规则为utf8mb3_general_ci,第二个为utf8mb3_bin。第一个校验规则是不区分大小写的,第二个是区分大小写的,在我们后面实验可以看出来。
首先创建test1数据库,校验规则为utf8mb3_general_ci,并插入一些数据:
下面试着查看一下person表的所有数据:
创建test2数据库,校验规则为utf8mb3_bin,并插入一些数据:
下面我们进行查询:
后面跟where子句,查询name为a的信息。这是在test2数据库下的,字符校验规则为utf8mb3_bin,是区分大小写的,因此只查出了一行信息。下面我们切到数据库test1,其字符检验规则为utf8mb3_general_ci,是不区分大小写的,我们同样查看一下:
由于不区分大小写,所以查出了a和A。
下面我们再对person表进行排序输出,首先是test1:
默认使用order by排序,排的是升序,再加上不区分大小写,所以结果如图所示。
接着我们切换test2继续看看:
由于test2区分大小写,而大写字母的ASCII码值是小于小写字母的ASCII码值的,所以排序结果如图。
4、操纵数据库
1、删除某个数据库:
2、查看数据库:
确认自己是在哪个数据库:select database();
查看创建数据库时的命令:show create database db_name;
3、修改数据库:
比如修改test2数据库的字符集为gbk,校验规则为gbk_chinese_ci:
5、库的备份与恢复
5.1、库的备份
5.2、库的恢复
下面我们将test1数据库备份到/home/zzy/MySQL目录下:
删除test1数据库并进行source还原:
5.3、注意事项:
5.4、查看连接情况:
6、表的操作
6.1、创建表
下面看样例:
首先来看创建表的语法,属性名后面跟数据类型,数据类型我们会在下一篇进行讲解,comment后面跟对该列属性的描述信息,最后我们还可以设置字符集、校验规则、存储引擎。我们创建的users表的存储引擎为M有ISAM,查看对应数据库目录下的文件,发现有两个文件.MYD和.MYI,MyISAM是将数据库索引和数据分开存储的。
创建表user2,采用的存储引擎为InnoDB,我们发现数据库目录下只创建了一个文件。我们也可以不写字符集、校验规则、存储引擎,默认会采用数据库的。
直接创建表user3,我们发现默认采用的就是InnoDB的存储引擎,因为之前我们在配置了mysqld.cnf文件。
6.2、查看表结构
首先是查看数据库中有哪些表:show tables;
然后是查看表结构:
还可以查看创建表时的详细信息:
show create table user1;
show create table user1 \G**
6.3、修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP (column);
修改表名:
将表名修改为user:rename to中的to可以省略。
插入一些数据:
表明后面跟括号,括号里面可以写要插入的列。或者直接不写,表示要插入所有列。
下面我们添加一列属性:
我们添加了一列属性image_path用来存储用户的头像路径,添加在birthday后面。由于历史数据不存在,所以我们查询表信息的时候,这一列就是NULL。
下面我们对一列属性字段进行修改:
我们在查看创建表的信息,我们发现name这一列之前是有comment描述的,现在就没有了,所以修改时是直接覆盖的。
删除某一列属性:
不修改表名,而是修改某一列的名称:下面将name这一列修改为xingming
6.4、删除表