ER图: Entrty Relation (实体关系)
矩形表示实体
椭圆表示属性
菱形表示实体之间的关系
外键约束:
alter table 需要添加关系的表名 add
foreign key (当前表中的列名) references 被引用的表名(被引用表的列名);
第二种方式:
create table coder_project(
coder_id int,
project_id int,
foreign key(coder_id) references coder(id),
foreign key(project_id) references project(id)
);
多表查询:
内连接、左外连接、右外连接、全连接
内连接: (显示的内容:a.id,b.id)
select * from 表1,表2 where 表1.列名=表2.列名;
select * from 表1 innerjoin 表2 on 表1.列名=表2.列名;
左外连接:
select * from 表1 left outer join 表2 on 表1.列名=表2.列名;
右外连接:
select * from 表1 right outer join 表2 on 表1.列名=表2.列名;
全连接:
左连接 uniton all 右连接; 有重复记录
改为 左连接 uniton 右连接;
子查询:(查询嵌套)
查询不及格的学生:使用in
select * from student where student_id in (select student_id from studentcourse where score <60);
查询不及格的学生:使用exists 只要子查询有结果就显示主查询的记录 类似循环嵌套
select * from student where exists (
select student_id from studentcourse where score <60 and student.id=studentcourse.student.id);
all\any:
all(1,2,3);大于1且大于2且大于3
any(1,2.3);大于1或大于2或大于3
– 向上取整
select ceiling (3.0);
– 向下取整
select floor (3.1);
– 保留两位小数 四舍五入
select format (3.14159,2);
自关联表:
对记录做增删改是主表与子表名不能相同
创建临时表解决