SQL关联语句
user
1 | 张三 | 1 |
2 | 李四 | 2 |
3 | 王五 | 2 |
4 | 赵六 |
department
1 | 教学部 | |
2 | 招生部 | |
3 | 班主任部 |
- user LEFT JOIN department ON user.id = departmrnt.id
- 将department表中的对应数据填充在对应的位置,user表的行数不变
- 有对应关系则对应,无则为null
- user RIGHT JOIN department ON user.id = departmrnt.id
- 以department表为主,将用户表中的数据对应过来。如果用户表中对应了多条,则department复制出相应的条数
- 最终表行数可能与department不相等,通常会多
U
user1 | 1 | 张三 | 1 |
user2 | 2 | 李四 | 2 |
user3 | 3 | 王五 | 2 |
user4 | 4 | 赵六 |
D
department1 | 1 | 教学部 |
department2 | 2 | 招生部 |
department3 | 3 | 班主任部 |
U*D
user1*department1 | user1*department2 | user1*department3 |
user2*department1 | user2*department2 | user2*department3 |
user3*department1 | user3*department2 | user3*department3 |
user4*department1 | user4*department2 | user4*department3 |
然后找到每一个user中departmentid对应的department中的departmentid
user1*department1 |
user2*department2 |
user3*department2 |
user4*null |
得到的user表行数不变
D*U
department1*user1 | department1*user2 | department1*user3 | department1*user4 |
department2*user1 | department2*user2 | department2*user3 | department2*user4 |
department3*user1 | department3*user2 | department3*user3 | department3*user4 |
然后找到每一个department中departmentid对应的user中的departmentid
department1*user1 |
department2*user2 |
department2*user3 |
department3*null |
得到的department表行数可能增加
SELECT u.*,d.* FROM u,d:相当于u x d (笛卡尔积)
SELECT d.*,u.* FROM u,d:想到与d x u (笛卡尔积)
SELECT u.*,d.* FROM u INNER JOIN d:如果希望从笛卡尔积中筛选数据,可以加ON u.xxx=d.xxx
SELECT u.*,d.* FROM u LEFT JOIN d ON u.xxx=d.xxx
SELECT u.*,d.* FROM u RIGHT JOIN d ON u.xxx=d.xxx
左连接和右连接的区别在于以哪个表为主(主表中的数据都会出现在结果中,即使没有匹配数据)
外键
- 外键是一种约束条件,设计师使用外键建立表与表之间的连接关系,外键指定的连接有业务意义。它可以强制保持数据的对应关系,不允许意外的数据(没有对应上的数据)存在。它还可以在外键表数据变化时,级联更新、删除或者设置NULL关联表主表中的数据
- 外键的存在是对关联查询(左、右、内连接等)的一种规范
- 外键保持数据一致性的选项
- Casvade:级联(当外键表(department)中的数据变化时,会更新、删除主表(user)中的数据)
- Set Null:设置为空(当外键表(department)中的数据变化时,会将主表(user)中的数据设置为Null,user数据不会被删除)
- No Action/Restrict:禁止操作(如果更新外键表时,主表中有与其关联的数据,则更新操作失败,相当于未执行任何操作。如果非要更新、删除则应现将关联数据删除或者通过设置为其他值的方式断开关联关系)
- 命名规则:fk_主表名_关联表名
- fk_:开头一看就要知道是外键
- 主表名_关联表名:可以很清楚的看到是哪两个表之间的关系
JSP incllude
JSP 的 include 指令可以实现JSP代码的共享引用,可以解决JSP代码的重复问题
代码重复会造成严重的后期维护问题,非常不利于代码的修改、升级
代码重复是质量查的最常见表现,是重构要消灭的第一目标。
不断地通过重构消除项目中的重复代码,就能够提升能力。
为什么做移动页面要使用谷歌浏览器
因为IOS和Android系统中的浏览器都是WebKit内核,而谷歌浏览器使用的就是WebKit内核
Firefox的查看器和网络监视等工具是中文的