关系型数据库:
关系模型把世界看成是由实体和联系组成的,而关系型数据库是将数据库表作为实体,以数据库表的主键和外键的关联关系描述联系的一种数据库结构;
关系型数据库:
一对一:一条主表记录对应一条从表记录,同时一条从表记录也对应一条主表记录
一对多:一条主表记录对应多条从表记录,同时一条从表记录只对应一条主表记录
多对多:一条主表记录对应多条从表记录,同时一条从表记录也对应多条主表记录
数据库管理系统:
关系型数据库只是一个保存数据的容器,大多数带护具依靠一个称为数据库管理系统DBMS的软件来管理数据库中的数据
管理关系型数据库的软件称为关系型数据库管理系统RDBMS 数据库应用程序通过RDBMS与关系型数据库进行交互
数据库管理系统分类:
本地数据库管理系统
数据库服务器管理系统
SQL:结构化查询语言 是一种利于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言
SQL语句分类:
数据定义语言DDL 创建,修改,删除数据库的内部数据结构
数据查询语言DQL 用于数据库中数据的查询
数据操作语言DML 用于数据库中数据的增,删,查,改
数据控制语言DCL 控制数据库的访问权限
数据类型
整型:int
浮点型:float,double,decimal(10,2 10位有效数据,小数位保留2位)
字符型:varchar (20)
日期型:date
PRIMARY KEY定义当前列为主键,主键不能为空,且不能重复
AUTO_INCREMENT设置当前列为自动增长列,由DBMS为该列分配值,确保该列的值不重复。
条件判断:
case when
SELECT g.* ,( CASE WHEN grade>= 90 THEN '优'
WHEN grade >=80 AND grade <90 THEN '良'
WHEN grade >=60 AND grade <80 THEN '中'
WHEN grade <60 THEN '差'
-- else '差 '
END
) '评价'FROM t_student g;
SELECT g.* ,(CASE WHEN grade>= 90 THEN '优' WHEN grade >=80 AND grade <90 THEN '良' WHEN grade >=60 AND grade <80 THEN '中' WHEN grade <60 THEN '差' -- else '差 ' END
)'评价'FROM t_student g;
-- 删除数据 TRUNCATE TABLE 表名: DELETE 会记录日志,删除后还可以恢复,但是效率低, TRUNCATE不会记录日志,不可恢复,效率高
聚合函数
count 统计行的数量
sum 获取单个列的合计值
avg 计算某个列的平均值
max 计算列的最大值
min 计算列的最小值
HAVING和WHERE的区别
二者都是过滤条件 WHERE运行在分组前,因此不能执行任何聚合函数,HAVING是运行在分组后,只能用做聚合函数过滤
SQL执行的顺序
执行FROM;
WHERE条件过滤;
GROUP BY 分组;
执行SELECT投影列;
HAVING条件过滤;
执行ORDER BY排序
在分组查询中,能够查询的字段,只能是分组字段和聚合函数。
数据完整性
为什么要保证数据完整性:
为了防止垃圾数据的产生,从而影响数据库的执行效率
数据完整性分类:
实体完整性 保证一行数据是有效的 不能存在两条一模一样的数据
实现方法:
主键约束 Primary Key主键不能为空,也不能重复 一个表只能有一个主键
唯一约束 Unique 指的是给定列的所有值必须唯一,该列在表中每一行的值必须唯一,可以为空,并且可以在一张表中给多个列设置唯一约束
域完整性 保证一列数据是有效的 指的是指定列的输入有效性
实现方法: 非空约束 Not Null
cotent table (
id INT PRIMARY KEY AUTO_INCREMENT,设置主键
manName varchra(20) NOT NULL, --- NOT NULL表示该列必须添加值,不能为NULL
sex VARCHAR(10) DEFAULT'男' --- DEFAULT表示该列不插入值,则默认为男,如果插入了,则以插入的值为准
);
默认约束 Default
检查约束 Check(MySQL不支持)
引用完整性 保证引用编号是有效的 指的是 外键中出现的数据,主键中必须出现
实现方法:
用户自定义完整性 保证自定义规则
两个表之间如果存在外键约束时,那么删除主表记录时,由于外键约束存在,无法删除有从表记录引用的主表记录 这时,删除主表记录有两种方式:
1.级联删除:将主表记录对应的从表记录先删除,再删除主表记录
DELETE FROM troom WHERE manId = 1; DELETE FROM tman WHERE id= 1;
2.外键设空:将主表记录对应的从表记录外键设置为null,再删除主表记录
UPDATE FROM t-room SET manId = null WHERE manId= 2; DELETE FROM t_man WHERE id = 2;