MySQL库和表的操作
- 一、库的操作
- 二、表的操作
- 三、其他操作
- 四、注意事项
一、库的操作
1.1创建数据库
create database [if not exists] db_name [charset / character set=XXX collate=xxx];
在所有sql语法中凡是带有[ ]的都是选择性的去写,可以不用写的。
(1)if not exists 是 MySQL 中一个防止报错的从句,意思是:"如果这个东西不存在,才执行操作;如果已经存在,就什么也不做(也不会报错)"。
(2)charset / character=XXX 是 设置指定的MySQL的编码集,所谓编码集通俗来讲就是把数据按特定的格式进行存储( / 代表或者)。
(3)collate=XXX 是 设置指定的MySQL的校验集,所谓校验集通俗来讲就是比对这些数据时按什么规则排顺序、是否区分大小写等。
当我们不写设置编码集,校验集时,系统默认会采用就近原则,使用my.cnf配置文件里所配置的编码集,校验集;若配置文件里面没有进行配置,则系统会自动将编码集设置为utf8(老版本) / utf8mb3(新版本),校验集设置为utf8_general_ci(老版本) / utf8_general_ci(新版本)。

在/var/lib/mysql目录下可以查看到刚刚创建的db_test1数据库。
在MySQL5.7版本及其更老的版本这个数据库文件里面默认只有一个db.opt文件,文件的内容就是你创建的数据库所设置的编码集和校验集。
在MySQL8.0版本及以上的版本,这个db.opt文件被取消了,数据库的编码和校验信息被统一放到了系统表空间的数据字典里管理(了解即可),新版本可以直接使用sql语句来查看数据库的编码和校验信息:
use db_name;
seletc @@character_set_database, @@collation_database;

1.2查询数据库
1.2.1查询所有的数据库
show databases;

1.2.2查询一个数据库的具体创建信息
show create database db_name;

\G代表格式化输出,去除了一些无关紧要的内容。
1.2.3查看你在当前哪个数据库
select database();

1.3修改数据库
首先修改数据库是不能修改数据库名称的,这是不支持的,可供修改的仅有数据库编码集,校验集这些内容。(这个就不演示了)
alter database db_name charset=XXX / character set=XXX collat=XXX;
1.4删除数据库
drop database db_name;

1.5备份数据库
下面操作会结合对表的操作:创建了一个db_test2的数据库,往库中创建了一个student表,表中有id、name、age、birthday 4个字段(什么叫字段后面会讲),并往表中插入了一些数据。

1.5.1备份一个数据库
此些操作需要在mysql外部使用:
mysqldump -P端口号 -u登录用户 -p -B 数据库名 > 备份文件的绝对路径
-B参数是数据库的名称,若没有带这个参数,则你在恢复这个数据库的时候需要先创建这个数据库,在use进入,再恢复数据。

vim打开test.sql文件:

可以观察到备份的是对此库的历史所有操作都备份了。
1.5.2备份多个数据库
mysqldump -P端口号 -u登录用户 -p -B 数据库名1 数据库名2 > 备份文件的绝对路径
1.5.3备份一个/多个表
mysqldump -P端口号 -u登录用户 -p -B 数据库名 表名1[表名n] > 备份文件的绝对路径
1.6恢复数据库
此语句需要在mysql内部使用。
source 备份文件的绝对路径;
二、表的操作
2.1创建表
create table student(
属性列1 数据类型及大小 描述 依赖等,
属性列2 数据类型及大小 描述 依赖等,
.......
属性列n 数据类型及大小 描述 依赖等,
);

)和;之间也可以像创建数据库一样设置编码集和校验集,以及存储引擎engine,这个与索引,存储文件的后缀,数量有关,这里也不重点介绍。
本篇博客仅介绍如何创建表,重点不是内部的字段这些,这些后续博客会介绍。
2.2查询表
2.2.1查询一个库中所有的表
show tables;

2.2.2查询一个表的详细信息
desc table_name;

2.2.3查询一个表创建时的详细信息
show create table table_name;

2.3修改表
2.3.1新增列
alter table table_name add new属性列 数据类型及大小 描述 依赖等 after 指定属性列的列名;

after 指定属性列的列名 --- 表示新增到指定属性列的后面。
查询student表详细结构信息:

可以看到在name字段后面新增了一个sex性别的属性列。
2.3.2修改列
alter table table_name modify 属性列 new数据类型/长度 描述 依赖等;

观察到name属性列的大小从32修改为了60。
2.3.3重命名 - - - 也属于修改
2.3.3.1重命名表名
alter table table_name rename [to] newtable_name;

观察到表名由原来的student重命名成了xueshengbiao。
2.3.3.2重命名列名
alter table table_name change old属性列名 new属性列名 new数据类型及大小 描述 依赖等;

观察到原来属性列为name的重命名成了xingming,并且数据类型大小重新修改成了32。
2.3.4删除列
alter table table_name drop 属性列;
2.4删除表
drop table table_name;
三、其他操作
3.1查询连接情况
show processlist;

此语句可以查看谁在连接,在干什么的信息。
3.2插入表数据
insert语句不是DDL(数据定义语言),而是DML(数据操纵语言),本次只认识一下,不会深讲。
insert into table_name (属性列1, 属性列2, ......, 属性列n) values (值1, 值2, ......, 值n);

3.3查询表内容
select语句属于DML中的DQL(数据查询语言)。
select * from table_name;

四、注意事项
上面介绍了有关数据库和表的增删查改的操作,其中一定不要轻易的去执行删除和修改相关的sql语句,这会特别麻烦的!!!