一开始我建好了两张表,并在其中一张准备作为外键的表中添加了数据,这个时候再添加外键关系,则这个外键是添加不了的,是因为先有主键再有外键,外键一般是引用主键表中的数据,主外键关系是给两张表建立一种约束关系,让数据更合理更规范。因为我们的sql语句也可以进行连接表关系的,大可不必去建立外键关系。理解一对,比如一个锁和一把钥匙;一个丈夫和一个妻子;挂号和住院。理解一对多,比如一个部门和多个员工;一个班级和多个学生。理解多对多,比如。资源菜单和角色,多对多一般需要中间表连接关系,创建两个外键关系。
高级查询有子查询和多表联查。
子查询,一条查询语句的结果充当另一个查询语句的条件。如果子查询语句得到的结果是多个的时候,充当另一个查询语句的条件的时候用IN。最多嵌套32层。
多表联查包括内联查和外联查。
想想为什么会出现多表联查?假如我们有两张表,其中一张有1000条数据,这个时候我获取到另一张表一条信息,把这个信息作为条件去这个含有1000条的数据表中查询想要的结果,整个过程中它执行了多了次呢?1001次。所以出现了多表联查这个概念。当我们要查询的数据信息存在多张表的时候,我们必须想办法把两张表联系起来。一般select * from 表1,表2,会产生笛卡尔现象,解决方式利用外键关系去除现象。
内联查,INNER JOIN ON 只有存在关系才能查到,内联查也只能解决一些问题,而另一些问题必须寻求另一种方式,那就是外联查。
外联查又有左外联和右外联。
左外联,LEFT JOIN ON 以左表为主,主表的信息全部会显示,就算这条信息和其它表没有关系,且右表和左表有关系的数据才会显示;
右外联,RIGHT JOIN ON 以右表为主,主表的信息全部会显示,就算这条信息和其它表没有关系,且左表和右表有关系的数据才会显示。
必须非常熟悉两个五-----5句最基本语法和5个常用聚合函数。
5句最基本语法:
1,INSERT INTO 表名 (字段) values ();或者 INSERT INTO 表名 VALUES ();插入到表值呢?
2,update 表名 set 表名=值;更新表设置字段等值;
3,delete from 表名 where +condition;从哪张表删除条件呢?
4,select * from 表名 where + condition;从哪张表查询到什么条件呢?
5,select * from 表名 where .......group by ........having .......order by ..........
5个常用聚合函数:
max() min() sum() count() AVG();操作的单位是组,使用之前必须有组的存在。