数据库结课篇

         上个文章我们说了交叉链接和自然链接(会出现导致数据缺失,解决方法就是我们下面说的外连接)外链接没有说完,今天我们就接着上个的继续说

外链接

外链接:分为左外链接和右外链接

 左外链接:

显示结果以左表为准

左表中的数据会全部出现,右表中的数据,有就显示,没有就显示为空

格式:

select * from 左表 left join 右表 on 左表.字段=右表.字段

 右外链接:

显示结果以右表为准

右表中的数据会全部出现,左表中的数据,有就显示,没有的就显示为空

格式:

select * from 左表 right join 右表 on 左表.字段=右表.字段

 给字段和表名起别名:

格式:

#字段:
select 字段名 as 新名字 from 表名....

#表:
select 字段名 from 表名 as 新名字....

#注意:字段起了别名后只是在表里面修改了后面不可以用新名字
#表起了别名后面条件就必须用新的名字,不然就会报错

数据库设计方法

        ·ER模型:表和表的关联关系

概念:

主键:是用于在表中唯一的标识一个字段

外键:外键就是另一个表的主键,通过使用外键,就可以将两个表关联起来

关系的类型:一对一、一对多、多对多

foreign key(本表的外键) references 另一个表名(该表的主键)

例如: 

foreign key(classid) references tb2(classid)
给classid字段转换成外键,指向tb2表的classid这个字段
这个写在创建表里

视图(view)

视图是什么?

        视图可以认为成是一张表

        但是这表存在内存中的虚表,断电后会消失

作用:通过视图,可以让用户只能访问数据库中一部分数据(要给那个用户授权这个表)

格式:

create view 视图名 as select 语句

例如:

给jerry用户授权只能看到students表中的stuid小于10的数据

#先创建一个视图
create view new1 as select * from students where stuid<10

#给jerry用户授权指定数据
grant all on hellodb.new1 to "jerry"@"localhost" identified by "123"

存储过程:

作用:快速向数据库写入大量的测试数据

定义储存过程的格式:

delimiter //        #存储过程的开头,定义一个符号
    create procedure 存储过程名()        #定义存储过程的名字
    begin        #开始储存过程
        sql语句
    end //        #定义结束
delimiter

调用/使用存储过程:

call 存储过程名()

案例:

delimiter //        #定义开头
    create procedure m1()        #创建存储过程,m1
        begin        #开始储存过程
            declare i int;        #declare定义变量i,类型是整形
            set i=0;         #设置变量i为0
            while i<100 do       #当i小于100的时候执行循环
                insert into tb1(name) values(i);        # #向表中插入数据
                set i=i+1;        #将i的值加1
            end while;        #结束循环
        end //        #定义结束
delimiter;
call m1()        #调用存储过程

事物:

将多个sql语句组合成一个整体,这个整体就是一个事物

事物中的所有语句是要么都执行,要么都不执行

事物中的语句,如果只有部分执行成功,那么就需要将这个事物进行回滚操作

回滚:就是将数据恢复到执行之前的状态(但是提交后就不可以恢复到之前了)

通过使用事物,可以保证数据的一致性

事物的操作:提交事物、回滚事物

提交事物:

让事物中的sql语句,真正的生效

如果使用了事物,那么在事务提交之前,其他用户是看不到事物中的操作的

 操作的命令格式:

begin        #启动事物
commit        #提交事物,提交之后,事物自动结束
rollback        #回滚事物,回滚之后,事物自动结束

案例:

begin        #启动事物
    insert into 表名 values(1)    #插入数据
commit        #提交事物
roollback        #回滚事物

一条条执行,当执行插入数据后表中是没有的但是用命令查看是可以看到的,执行回滚事物后就看不到了,当执行提交后就都可以看到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值