5

MySQL必知必会01:一个完整的存储过程

 2 years ago
source link: https://blog.csdn.net/qq_31362767/article/details/123162516
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

阅读整理自《MySQL 必知必会》- 朱晓峰,详细内容请登录 极客时间 官网购买专栏。

在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库确认字段创建数据表插入数据

创建 MySQL 数据库

数据存储的第一步,就是创建数据库。

从系统架构的层次上看,MySQL 数据库系统从大到小依次是数据库服务器、数据库、数据表、数据表的行与列。

数据库是 MySQL 里面最大的存储单元。数据表、数据表里的数据,表与表之间的关系,还有在它们的基础上衍生出来的各种工具,都存储在数据库里面。

没有数据库,数据表就没有载体,也就无法存储数据。

创建数据库

SQL 语句:

CREATE DATABASE demo;

查看数据库

在 Workbench 的导航栏,可以看到数据库服务器里的所有数据库:在这里插入图片描述
也可以在 Workbench 右边的工作区,通过查询语句,查看所有的数据库:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| demo               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
  • “demo”是我们通过 SQL 语句创建的数据库,是我们用来存储用户数据的
  • “information_schema”是 MySQL 系统自带的数据库,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件所在的文件夹和系统使用的文件夹,等等
  • “performance_schema”是 MySQL 系统自带的数据库,可以用来监控 MySQL 的各类性能指标
  • “sys”数据库是 MySQL 系统自带的数据库,主要作用是,以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL 的技术性能
  • “mysql”数据库保存了 MySQL 数据库服务器运行时需要的系统信息,比如数据文件夹、当前使用的字符集、约束检查信息,等等。

为什么 Workbench 里面只能看到“demo”和“sys”这 2 个数据库?其实是因为,Workbench 是图形化的管理工具,主要面向开发人员,“demo”和“sys”这 2 个数据库已经够用了。如果有特殊需求,比如,需要监控 MySQL 数据库各项性能指标、直接操作 MySQL 数据库系统文件等,可以由 DBA 通过 SQL 语句,查看其它的系统数据库。


数据存储流程的第二步是确认表的字段。

MySQL 数据表由行与列组成,一行就是一条数据记录,每一条数据记录都被分成许多列,一列就叫一个字段。每个字段都需要定义数据类型,这个数据类型叫做字段类型。例如:

mysql> select * from demo.test;
+---------+-----------+-------+
| barcode | goodsname | price |
+---------+-----------+-------+
| 0001    | book      |     3 |
| 0002    | pen       |     2 |
| 0003    | rubber    |     1 |
+---------+-----------+-------+
3 rows in set (0.00 sec)

每一条数据记录的每一个片段,就按照字段的定义被严格地管理起来了,从而使数据有序而且可靠。MySQL 支持多种字段类型,字段的定义会影响数据的取值范围、精度,以及系统的可靠性。


创建数据表

数据存储流程的第三步,是创建数据表。

MySQL 中的数据表是什么?可以把它看成用来存储数据的最主要工具。

数据表对存储在里面的数据进行组织和管理,使数据变得有序,并且能够实现高效查询和处理。

大多数情况下,我们是不会先准备一个 Excel 文件,再通过 Workbench 的数据导入来创建表的,这样太麻烦了。

通过 SQL 语句来创建表:

CREATE TABLE demo.test
( 
  barcode text,
  goodsname text,
  price int
); 
  • 创建表的时候,最好指明数据库。否则,如果你没有选中数据库,Workbench 会提示错误;要是你当前选中的数据库不对,还可能把表创建到错误的数据库中
  • 不要在最后一个字段的后面加逗号“,”,这也是初学者容易犯的错误

查看表结构

mysql> DESCRIBE demo.test;
+-----------+------+------+-----+---------+-------+
| Field     | Type | Null | Key | Default | Extra |
+-----------+------+------+-----+---------+-------+
| barcode   | text | YES  |     | NULL    |       |
| goodsname | text | YES  |     | NULL    |       |
| price     | int  | YES  |     | NULL    |       |
+-----------+------+------+-----+---------+-------+
3 rows in set (0.00 sec)
  • Field:表示字段名称
  • Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的
  • Null:表示这个字段是否允许是空值(NULL)。这里一定要注意,在 MySQL 里面,空值不等于空字符串。一个空字符串的长度是 0,一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的
  • Key:暂时把它叫做键
  • Default:表示默认值。我们导入的表的所有的字段都允许是空,默认值都是 NULL
  • Extra:表示附加信息

查看数据库中的表

USE demo;
SHOW TABLES;
mysql> SHOW TABLES;
+----------------+
| Tables_in_demo |
+----------------+
| test           |
+----------------+
1 row in set (0.00 sec)

主键可以确保数据的唯一性,而且能够减少数据错误。

MySQL 中数据表的主键,是表中的一个字段或者几个字段的组合。它主要有 3 个特征:必须唯一,不能重复;不能是空;必须可以唯一标识数据表中的记录。

一个 MySQL 数据表中只能有一个主键。虽然 MySQL 也允许创建没有主键的表,但是,建议要给表定义主键,并且养成习惯。因为主键可以帮助减少错误数据,并且提高查询的速度。

在 Workbench 中,可以通过修改表结构,来增加一个主键字段:
在这里插入图片描述在这里插入图片描述

删除掉主键
在这里插入图片描述

SQL语句修改表结构,增加主键字段:

ALTER TABLE demo.test ADD COLUMN itemnumber int PRIMARY KEY AUTO_INCREMENT;

alter table demo.test add column itemnumber int primary key auto_increment;

  • ALTER TABLE,表示修改表
  • ADD COLUMN,表示增加一列
  • PRIMARY KEY,表示这一列是主键
  • AUTO_INCREMENT,表示每增加一条记录,这个值自动增加

数据存储流程的第四步,也是最后一步,是把数据插入到表当中去。

SQL语句:

INSERT INTO demo.test (barcode, goodsname, price) VALUES ('0001', 'book', 3);

这里的 INSERT INTO 表示向 demo.test 中插入数据,后面是要插入数据的字段名,VALUES 表示对应的值。

  • 要插入数据的字段名也可以不写,但是建议不要怕麻烦,一定要每次都写。这样做的好处是可读性好,不易出错,而且容易修改。否则,如果记不住表的字段,就只能去查表的结构,才能知道值所对应的字段了。
  • 由于字段 itemnumber 定义了 AUTO_INCREMENT,所以插入一条记录的时候,不给它赋值,系统也会自动给它赋值。而且,每次赋值,都会在上次的赋值基础上,自动增加 1。也可以在插入一条记录的时候给 itemnumber 赋值,由于它是主键,新的值必须与已有记录的 itemnumber 值不同,否则系统会提示错误。

SQL 规范

小结 SQL 语句:

create database demo;
show databases;
show databases demo;

create table demo.test 
(
	barcode text,
    goodsname text,
    price int
);

describe demo.test;

use demo;
show tables;

alter table demo.test add column itemnumber int primary key auto_increment;

insert into demo.test (barcode, goodsname, price) values ('0001', 'book', 3);
select * from demo.test;

drop database demo;
newCodeMoreWhite.png

每一条 SQL 语句的最后,都必须有一个分号,否则,MySQL 会认为这条语句没有完成,提示语法错误。

在 SQL 语句时遵循统一的样式,以增加可读性,减少错误。参考链接:SQL样式指南 · SQL Style Guide


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK