目录1、库的操作1.1、库的查看1.1.1、查看库1.1.2、查看建库语句1.2、库的创建1.2.1、默认编码创建1.2.2、指明编码创建1.2.3、编码规则对库的影响1.3、库的删除1.4、库的修改1.5、备份与恢复1.5.1、备份1.5.2、恢复1.6、查看连接情况2、表的操作2.1、表的创建2.2、表的查看2.2.1、查看表2.2.2、查看表结构2.2.3、查看建表语句2.3、修改表2.3.1、修改表名2.3.2、添加列2.3.3、修改列类型2.3.4、删除列2.3.5、修改列名称2.4、删除表1、库的操作1.1、库的查看1.1.1、查看库语法如下show databases;结果如下图所示1.1.2、查看建库语句语法如下show create database 数据库名使用上面的命令可以查看数据库创建时的语句。1.2、库的创建1.2.1、默认编码创建语法如下create database [if not exists] 数据库名;其中[] 表示可选项其中if not exists表示如果不存在则创建如果存在则不创建。例如创建一个hello数据库1.2.2、指明编码创建创建数据库的时候有两个编码集分别是数据库编码集数据库存储所采用的编码集和数据库校验集数据库进行字段比较所使用的编码本质也是一种读取数据库中数据所采用的解码格式。这两个编码所采用的规则应当是一致的。可以使用如下方式查看数据库的编码集show variables like character_set_database;例如可以使用如下方式查看数据库的校验集show variables like collation_database;例如可以使用如下命令查看数据库支持的编码集show charset;可以使用如下命令查看数据库支持的校验集show collation;创建数据库的时候可以指明编码集和校验集这样的话就不使用默认的编码集和校验集了。语法规则如下create database [if not exists] 数据库名 [charset编码集] [collate校验集];也可以使用下面的语法两者是一样的如下create database [if not exists] 数据库名 [character set 编码集] [collate 校验集];例如创建数据库的时候可以指明编码集和校验集注这个警告是因为使用了MySQL不推荐的utf8编码集和对应的校验规则导致的它推荐使用utf8mb3这个编码集和对应的校验规则。再比如1.2.3、编码规则对库的影响例如创建一个数据库test1create database test1 character set utf8 collate utf8_general_ci;再创建一个数据库test2create database test2 character set utf8 collate utf8_bin;这两个校验规则的区别是一个区分大小写另一个是不区分大小写的。下面我们就来看看校验规则的差异将导致什么结果下面的有些操作不属于库的操作而是后面的内容。想要操作一个数据库先要use这个数据库如下use test1;依次执行如下命令create table person(name varchar(20)); insert into person values(a); insert into person values(A); insert into person values(b); insert into person values(B);我们可以使用如下命令查看表中插入的内容select * from person where namea;结果为我们可以看到a和A都被查出来了因此该校验规则是不区分大小写的。再使用另一个数据库如下use test2;依次执行如下命令create table person(name varchar(20)); insert into person values(a); insert into person values(A); insert into person values(b); insert into person values(B);使用同样的查找命令如下select * from person where namea;结果为从结果可以看出该校验规则是区分大小写的。可以使用如下命令查看当前选择哪一个数据库如下select database();结果为注一般使用默认的编码集和校验集即可不需要指明编码集和校验集。在MySQL中可以使用system clear来清理屏。1.3、库的删除语法如下drop database [if exists] 数据库名;注意不要随意删除数据库。1.4、库的修改对数据库的修改主要指的是修改数据库的编码集校验集。语法alter database 数据库名 [charset编码集] [collate校验集];还有另一种写法也是可以的如下alter database 数据库名 [character set 编码集] [collate 校验集];例如修改之前创建的test2这个数据库查看test2这个库的创建命令如下1.5、备份与恢复1.5.1、备份语法如下mysqldump -P 端口号 -u 用户 -p密码 -B 数据库名 备份存放路径注意上面的这个命令是在命令行中执行的不是在mysql里面执行的。例如把上面的test2数据库给备份到当前目录。mysqldump -P3306 -u root -p -B test2 test.sql我们可以打开这个备份的文件看一下如下图所示1.5.2、恢复语法如下source 数据库路径;注意上面的命令是在mysql中执行的。先把数据库中的test2给删除掉然后再利用之前备份的test2进行恢复恢复命令如下source /home/ubuntu/test2.sql执行完上面的命令后就可以看到数据库已经被恢复了。注如果备份的不是整个库而是其中的一些表还是使用mysqldump命令如下mysqldump -u root -p 数据库名 表名1 表名2 ... 备份存放路径也可以同时备份多个数据库如下mysqldump -u root -p -B 数据库名1 数据库名2 ... 备份存放路径如果备份一个数据库时没有带上-B参数在恢复数据库时需要先创建空数据库然后use数据库再使用source来还原。1.6、查看连接情况语法如下show processlist;可以告诉我们当前有哪些用户连接到MySQL如果查出某个用户不是你正常登陆的很有可能你 的数据库被人入侵了。2、表的操作2.1、表的创建语法如下create table [if not exists] 表名 ( 列1 类型, 列2 类型, .... 列n 类型 ) [character set 字符集] [collate 校验规则] [engine 存储引擎];也可以使用如下方式create table [if not exists] 表名 ( 列1 类型, 列2 类型, .... 列n 类型 ) [charset字符集] [collate校验规则] [engine存储引擎];注如果没有指定字符集则以所在数据库的字符集为准如果没有指定校验规则则以所在数据库的校验规则为准。例如创建一个表叫user1create table if not exists user1( id int, name varchar(20) comment 用户名, password char(32) comment 用户密码, birthday date comment 用户生日 )character set utf8 collate utf8_general_ci engine MyISAM;结果如下注其中的comment表示对该列的注释。例如再创建一个表叫user2create table if not exists user2( - id int, - name varchar(20) comment 用户名, - password char(32) comment 用户密码, - birthday date comment 用户生日 - )charsetutf8 collate utf8_general_ci engine InnoDB;结果为注不同的存储引擎创建的表所对应的表的文件是不一样的MyISAM引擎是把数据和索引分开存放的InnoDB引擎是把数据和索引放在一起的关于索引后面说。2.2、表的查看2.2.1、查看表语法如下查看数据库中的表show tables;结果如下2.2.2、查看表结构语法如下查看表的结构desc 表名;例如其中第一列是字段名第二列是字段类型其他的后面再说。2.2.3、查看建表语句语法如下查看建表语句show create table 表名;例如注还可以使用下面的方式这种方式显示的信息更加简洁如下show create table user1 \G结果为2.3、修改表在项目实际开发中修改某个表的结构比如字段名字、字段类型此外添加字段删除字段等等就需要修改表。2.3.1、修改表名语法如下alter table 原表名 rename [to] 新表名;例如修改表名把表user1改为useralter table user1 rename to user;结果为2.3.2、添加列语法如下alter table 表名 add 列名 列类型;向表user中插入一些信息方便下面进行演示如下例如在user表添加一列用于保存图片路径。alter table user add image_path varchar(128) comment 图片路径 after birthday;其中after birthday表示新增的这一列放在birthday这一列后面。结果为2.3.3、修改列类型语法alter table 表名 modify 列名 新类型;例如修改name的类型将其长度改成60。alter table user modify name varchar(60);结果为注这个修改本质上是覆盖式的修改。2.3.4、删除列语法如下alter table 表名 drop 列名;例如删除password列删除字段一定要小心删除字段会导致对应的列数据都没了。alter table user drop password;结果为另外我们也可以看到对应的插入信息也没有了如下2.3.5、修改列名称语法如下alter table 表名 change 原列名称 新列名称 新列类型;例如修改name列的列名称改为xingmingalter table user change name xingming varchar(60);结果为2.4、删除表语法如下drop table [if exists] 表名;例如注轻易不要修改表结构和删除表。