一:数据库是什么?
1:定义 ● 将大量数据通过计算机加工而成的可以进行高效访问的数据集合称为数据库(DB)。
● 用来管理数据库的计算机系统称为数据库管理系统(DBMS)。
● 关系数据库通过关系型数据库管理系统(RDBMS)进行管理。
2:为什么DBMS那么重要?
答:DBMS能够实现多个用户同时安全简单的操作大量数据。
3:DBMS的种类
● 层次数据库(HDB):最古老的数据库之一,现在已经很少使用了。
● 关系数据库(RDB):关系数据库是现在应用最广泛的数据库。它采用由行和列组成的二维表来管理数据。同时,它使用SQL(结构化查询语言)对数据进行操作。
4:关系数据库管理系统(RDBMS)的种类
● oracle :甲骨文公司的RDBMS。
● SQL server:微软公司的RDBMS。
● DB2:IBM公司的RDBMS。
● PostgreSQL:开源的RDBMS。
● MySQL:开源的RDBMS。
二:数据库的结构
1:RDBMS的常见结构
RDBMS最常见的系统结构是客户端/服务器类型(C/S)结构。
2:表的结构
● 用来管理数据的二维表在关系数据库中简称为表。
● 根据SQL语句的内容返回的数据同样是二维表格式。
● 表的行称为记录,表的列称为字段。
● 关系数据库必须以行作为单位进行数据读写。
● 一个单元格内只能输入一个数据。
如下图:
三:SQL概要
1:标准SQL
国际标准化组织(ISO)为SQL制定了相应的标准,以此为基准的SQL称为标准SQL
虽然不同的RDBMS存在一些特使的SQL语句,但学会标准SQL就可以在各种RDBMS中书写SQL语句了。
2:SQL语句及其种类
SQL使用关键字、表名、列名等组合成一句SQL语句来描述操作的内容。
根据指令种类不同,SQL语句可分为三种:
● DDL(数据定义语言):用来创建和删除数据库或表等对象。DDL包含以下指令:
① CREATE:创建数据库或表。
② DROP:删除数据库或表。
③ ALTER:修改数据库或表。
● DML(数据操纵语言):用来查询或变更表中的记录。DML包含以下指令:
① SELECT:查询表中的数据。
② INSERT:向表中插入数据。
③ UPDATE:更新表中的数据。
④ DELETE:删除表中的数据。
● DCL(数据控制语言):用来确认或取消对数据进行的更改。DCL包含以下几种指令:
① COMMIT:确认数据的变更。
② ROLLBACK:取消数据的变更。
③ GRANT:赋予用户操作权限。
④ REVOKE:取消用户的操作权限。
3:SQL的基本书写规则
● SQL语句要以分号(;)结尾。
● SQL不区分关键字的大小写,但是插入到表中的数据是区分大小写的。
通常情况下,约定:
① 关键字大写
② 表名的首字母大写。
③ 其余(列名等)小写。
●字符串和日期常数需要使用单引号(‘)括起来。
如’abc’这样的字符串,或’2017-12-01’这样的日期。
● 数据常数无需加单引号(直接书写数字即可)。
如1000这样的数字直接书写即可。
● 单词需要半角空格或换行符来分隔。
如:CREATE TABLE Product;
四:表的创建
1:数据库的创建
CREATE DATABASE <数据库名称>;
如我创建一个名为shop的数据库:
CREATE DATABASE shop;
2:表的创建
创建表的语句:
CREATE TABLE <表名>
( <列名1> <数据类型> <约束条件>,
<列名2> <数据类型> <约束条件>,
<列名3> <数据类型> <约束条件>,
<列名4> <数据类型> <约束条件>,
....
<该表的的约束条件1> <该表的的约束条件2>...);
例如我创建的Product表:
3:命名规则
● 数据库名称、表名、列名可以使用英文字母、数字和下划线三种字符组成。
● 名称必须以英文字母开头。
● 名称不能重复。
如下图所示:
4:数据类型的指定
● 所有列都必须指定数据类型。
● 数据类型包括数字型、字符型和日期型等。
我们常用的有如下四种数据类型:① INTEGER型:指定存储整数的列,不能存放小数。
② CHAR型:定长字符串型,所谓定长字符串,就是当列中存储的字符串长度达不到最大长度时,使用半角空格进行补齐。
例如,我们向CHAR(8)类型的列输入’abc’的时候,会以’abc ‘(后面跟5个空格)的形式保存下来。
③ VARCHAR型:可变长字符串型,顾名思义,即使字符串未达到最大长度,也不会使用空格补齐。
④ DATE型:指定存储日期的数据类型。
如下图:
5:约束的设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。
例如:
product_id CHAR(4) NOT NULL;
product_name VARCHAR(100) NOT NULL;
product_type VARCHAR(32) NOT NULL;
数据类型的右侧设置了NOT NULL 约束,NULL是代表空白的关键字,NOT NULL 就代表不能输入空白,也就是必须输入数据的约束。
再例如:
PRIMARY KEY (product_id)
这是用来给 product_id 列设置主键约束的,主键就是特定一行数据的列,也是唯一确定的一行数据的列。
五:表的更新和删除
1:表的删除
使用语句:
DROP TABLE <表名>;
删除了表是无法恢复的。
2:表定义的更新
添加列的语句:
ALTER TABLE <表名> ADD COLUMN <列的定义>;
删除列的语句:
ALTER TABLE <表名> DROP COLUMN <列名>;
表定义变更之后无法恢复。
3:向Product表中插入数据
语句如下:
BEGIN TRANSACTION;
INSERT INTO Product VALUES ('0001', 'T衫', '衣服', 1000, 500, '2017-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2017-09-11');
..........
..........
..........
COMMIT;
注释:在MySQL中,需要把第一行的 BEGIN TRANSACTION; 改写为:
START TRANSACTION;
向Product插入数据后,结果如下图所示:
下一节我们再学习SQL的查询语句。
每天学习一点点,每天进步一点点。