我们之前了解交叉链接(交叉链接的bug、数据太多有大量的无用数据)、自然链接(有可能会丢失数据),说到数据丢失就使用外连接,外连接分为左连接和右链接。
一、外连接
左连接:前面一个表
显示以左表为准,左表数据会全部显示,右表的数据,有的显示,没有的为空。
select * from 左表表名 left join 右表 on 左表.字段=右表.字段
有链接:后面的表
显示以右表为准,右表数据会全部显示,左表的数据,有的显示,没有的为空。
select * from 左表表名 right join 右表 on 左表.字段=右表.字段
二、子查询 and 表名该别名
(1)在查询中,使用另外一个查询结果。
select 字段,字段 from 表 where 字段=(select 聚合函数(字段)from 表名)
(2) 该别名
select 字段名 from 表名 as 新名.......
表如果用了新名字,那么必须使用,否则会报错
三、数据库设计方法(了解)
ER模型:表与表之间的关系。
概念:
主键:用于在表中唯一的标识一个字段。
外键:用于另外一个表主键,通过使用外键,可以将两个表关联起来。
关系的类型别:
一对一;
一对多;
多对多;
格式:froeign key(字段) references 表(字段)
四、视图
什么是视图 ???
视图是一个虚构的表,可以给用户看到指定的区域的一部分数据。
视图的英文 :View
格式: create view 视图名 as select 语句 创建完记得给用户授权
复习一下如何授权: grant all on 表名.视图名 to “用户名”@“主机地址” identified by “密码”
视图就结束了。
五、存储过程
作用:快速向数据库写入大量测试数据。
定义一个存储过程的格式:
delimter // 储存开始;定义一个符号
create procedure 存储过程() 定义存储名
begin 开始
sql语句
end // 结束
delimter;
调用、使用存储过程
call 存储过程名
使用一个循环案例:
delimter// 定义开始
create procedure nn() 创建存储名
begin 开始存储
delcare i int 定义i为整型
set i = 0 设置i为0
while i<1000 do 当i小于1000是执行循环
insert into 表(字段)values(i) 向表中插入数据
set i=i+1; 将i的值加1
end while; 循环结束
end// 定义结束
delimter;
call nn() 调用存储过程
六、事物
(1)将多个 sql 语句组合成一个整体,这个整体就是一个事物(2)事物中的所有语句要么都执行,要么都不执行(3)事务中的语句,如果只有部分执行成功,那么就需要将这个事物进行回滚操作(4)回滚:将数据恢复到执行之前的状态(5)通过使用事物,可以保证数据的一致性
对事物进行操作 :
(1)提交事物;
(2)回滚事物
注意:在事物没有提交前,其他用户是看不到事物的操作
操作命令格式:
begin 开启事物。
commit 提交事物,提交之后,事物自动结束。
rollback 回滚事物,回滚之后,事物自动结束。
比如下面案例:
提交事物: create table 表(字段 int整型属性) begin insert into 表 values(3) commit 提交事物 select * from 表 查看表
回滚事物: create table 表(字段 int整型属性) begin insert into 表 values(3) rollback 回滚事物 select * from 表 查看表
okkk,数据库到此就结束了,简单了解,快乐你,我,他。