三大泛式——数据库设计规范
1.引入目的:
(1)保证数据库设计的合理性
- 1.数据库设计关系整个系统的架构,关系到后续的开发率
- 2.主要包含设计表结构和表的关系
(2)合理数据库
- 结构合理
- 冗余较小
- 尽量避免插入删除的异常
(3)如何保证数据库设计水平
- 范式,质量越高的范式,设计水平越高
(4)什么是范式
- 数据库设计规范是符合某一种级别的关系模式的集合
2.分类
(1)第一范式
- 最基本的范式
- 数据表每一列都是不可分割的基本数据项,同一列中不能有多个值(唯一性)
- 确保每列保持原子性(不可分)
- 根据实际需求合理设计
- 字段不能再分
(2)第二范式
- 确保数据表中每一列都和主键相关,而不是主键的一部分(联合主键)
- 不存在局部依赖
(3)第三范式
- 确保数据表中的每一列数据都和主键直接相关,而不是间接相关
- 属性不依赖于其他非主属性
- 不含传递依赖(间接依赖)
(4)第四范式
(5)第五范式
- 各个范式依次嵌套(从里到外,从小到大)
- 范式越高质量越高,越难实现,一般达到第三层就可避免出错
3.优缺点
- 优点 :
结构要合理
冗余较小
尽量避免插入删除修改异常 - 缺点:
性能降低:多表查询速度慢
根据实际灵活处理
必要情况可以增加冗余提高效率
4.数据表之间的关系
- 一对一:学生和学生证
- 一对多:学生和班级
- 多对多:学生和课程
5.如何使用数据表之间的关系
- 使用外键
- 一对多
- 外键+唯一
- 一对一
- 引入中间表
- 多对多表示为俩个一对多
6.Mysql的远程管理工具
- Mysql-font自带
- Mysql-font
- SQLyog
- Navicat Premium
- phpMyAdmin(B/S)
7.表记录操作
1.添加数据(记录)
- 格式一:insert into 表名[(字段名1,字段名2,。。。)] values(值1,值2,。。。)
- 注意:字段名可以省略不写,但value值必须表中都写;如果需要添加某个特定的值,在前面表名后写上相应的字段名
- 格式二:insert into 表名 set 字段名1=值1[,字段名2=值2,。。。字段名n=值n] 例:insert into t1 id=1,name=‘qwe’;
- 同时添加多条记录:insert into 表名[(字段名1,字段名2,。。。)] values(值1,值2,。。。值n)(值1,值2,值3…值n)
2.记录删除
- delete from 表名; 删除所有记录
- delete from 表名 where 字段名1=值1 and|or 字段名n=n值; 删除一或几条
- truncate [table] 表名;
3.记录查询
基本查询语法
1.所有字段
select * from 表名
注意:表示所有字段。除非需要表中所有字段的数据,否则不要使用通配符,它会降低查询效率
2.指定字段
select 字段名1,字段名2,......字段名n from 表名
3.条件字段
关系运算符:>,<,=,!=<>,
select 字段名1,字段名2,......字段名n from 表名 where 关系表达式
如果字符串类型是字符串关系运算符按照字符串进行比较
4.带IN关键字查询(sql特有)(包含 or也可实现)
select *|字段1,字段2...字段n from 表名 where 字段名 [not] in(元素1,元素2,元素3......)
5.带between和and的关键字查询(范围 in或and也可实现)
select *{字段名1,字段名2......字段名n} from where 字段名 [not] between 值1 and 值2;
6.空值查询
select *{字段名1,字段名2......字段名n} from where 字段名 is [not] null 值1;
7.带distincs关键字的查询(去重)
select distinct 字段名 from 表名
select distinct 字段名1,字段名2...字段名n from 表名
8.带like关键字的查询(模糊查询)
select *|字段1,字段2...字段n from 表名 where 字段名 [not] like ‘匹配字符串’;
9.匹配符:%和下换线_
(1)%:
- %可以匹配任意长度的字符串,包括空字符串
- 可以匹配任意位置:蒙A%2
- 匹配包含中间部分的字符串 :%…%
(2)_ :匹配单个字符
- 可以和%组合使用
- 如果要查询%或_需要用“/”转义字符来实现:‘/%’,‘/_’
10.带and关键字多条件查询
例:select * from 表名 on 字段名 and like ‘匹配字符串’
11.带or关键字的多条件查询(满足一个条件就都可以查询到)
12.or和and同用(and优先级高于or)
4.更新记录(修改记录)
- 格式一(全部记录):
UPDATE 表名 SET 字段名=值1,字段名2=值2...
- 格式二(特定记录):
update 表名 set 字段名=值1,字段名2=值2... where id=原值
- 格式三(符合条件记录):
update 表名 set 字段名=值 where 某字段的条件表达式