目录
一、数据模型的概念
1,层次模型
这种模型描述的数据组织形式像一颗倒置的树,它由节点和连线组成,其中节点表示实体。
2,网状模型
这种模型描述事物及其联系的数据组织形式像一张网,节点表示数据元素,节点间的连线表示数据间的联系。
3,关系模型
关系模型使用的存储结构是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。
二、E-R图的组成要素及其画法
1,实体(entity)是现实世界中客观存在并且可以互相区别的事物和活动的抽象。具有相同特征和性质的同一类实体的集合称为实体集,可以用实体名以及属性名集合来抽象和刻画。
2,属性(attribute)即实体所具有的某一特性,一个实体可由若干个属性来刻画。
3,联系(relationship)即实体集之间的互相关系。
三.关系数据库范式理论
关系数据库范式理论是数据库设计的一种理论指南和基础。它不仅能够作为数据库设计优劣的判断依据,还可以预测数据库可能出现的问题。
范式按照规范化的级别分为五种,即第一范式(1NF),第二范式(2NF),第三范式(3NF),第四范式(4NF),第五范式(5NF)。在实际的数据库设计过程中,通常需要用到的是前三类范式,下面对它们分别进行介绍:
1,第一范式
第一范式要求每一个数据项都不能拆分成两个或两个以上的数据项,即数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整理、实数、字符型、逻辑性及日期型等。
2,第二范式
如果第二个表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式。
3,第三范式
如果第一个表已经满足第二范式,而且该数据表中的任何两个非主键字段的数值之间不窜在函数依赖关系,那么该数据表满足第三范式。
四,创建与管理数据库
1,创建数据库
使用CREATE DATABASE或CREATE SCHEMA命令就可以创建数据库
语法格式如下:
CREATE DATABASE (数据库名)
CREATE SCHEMA (数据库名)
语句中的大小写单词为命令动词,输入命令时,不能更改命令动词含义,但MySQL命令解释器对大小写不敏感,所以输入命令动词时只要词义不变,与大小写无关。
DEFAULT:指定默认值
CHARACTER SET:指定数据库字符集
COLIATE:指定字符集的校对规则
2,打开数据库
创建了数据库之后,使用USE命令可指定当
语法格式如下:
USE 数据库名
这个语句也可以用来从一个数据库跳转到另一个数据库,在用CREATE DATABASE语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE来指定。
3,修改数据库
数据库创建后,如果需要修改数据库的参数,可以使用ALTER DATABASE命令
语法格式如下
ALTER DATABASE (数据库名)
ALTER DATABASE语法说明可参照CREATE DATABASE语法说明
4,删除数据库
如果需要删除已经创建的数据库,可使用DROP DATABASE命令
语法格式如下:
DROP DATABASE 数据库名
注意 这个命令必须小心使用,因为它将永久删除指定的整个数据库信息,包括数据中的所有表和表中的所有数据。
五,创建与管理数据库表
1,创建表
使用CREATE TABLE命令可以创建表
语法格式如下:
CREATE TABLE 表名
2,查看数据表
SHOW TABLES 数据表名
3,删除数据表
DROP TABLE 数据表名
删除数据表是指删除指定数据库中已存在的表;
在删除表的同时,存储在表中的数据都将被删除;
同时存在多个数据表时,多个数据表使用逗号分隔;
4,修改表结构
//修改字段
ALTER TABLE 数据表名 CHANGE ;
ALTER TABLE 数据表名 MODIFY ;
//新增字段
ALTER TABLE 数据表名 ADD ;
六,数据操作
1,数据插入
一旦创建了数据库和表,下一步就是向表里插入数据。可以通过INSERT或REPLACE语句实现
语法格式如下:
INSERT INTO 表名(列名1,列名2,...)
VALUSE(插入对应列名的数据)
代码中没有给出要插入的字段名列表,是因为如果在VALUSE中给出了全部列的插入数据,则可以省略字段名列表。
2,数据修改
要修改表中的数据,可以使用UPDATE语句。UPDATE可以用来修改单个表,也可以用来修改多个表
语法格式如下:
UPDATE 表名
SET 列名1=表达式1 [列名2=表达式2]
[WHERE 条件]
3,数据删除
1,从单个表删除
语法格式如下:
DELETE FROM 表名
WHERE 条件
2,从多个表中删除行
语法格式如下:
DELETE 表名1,表名2
FROM 表名列表
WHERE 条件
或
DELETE
FROM 表名1,表名2
USING 表名列表
WHERE 条件
4,删除表数据
使用DELETE 语句删除记录时,每次删除一行,并在事物日志中为所删除的每行进行记录,每当要删除表中所有记录,且记录很多时,命令执行较慢。
TRUNCATE TABLE 表名
七,数据查询
1,基础查询
1,最基本的查询语句
SELECT * FROM 表名;
2,改变列标题的显示
字段名 AS 标题名
3,选择指定列
SELECT 表达式
4,定义列别名
SELECT 列名 AS 列名
5,消除结果集中的重复行
SELECT DISTINCT 列名1,列名2
2,WHERE子句
WHERE子句必须紧跟在FROM子句之后,在WHERE子句中使用一个条件从FROM子句中间结果中选取行
语句格式如下
WHERE <判断运算符>
3,多表查询
1,多表连接
(1)链接方式
- 全连接 全连接是指将每个表的每行都与其他表中的每行交叉,以产生所有可能的组合
- 内连接 内连接是指通常要设定条件来得到结果集减少且有意义的表
- 外连接 外连接包括左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)两种。
2,join连接
使用join关键字建立多表连接时,join子句定义林如何使用join关键字连接表
语法格式如下
表名1 inner join 表名2
on 连接条件 using 列名
使用join关键字的连接主要分为以下两种
(1),内连接
指定林inner关键字的连接是内连接,内连接是在from子句产生的中间结果中应用on条件后得到的结果
(2),外连接
指定了outer关键字的连接为外连接
3,in子查询
(1)in子查询用于进行一个给定值是否在子查询结果集中的判断
语句格式如下
表达式 (not)in (子查询)
当表达式与子查询的结果表中的某个值相等时,in谓词返回true,否则返回false,若使用了not,则返回的值刚好相反
(2)比较子查询
这种子查询可以认为是in子查询的扩展,它使表达式的值与子查询的结果进行比较运算
如果子查询的结果集只返回一行数据,可以通过比较运算符直接比较;如果子查询的结果集返回多行数据,则需要用{all|some|any|}来限定。
3,exists子查询
exists谓词用于测试子查询的结果是否为空表,若子查询的结果集不为空,exists返回true,否则返回false。exists还可以与not结合使用,即not exists,其返回值与exists刚好相反
语法格式如下
(not) exists (子查询)