Basic_operation1
MySQL 数据库和表的增删改查
学习笔记,仅供参考
本文重点:数据库 | 表
思维导图:
🎈 数据库的来历
所谓的数据库,其实就是用来存储数据的仓库。比如,日常生活中常见的账号,密码等。
早期将数据保存到内存中,但一旦关机数据就会消失。后来解决消失的问题,又将数据保存在文件中,这样数据在关机后就不会消失了。即 瞬时状态
–> 持久性数据
。
然而,将数据存放在文件中后,若要对数据进行操作时,即增删改查就会很麻烦。而且,文件中的数据是不安全的。
增删改查的术语: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 就会自动加 1primary 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>;
// 修改指定的已有字段的定义
区别:从上面可看出 change
和 modify
都能修改字段的定义,但是只有 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 table
和 desc
查看到的信息差不多,只是 show create 展现的是表的 SQL 语句,而 desc 展现表的结构信息。