这里写目录标题
- [<font color="FF00FF">1. 下载数据库](#1. 下载数据库)
- [<font color="FF00FF">2. 数据库的理解](#2. 数据库的理解)
- [<font color="FF00FF">3. 服务器,数据库,表关系](#3. 服务器,数据库,表关系)
- [<font color="FF00FF">4. MySQL架构](#4. MySQL架构)
- [<font color="FF00FF">5. SQL分类](#5. SQL分类)
- [<font color="FF00FF">6. 存储引擎](#6. 存储引擎)
- [<font color="FF00FF">7. 库的操作](#7. 库的操作)
-
- [<font color="FF00FF">1. 创建数据库](#1. 创建数据库)
- [<font color="FF00FF">1. 校验规则对数据库的影响](#1. 校验规则对数据库的影响)
- [<font color="FF00FF">2. 修改数据库](#2. 修改数据库)
- [<font color="FF00FF">3. 数据库删除](#3. 数据库删除)
- [<font color="FF00FF">4. 备份和恢复](#4. 备份和恢复)
- [<font color="FF00FF">5. 查看连接情况](#5. 查看连接情况)
- [<font color="FF00FF">2. 表的操作](#2. 表的操作)
-
- [<font color="FF00FF">1. 创建表](#1. 创建表)
- [<font color="FF00FF">2. 查看表结构](#2. 查看表结构)
- [<font color="FF00FF">3. 修改表](#3. 修改表)
-
- [<font color="FF00FF">1. 添加表的记录](#1. 添加表的记录)
- [<font color="FF00FF">2. 修改表字段的属性](#2. 修改表字段的属性)
- [<font color="FF00FF">3. 删除表的一列](#3. 删除表的一列)
- [<font color="FF00FF">4. 更改表名字](#4. 更改表名字)
- [<font color="FF00FF">5. 更改表中列属性的名字](#5. 更改表中列属性的名字)
- [<font color="FF00FF">6. 删除表](#6. 删除表)
- [<font color="FF00FF">7. 查看创建表的语句](#7. 查看创建表的语句)
- [<font color="FF00FF">8. 查看当前在哪个数据库下](#8. 查看当前在哪个数据库下)
- [<font color="FF00FF">9. 查看该数据库有哪些表](#9. 查看该数据库有哪些表)
1. 下载数据库
- 在linux的云服务器上下载mysql,以unbuntu20.04为例,只需要
c
sudo apt install mysql-server //下载数据库
sudo mysql //进入数据库的命令行
2. 数据库的理解


-
mysql:数据库服务的客户端
-
mysqld:数据库服务的服务端
-
mysql:基于C(mysql),S(mysqld) 模式的一种网络服务

-
mysql:是一套给用户提供数据存取的服务的网络程序
-
数据库:一般指的是,在磁盘或者内存中存储的特定结构组织的数据,就是在磁盘上存储的一套数据库放案
-
一般文件只提供了数据存储的功能,但是文件并没有提供非常好的数据(内容)管理能力
-
数据库的本质:对数据内容存储的一套方案,用户给我字段或要求,数据库给你结果


当我们使用mysql建立一个数据库,建立一张表,插入一些数据,
这个工作是mysqld服务请求mysql,帮我们做的
-
建立数据库,本质就是在Linux下建立一个目录
-
在数据库内建立表,本质就是在Linux下创建对应的文件,
这个创建的文件,在我们创建的数据库这个目录下,目录也是文件 -
数据库也是文件,只不过这些文件并不由程序员直接操作,
而是数据库服务(mysqld)帮我们进行操作
3. 服务器,数据库,表关系
-
安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,
这个管理程序可以管理多个数据库 -
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据
-
数据库服务器、数据库和表的关系如下:

4. MySQL架构

首先数据库,有一个连接池,接收连接,然后下一个模块是进行语句,语法翻译的模块,在下一个是储存引擎,是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法,然后就是内核层了,所以数据库在应用层
5. SQL分类
-
DDL数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter -
DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select -
DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
DDL像创建链表,DML是对链表进行增删查改
6. 存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
MySQL的核心就是插件式存储引擎,支持多种存储引擎
查看存储引擎

存储引擎对比

主要用的是innoDB,MylSAM
7. 库的操作
- 查看系统默认字符集以及校验规则
c
show variables like 'character_set_database';//默认字符集
show variables like 'collation_database';//校验规则

查看数据库支持的字符集
c
show charset;//查看数据库支持的字符集
查看数据库支持的字符集校验规则
c
show collation;//查看数据库支持的字符集校验规则
1. 创建数据库
c
create database sjk;
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8mb4
校验规则:utf8mb4_ 0900_ai_ci

查看数据库列表(databases)里的数据库

创建一个使用utf字符集,并带校对规则的 db3 数据库
c
create database db3 charset=utf8mb4 collate utf8mb4_ 0900_ai_ci;
默认就是这个,不用写
清屏
c
system clear; //类似于linux的clear
显示创建语句
c
show create database 数据库名;

数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
/*!40100 default... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
1. 校验规则对数据库的影响
创建一个数据库,校验规则使用utf8_ general_ ci(不区分大小写)
- 创建数据库
c
create database test1 collate utf8_general_ci;
- 使用数据库
c
use test1;
- 创建表
c
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');
- 查询a

- 对字母排序

创建一个数据库,校验规则使用utf8_ bin(区分大小写)
- 创建数据库
c
create database test2 collate utf8_bin;
- 使用数据库
c
use test2
- 创建表
c
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');
- 查询a

- 对字母排序

2. 修改数据库
c
alter database test1 charset=gbk;//将 test1 数据库字符集改成 gbk
3. 数据库删除
c
drop database test1
执行删除之后的结果:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
4. 备份和恢复
- 备份
c
mysqldump -u root -B test2 > test //在linux命令行输入,把test2的内容放到test里
然后删除test2
- 恢复
c
source /home/xaq/test;//把你的test文件的路径加上,source恢复,把test的内容重新输入
可以打开看看 test 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中
5. 查看连接情况
c
show processlist;

2. 表的操作
1. 创建表
c
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
- 首先创建数据库
- use 数据库名字;
- 然后建表
c
create table students (
-> id int,
-> name varchar(20) comment '学生姓名',
-> password char(32) comment '学生密码'
-> );
2. 查看表结构

c
desc students;

3. 修改表
1. 添加表的记录

select * from students:表示查看students里的所有内容
c
insert into students values(1,'张三','123456') //向表中插入数据
after table students add age int comment'年龄' after id;//向表结构里插入字段

2. 修改表字段的属性
c
alter table students modify name varchar(10);

3. 删除表的一列
c
alter table students drop assets;//删除字段及其对应的列数据都没了

4. 更改表名字
c
alter table students rename to people; //更改表名字,to可以省略

5. 更改表中列属性的名字
c
alter table people change name xingming varchar(20); //新字段需要完整定义

6. 删除表
c
drop table t1;
7. 查看创建表的语句

- ENGINE:默认是InnoDB,也可以写成MyISAM

不同的存储引擎,创建表的文件不一样,people是InnoDB,s1是MyISAM
s1.MYD:数据文件 存储 MyISAM 表的实际数据
s1.MYI:索引文件 存储 MyISAM 表的索引
people.ibd:表空间文件 存储 InnoDB 表的数据和索引
s1_375.sdi:系统文件) 数据字典 MySQL 8.0+ 用于描述表结构的元数据文件(不区分引擎)
8. 查看当前在哪个数据库下

9. 查看该数据库有哪些表
