My Blog

Basic_operation1

MySQL 数据库和表的增删改查

学习笔记,仅供参考

参考B站Mirco_Frank - MySQL 删库跑路


本文重点:数据库 | 表

思维导图mind_map


🎈 数据库的来历

所谓的数据库,其实就是用来存储数据的仓库。比如,日常生活中常见的账号,密码等。

早期将数据保存到内存中,但一旦关机数据就会消失。后来解决消失的问题,又将数据保存在文件中,这样数据在关机后就不会消失了。即 瞬时状态 –> 持久性数据

然而,将数据存放在文件中后,若要对数据进行操作时,即增删改查就会很麻烦。而且,文件中的数据是不安全的。

增删改查的术语:CRUD,增加 (create)、删除 (delete)、 修改 (update)、 查找 (read) –> 数据库操作的核心

早期先后出现了分层数据库和网状数据库,但缺乏灵活性。随之就出现了关系型数据库 (例如: MySQL, oracle, SQL Server等),它的一个特点是每张表都有一个公共的字段,将各个表都联系起来。更多了解:Oracle 对数据库的相关简介


🎆 进入数据库

一、服务的开启与关闭

数据库与用户就像服务器与客服端一样,要想正常的使用,就必须要保证双方都正常运行着。用户当然就是运行终端,数据库则就需要打开它的服务。一般在 Windows 上,开机 MySQL 的服务就会自动启动。手动启动就要使用命令:

net start mysql57 : 开启服务器,其中 mysql57 为服务的名称
net stop mysql57 : 停止服务器

 

二、数据库的进入与退出

在操作数据库之前肯定要先要连接上数据库,就像玩游戏之前要登陆账号一样。所以,先打开终端,然后输入连接 MySQL 数据库的命令:

mysql -u root -p

  • -u : 表示用户登录
  • root : 表示是以管理员(最高级)的身份登录
  • -p : 表示用密码登录

输入完密码之后,就连接上数据库了。数据库开始并不是空的,它有一些系统自带的库,如图所示:

数据库初始信息

若想退出数据库,可以使用命令:

exit | /q | quit

 


🎇 操作数据库

之前说过,操作数据库的核心就是 增删改查,所以下面依次介绍。

一、创建数据库 (create)

create databse <repo_name>;   // 简单创建

create database if not exists <repo_name>;  // √ 常用的创建,较安全

create database if not exists <repo_name> charset=utf8;  // 带有设置字符编码的创建

二、删除数据库 (drop)

drop database <repo_name>;  // 简单删除

drop database if exists <repo_name>;   // √ 常用的删除,较安全

三、修改数据库 (alter)

alter database <repo_name> charset=gbk;  // 修改数据库的字符编码

一般字符编码在开发过程中使用 utf8 ,按操作系统分类的话,Windows 用 gbk ; Mac / Linux 用 *utf8*。

四、查看数据库 (show)

show databases;  // 查看所有的数据库

查看数据库

show create database <repo_name>;  // 查看创建某库时的信息

查看创建某库时的信息

 


🧨 操作表

之前说过数据库就是一个放数据的大仓库,放仓库的东西肯定是要分类整理好的,在经过统计就可以得到一系列的货物表单,这些表单上记录着货物的种类、数量、价格等等信息。所以,数据库就会有一系列的表单。

数据库与表

接着,表中的一些货物属性如种类、数量、价格等等,在数据库中叫作 字段 (Field)

表与字段

要想操作表,就要先指定所要操作的表。命令如下:

use <table_name>;  // 指定某表并准备操作它

接下来就是对表的增删改查了

一、创建表 (create)

1. 简单创建

> create table <tab_name> (
> id int,                   // id 为字段名,int 为整数数据类型
> name varchar(30),         // varchar 为字符串数据类型,30 为最大长度
> age int
> );

而有时会看到 int(2) 这种形式,这里 int 中的 2 为 显示宽度 ,它指显示时,所能看到的最少数字个数。所以,int(2) 修饰的数据在显示时会有两个以上的数,若数据不够两位数则左边用 0 补齐。但要想真正看到它补 0 显示,还要在 int(2) 后加上关键字 ZEROFILL 。若是不加关键字所补的 0 就看不到,从而给人造成错觉。

注意:不要把上面的 2 当作所能取到值的位数,int 这种数值类型有自己的取值范围,不会随你输入的数而改变。

2. ✔ 高级创建(装 B用法)

> create table if not exists <tab_name> (
> id int auto_increment primary key comment '主键id',
> name varchar(30) not null comment '姓名',
> phone varchar(20) comment '电话',
> address varchar(100) default '暂时未知' comment '住址'
> )engine=innodb;

解释上述的一些名词:

  • auto_increment : 自动增长,每填加一个数据 id 就会自动加 1
  • primary key : 主键,使 id 变为独一无二的,凭它就能区别每个数据
  • comment : 注释、说明该字段
  • not null : 非空,在填写数据时,该字段不能为空
  • default : 默认,在填写数据时,若不知道某字段信息也可以填 default ,数据库自动用默认值 “暂时未知” 填充
  • engine=innodb : 指使用 innodb 数据库引擎

二、删除表 (delete)

drop table if exists <tab_name>;  // 删除指定的表,删多个可用逗号隔开

三、修改表 (alter)

若对表做修改,就是操作它的字段,对字段进行增、删、改

  • 改表之添加字段 > alter table <tab_name> add <field_name> int comment '注释';  // 按照顺序添加新字段,并给出它的定义(数据类型,是否为空,注释等)

alter table <tab_name> add <field_name> int comment '注释' after <exist_field_name>;  // 添加新字段在指定已有字段后面

在第一条命令后加 first 即可添加到开头,所以根据基本命令再加上后缀就可以指定所要添加字段的位置

  • 改表之删除字段

alter table <tab_name> drop <field_name>;  // 删除指定的已有字段

  • 改表之修改字段

alter table <tab_name> change <original_field_name> <new_field_name> <datatype>;  // 修改指定的已有字段名和定义

alter table <tab_name> modify <original_field_name> <datatype>;  // 修改指定的已有字段的定义

区别:从上面可看出 changemodify 都能修改字段的定义,但是只有 change 能修改字段名,所以用 change 必须写两个字段名,modify 只需写一个。

当然,想 修改表的名字 也是可以的

alter table <tab_name> rename to <new_tab_name>;  // 修改表名

四、查看表 (show)

查表有三种形式分别是:

show tables;  // 查看指定的数据库中有哪些表

show create table <tab_name>;  // 查看创建某表时的信息

desc <tab_name>;  // 查看某表信息

看有哪些表

建表信息

表信息

从上图中可看出,show create tabledesc 查看到的信息差不多,只是 show create 展现的是表的 SQL 语句,而 desc 展现表的结构信息。