数据库连接
内连接
内连接 ---拼接查询结果 内部有联系,使用内连接 格式: [inner] join ----inner可省
结果: 从左表中取出每一条记录,去右表中与所有的记录进行匹配; 匹配必须是某个条件是左表中与右表中相同,才会保留结果,否则不保留;
基本语法: 左表 [inner] join 右表 on 左表.字段 = 右表.字段;
注意事项:
1、on 表示连接条件;条件字段代表相同的业务含义 (如 stu.cid 和 cla.id) 学生stu表中的班级cid 和 班级cla表中的id
2、内连接可以没有连接条件,没有on之后的内容, 这时候系统会保留所有结果(笛卡尔集)
3、内连接可以使用where 代替 on 通常不用where,因为where没有on效率高 on指匹配到第一条成功的就结束,其他不匹配; 若没有,不进行匹配 而where会一直匹配,进行判断
4、通常使用字段别名 表别名 在查询数据的时候,不同表有同名字段, 这时候需要加上表名才能区分, 而若表名太长,使用表别名 若不想使用默认的字段名 可以通过[as] 设置字段别名 。
外连接
外连接 --以某一张表为基表 进行相关查询 outer join
结果:以某张表为主,取出里面的所有记录, 然后每条与另外一张表进行连接, 不管能不能匹配上条件,最终都会保留, 能匹配,正确保留; 不能匹配其他表的字段都置空null
分类:分为两种 左连接,右连接 left join 左外连接---左连接,以左表为主 right join 右外连接---右连接,以右表为主
基本语法: 左表 left/right join 右表 on 左表.字段 = 右表.字段;------条件必须有
交叉连接
交叉连接 连接查询 cross join:
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,
返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
自然连接
自然连接 natural join 自然连接
就是系统自动匹配连接条件 系统以字段名字作为匹配模式(同名字段作为字段,多个同名字段都作为条件)
自然连接:可以分为 自然内连接 和 自然外连接 内连接 natural left join 自然左外连接
其实:内连接和外连接都可以模拟自然连接,
使用同名字段,合并字段 左表 left/ right inner join 右表 on using(字段名) -----使用同名字段,合并字段
--自然内连接 select * from stu natural join cla;
-自然左外连接 select * from stu natural left join cla;
--外连接模拟自然左外连接 select * from stu left join cla using(id);
内连接和外链接的区别
主要区别在于,
1 即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行
当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null
2 内连接分为:等值连接、不等值连接、自然连接;外链接分为左连接和右连接
关系型数据库和非关系型数据库的区别
1.关系型数据库通过外键关联来建立表与表之间的关系,
2.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
3 非关系型数据库中,我们查询一条数据,结果出来一个数组
4 关系型数据库中,查询一条数据结果是一个对象。
比如 有一个学生的数据;班级的数据:
姓名:张三,性别:男,学号:12345,班级:二年级一班
班级:二年级一班,班主任:李四
关系型数据库中,我们创建学生表和班级表来存这两条数据,并且学生表中的班级存储的是班级表中的主键。
非关系型数据库中,我们创建两个对象,一个是学生对象,一个是班级对象,用java来表示就是:通过设置Student类的classid等于Grade类的id来建立这种关系;
class Student {
String id;
String name;
String sex;
String number;
String classid;
}
class Grade {
String id;
String name;
String teacher;
}
注1:数据库事务必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,isolation隔离性,Durability持久性。
注2:数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库。
相关阅读
笔者在大学时用过Dreamweaver做过静态和动态的站点,当时用的数据库就是access,很惭愧当时笔者是一个很菜很菜的菜鸟,很多设计还需要
数据库属性hibernate.dialect设置正确的 org.hibernate.dialect.Dialect子类. 如果指定一种方言, Hibernate将为上面列出的一
相比备受吐槽的“刘海屏”、人脸解锁等设计,手机的秒变PC功能就显得更有技术含量和实用了。在华为Mate 10推出PC模式之时就彻底虏
关联映射:一对一 一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。数据表间一对一
一、Oracle概念 oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或