Java之MySQ(二)

外键约束:

首先创建一个表

create table employee
(
    id int primary key auto_increment,
    name varchar(50) not null,
    dpptName varchar(50)
);

使用外简约束的优势和问题:
    1.主表从表关联性很强
    2.主表从表数据操作时存在更多的约束
    3.操作规范性更强
问题:
    1.从表操作过程中,添加和修改约束过强。需要首先操作主表
    2.主表操作过程中删除和修改约束过强,需要首先操作主表
    3.数据操作过程中,整个数据库删除更新操作过于繁琐,后期维护压力过大。
外键约束虽然可以从语法上约束一定操作,但是会导致更多的问题,在开发中不允许使用。

级联操作

在外键约束的清空下,操作 主表和从表都有很多约束
所以SQL引入了级联操作:
    级联删除 on delete cascade
    级联修改 on update cascade
主表操作执行删除或者修改时,对于外键约束的从表会对应操作。
【代码】

数据表修改 

添加字段:
    alter table employee add age int;
修改字段对应的数据类型
    alter table employee modify name char(50) not null;
修改字段名字和数据类型
    alter table employee change name userName varchar(50) not null;
删除字段
    alter table employee drop age;
修改表名
    rename table employee to emp;

事务

什么是事务

    操作数据库,修改,删除慎用,修改删除操作过程中,如果出现操作失误,会导致出现数据丢失或被毁,
而且不能撤销该操作。
    事务可以认为是SQL语句处理的最小单元,具有一定的原子性,是由一条或者多条SQL语句组成,
事务执行完成,那么所有的SQL语句全部执行,都要执行成功。一旦出现任何一个SQL语句异常,
回到事务执行之前,事务执行失败。

事务的边界

开始:
    当前事务,当前一整套和业务逻辑相关的内容一起执行
    set autocommit = 0; //开启事务
    一旦执行上述语句,数据库SQL语句不再立即执行,而是一种虚拟表的状态,需要等待
提交之后才能生效,但是操作的过程中数据库可观察。

事务结束:
    1.确认没有问题 
        commit;  // 确认无误之后SQL语句提交执行,显式提交    
        隐式方式提交:一条创建,删除SQL语句,或者数据库正常关闭
    2.回滚操作
        rollback; //显式回滚,从  set autocommit = 0; 开始的SQL语句
                  //全部失效,回到没更改过的状态
        自动回滚,执行创建删除语句失败,或者数据库非正常退出

事务操作演示

【代码】

事务的特征

原子性:
    事务操作是一个整体,所有的SQL语句完成一个事务,事务只有两种可能性,执行成功,或者失败
一致性:
    事务如果操作失败,其中的所有数据操作过程,全部会回到原来的起点
隔离性:
    如果在事务情况下,查询数据是一种事务处理过程中数据展示的情况,但是在实际的数据库中是
没有发生数据变化的。只有事务commit提交之后才会更改
持久性:
    事务一旦执行成功,对于数据库的操作影响是持久性的。

权限管理

create user 'xiaoming' identified by '12456';
创建了一个小明用户,密码是123456

grant all on tbName.* to 'xiaoming'; 
给xiaoming用户授权tbName的所有权限

revoke all on tbName.* from 'xiaoming';
撤销所有权限

drop user 'xiaoming';
删除用户

创建用户

create user 'xiaoming' identified by '12456';
创建了一个小明用户,密码是123456

授权用户

grant all on tbName.* to 'xiaoming'; 
给xiaoming用户授权tbName的所有权限

撤销授权

revoke all on tbName.* from 'xiaoming';
撤销所有权限

删除用户

drop user 'xiaoming';
删除用户

视图 view

什么是视图

    视图是一个虚拟表,通过查询语句,从一个表或者多个表中查询得到的一个结果,可以作为一个
视图使用,使用的效果跟真实表一致。可以在视图中update,delete,insert操作,可以提高数据库的
安全性,同时便于用户操作

视图的特点

优点:
    1.简单化,数据所见即所得
    2.安全,用户有且只能修改当前可见数据
    3.逻辑的独立性,这里视图使用的是一张虚拟表,所有的操作并不会对数据库真实表[结构]造成影响。
缺点:
    1.性能较差,不管是SQL语句操作还是对数据存储的性能
    2.修改不方便,复杂视图在操作中是无法修改的

创建视图

语法:
    create view 视图名 as 查询数据结果[查询语句]

create view student as select student.id,student.name,student.sex
from student;
    student 不是一张真实存在的表,而是一个自定义查询结果的视图

select * from student where student.id = 150;

修改视图

修改视图中的数据,原表的数据会受到影响,而不会影响到原表的结构

update student set id = '007' where name = '小明';

修改当前视图的结构(不会修改原表的结构):
alter view student select id,name from student;

删除视图

dtop view 视图名;
删除操作不会影响原始数据。
发布了31 篇原创文章 · 获赞 41 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42597414/article/details/105042114