在上一篇博客中,介绍了数据库的基本操作,这一篇就来说说库和表的一些具体操作。
1、显示数据库的创建语句:
语法格式:show create database 库名;
mysql> show create database hello_sql;
回车之后,会出现我们创建这个数据库的语句,如图:
说明:
1)第一列是数据库名。这里是我们创建的hello_sql数据库。
2)第二列是创建数据库的语句,但这里用单引号括起来的原因是:防止库名与关键字冲突。
3)被/* ......*/包起来的内容不是注释,表示当前版本大于4.01就执行这句话。
4)CHARACTER SET utf8:表示这个库的默认编码格式为utf8。
2、修改数据库的编码格式(字符集)
语法格式:alter database 库名 charset=字符集名;
mysql> alter database hello_sql charset=gbk;
更改之后可以查看一下进行验证,如图:
可以看到,字符集已经变成了gbk;
3、数据库的备份
语法格式:mysql -u root -p 库名 > 数据库备份存储的文件路径
F:\>mysqldump -u root -p hello_sql> ./hello.sql
然后打开这个.sql文件,你会发现将整个创建数据库、建表、导入数据的语句都装载在这个文件当中。
4、数据库删除:
语法格式:drop database 数据库名;
mysql> drop database hello_sql;
删除之前:
删除之后:
可以发现在删除之后,数据库系统中没有了"hello_sql"这个库。
5、数据库恢复
语法格式:source + 路径
首先这里我们得先建立一个库,然后使用这个库来接收导入的这个库。
mysql> create database hello_sql;
Query OK, 1 row affected (0.03 sec)
mysql> use hello_sql;
Database changed
我们这里创建了一个hello_sql库,用来接收将要导入的库。
*****这里需要注意的是,必须要有“use + 数据库名”的操作,不然脚本是不知道要往哪个库导入。
mysql> source F:/hello.sql;
导入后,我们可以验证一下:
可以发现,与我们之前创建的一模一样的。
6、查看链接情况
共享性是数据库的一大特点,大家可以连接到同一个数据库下进行数据共享。所以我们也有相应的查看数据库链接的指令:
语法规则:show processlist;
mysql> show processlist;
1、创建表
语法规则:create table 表名(列名1 列名1类型,列名2 列名2类型......)character set 字符集 collate 校验规则 engine 存储引擎;
说明:不同的存储引擎,创建表的文件不一样。当我们指定的引擎是MyISAM时,对应的有三个文件:.frm表结构、.MYD表数据和.MYI表索引。
2、查看表结构
在上篇博客中说了这个语法格式,在这里重点说表结构中各部分都代表什么。
3、修改表
1)在表中添加字段:
语法规则:alter table 表明 add 字段名字段类型;
mysql> alter table student add sex varchar(5) comment '性别' after name;
首先解释一下这句话:在“name”字段后面加上“sex”字段,备注为“性别”,类型为“varchar”。备注和类型在后面还会说到。
可以查看一下有没有按照我们的要求进行添加:
2)修改name字段类型的长度:
语法规则:alter table 表名 modify 字段名 字段类型(修改后长度)
mysql> alter table student modify name varchar(60);
3)删除列
语法规则:alter table 表名 drop 列名;
mysql> alter table student drop id;
可以看到,删除之后“id”列在表中消失。但是需要注意的是:删除之前需要考虑该列还有没有数据?数据还有没有用?需不需要备份?备份了吗?以为一旦删除列之后,该列的所有数据都被删除了。
其实不管是删除表,还是删除库,我们都得问自己“备注了吗?”,要做到心中有数。
4)修改表名
语法规则:alter table 表名 rename to 新表名;
mysql> alter table student rename to child;
5)修改字符集
语法规则:alter table 表名 charset=字符集名;
mysql> alter table child charset=gbk;
6)修改列明
语法规则:alter table 表名 change 列名 新列名 列名类型;
mysql> alter table child change name 姓名 varchar(60);
可以验证一下我们所修改的对不对: