mysql数据库操作
【mysql】数据库操作
1. 库的操作
(一)创建数据库
create database [if not exists] + 库名 + [create_specification] [create_specification] …;
注意:
[]里的内容是可以选择的,既可以写,可以不写
if not exists : 如果库名不存在,则创建一个数据库,如果存在,不做处理
create_specification : 可以是 charset=字符集 或者是 collate=校验规则
(二)创建数据库实例
注意:
当创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci (都是在配置文件里面配置好的)
(三)字符集和校验规则
创建数据库的时候,会有两个编码集:
- 数据库编码集 —- 数据库未来存储数据
- 数据库校验集 —- 支持数据库,进行字段比较使用的编码,本质也是一种读取数据库数据采用的编码格式
因此,数据库无论对数据做任何操作,都必须保证 存储数据库和读取数据库 的编码是一致的
- 查看系统默认字符集以及校验规则
show variables like ‘character_set_database’;
show variables like ‘collation_database’;
- 查看数据库支持的字符集
show charset;
- 查看数据库支持的字符集校验规则
show collation;
(四)操纵数据库
- 查看数据库 (可以知道哪些数据库被创建)
show databases;
- 显示创建语句 (可以知道创建该数据库的过程)
show create database + 数据库名;
注意:
- MySQL 建议我们关键字使用大写,但是不是必须的
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
- /*!40100 default…. */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
(五)修改数据库
alter database + 数据库名 + [alter_spacification] [alter_spacification]…;
注意:
这里的修改数据库信息,一般修改的是它对应的字符集和校验规则
(六)数据库删除
drop database + 数据库名;
注意:
删除之后,数据库内部看不到对应的数据库,对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
所以,不要随意删除数据库
(七)查看mysql连接情况
- show processlist;
可以知道当前有哪些用户连接到我们的MySQL,如果查出某个用户不是自己正常登陆的,很有可能数据库被人入侵了
2. 备份和恢复
(一)备份
mysqldump -P + 端口号 + -u + 主机名 + -p + 密码 + -B + 数据库名 > 新创建的文件名
注意:
test.sql 文件里的内容,其实把我们 整个创建数据库,建表,导入数据的语句都装载这个文件中
(二)还原
- source + 还原文件的路径名
注意:
如果备份的不是整个数据库,而是其中的一张表(即备份文件的时候不带 -B 选项),还原过程就不一样了
- mysqldump -u root -p 数据库名 表名1 表名2 > 指定路径下的文件
同时备份多个数据库中的表
在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原(该文件内并没有创建数据库的语句)
- mysqldump -u root -p -B 数据库名1 数据库名2 > 指定路径下的文件
同时备份多个数据库
3. 表的操作
(一)创建表
create table + 表名 (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
注意:
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
(二)创建表案例
注意:
不同的存储引擎,创建表的文件不一样
如: 存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
users.frm:表结构
users.MYD:表数据
users.MYI:表索引
(三)查看表结构
- desc + 库名
(四)修改表的结构
- alter table + 表名 + add (column datatype [DEFAULT expr][,column datatype]…);
添加表结构
- 修改表结构字段类型
alter table + 表名 + modify (column datatype [DEFAULT expr][,column datatype]…);
- 删除表结构
alter table + 表名 + drop (column);
- 修改表名
alter table + 表名 + rename to + 修改后的名字
注意:
to 可以省略
(五)删除表
- drop table + 表名