提示:此系列文章参考《SQL基础教程第二版》以及《MySQL必知必会》两本书的中译版,特此说明。
一、数据库是什么?
数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合,该数据集合称为数据库(Database,DB),而用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)
1.简单的分类
DBMS 主要通过数据的保存格式(数据库的种类)来进行分类,现阶段主要有以下 5 种类型.
关系数据库(Relational Database,RDB),这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS).
层次数据库(Hierarchical Database,HDB)
面向对象数据库(Object Oriented Database,OODB)
XML数据库(XML Database,XMLDB)
键值存储系统(Key-Value Store,KVS)
本系列文章介绍关系数据库管理系统(RDBMS)的操作方法。
2.简单的结构
使用RDBMS 时,最常见的系统结构就是客户端/ 服务器类型(C/S类型)这种结构,放个图就行了。
简单来说就是,客户端就是写命令的软件,服务器就是下载的MySQL8版本,数据库就是存在硬盘上的数据。
3.简单的安装
在此不进行安装的介绍,有关安装的步骤与注意事项,参考一下文章:
二、表的简单操作
1.表及其结构
关系数据库通过类似Excel 工作表那样的、由行和列组成的二维表来管理数据。用来管理数据的二维表在关系数据库中简称为表。表存储在由RDBMS 管理的数据库中,一个数据库中可以存储多个表。
根据SQL 语句的内容返回的数据同样必须是二维表的形式 ,这也是关系数据库的特征之一。返回结果如果不是二维表的SQL 语句则无法执行。如下图:
其中,可以看到第一行是列名,接下来的每一行称为记录,在机器学习中我们又把它叫做样本,对于每一列,我们又把一个列称为一个字段,某一行某一列对应一个单元格。这就是表的构成
2.简单的命令
对于表进行相关的操作包括对数据库和表的操作,对表内部的操作如下:
-
创建(create),删除(drop),修改(alter)
-
查找(select),插入(insert),更新(update),删除(delete)
命令需要一些规则:
- mysql命令不区分大小写,但是习惯用的还是小写
- MySQL使用分号(;)结尾
- 单词需要用半角空格或者换行来分隔
在进行数据库的操作前,肯定要先创建一个数据库
--创建一个名叫 shop 的数据库
create database shop;
--删除一个名叫 product 的数据库
drop database product;
有了数据库之后,在数据库中需要有实际的东西,也就是表。
--创建了一个名叫 product 的表
create table product;
当然这个表现在还是空的,一个表最终要的就是第一行的列名,所以在创建表的时候,一般也会添加这个表的列名的信息。
--创建一个表:create table 表名 (列名 数据类型 约束,列名 数据类型 约束,列名 数据类型 约束);
create table product
(product_id char(4) not null,
product_name varchar(100) not null,
product_type varchar(32) not null,
sale_price integer ,
purchase_price integer ,
regist_date date ,
primary(product_id));
- 列名:半角英文字母、数字、下划线(_)作为数据库、表和列的名称,并且必须以半角英文字母开头。
- 数据类型:数据的种类,包括数字型、 字符型和日期型,上述代码中的 char(4)表示4个字符的字符串,varchar(100)表示字符长度在100以内的字符串,integer表示整数型数据,date表示日期型。对于定长字符串如果输入数据不足给定的定长,会以空格补全,但是对于可变长字符串则不会补齐。
- 约束:not null表示该单元格不可空着,而null表示该单元格必须是缺失值。
- 主键:在最后一行还有 primary key(列名),该命令表示采用该列作为主列,也就是说使用该列可以讲所有的记录区分开,该列为满秩。这样的好处是索引该列的值时可以取出唯一的记录。
在创建完一个表之后,当然可以对这个表修改(alter)
--添加列:alter table 表名 add column 列名
alter table product add column product_name_pinyin varchar(100);
--删除列:alter table 表名 drop column 列名
alter table product drop column product_name_pinyin;
有了准备工作之后,需要将数据插入到单元格中。
--插入数据:insert into 表名 vaues(值1,值2,值3,值4,值5,值6)
INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服',1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品',500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服',4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具',3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具',6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具',500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具',880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品',100, NULL,'2009-11-11');
可以看出values后面的信息是和列名按顺序对应的。
到此,我们终于有了可以操作的一张表了。
总结
create table product(product_id char(4) not null);
alter table product add column product_name_pinyin varchar(100);
insert into product values(v1,v2,.....);
包含了数据库的创建和表的创建,以及对表进行简单的修改和数据的插入。