实体A对实体B为1对1,则在表A或表B中创建一个字段,存储另一个表的主键值
实体A对实体B为1对多:在表B中创建一个字段,存储表A的主键值
实体A对实体B为多对多:新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值
想一想:举些例子,满足一对一、一对多、多对多的对应关系
逻辑删除对于重要数据,并不希望物理删除,一旦删除,数据无法找回
删除方案:设置isDelete的列,类型为bit,表示逻辑删除,默认值为0
对于非重要数据,可以进行物理删除
数据的重要性,要根据实际开发决定
示例设计两张表:班级表、学生表
班级表classes
id
name
isdelete
学生表students
id
name
birthday
gender
clsid
isdelete
```
10 备份和恢复 备份运行mysqldump命令
mysqldump –uroot –p 数据库名 > python.sql; # 按提示输入mysql的密码 恢复连接mysql,创建新的数据库
退出连接,执行如下命令
mysql -uroot –p 新数据库名 < python.sql # 根据提示输入mysql密码 11 消除重复行在select后面列前使用distinct可以消除重复的行
distinct的使用需要放在第一个字段的位置,针对第一个字段进行去重。
select distinct 列1,... from 表名; 例: select distinct gender from students;例如,统计下在学生表的所有的学生班级
select distinct class from student; 12 where条件的运算符进阶 空判断
注意:null与''是不同的
判空is null
例1:查询没有填写个性签名的学生
select * from student where description is null;判非空is not null
例2:查询填写了个性签名的学生
select * from student where description is not null;例3:查询填写了身高的男生
select * from student where description is not null and sex=1; 运算符优先级优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出���并希望先算or,需要结合()使用
13 连接查询[连表查询、多表查询]当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回
mysql支持三种类型的连接查询,分别为:
内连接查询(inner join)查询的结果为两个表匹配到的数据
使用内连接,必须保证两个表都会对应id的数据才会被查询出来。