视图:

      - 什么是视图:数据库中表和视图都是其内部的对象,视图可以理解成一个虚拟的表, 视图本质就是取代了一段sql查询语句。

     - 为什么使用视图:因为有些数据的查询需要使用大量的sql语句,每次书写比较麻烦,使用视图可以起到sql重用的作用,可以隐藏表中的敏感信息。

     - 如何使用:

   格式:create view 视图名 as 子查询;

练习:

1:创建部门是20并且工资小于3000的视图

create view v_emp_20 as (select * from emp where deptno=20 and sal<3000);

2:创建每个部门的工资总和,平均工资,最大工资,最小工资的视图

create view v_emp_dept_info as (select deptno,sum(sal), avg(sal), max(sal), min(sal)   from emp group by deptno );

视图的分类:

       1. 简单视图:创建视图的子查询中不包含:去重,函数,分组,关联查询的视图称为简单视图,可以对数据进行增删改查操作

       2. 复杂视图:创建视图的子查询中包含:去重,函数,分组,关联查询的视图称为复

杂视图,只能进行查的操作。

Mysql课堂笔记(6)


视图

简单视图的增删改操作 操作方式和table一样

      1. 插入数据 如果插入的数据在视图中不显示但是原表中显示,称为数据污染。

insert into v_emp_10 (empno,ename)

values(10010,'Tom');

-正确写法

insert into v_emp_10 (empno,ename,deptno)

values(10086,'Jerry',10);

-可以通过with check option 关键字禁止出现数据污染

create view v_emp_30 as (select * from emp where deptno=30) with check option;

-测试:

insert into v_emp_30 (empno,ename,deptno)

values(10011,'张三',30);

insert into v_emp_30 (empno,ename,deptno)

values(10012,'李四',20);

        2. 修改数据 只能修改视图中存在的数据

   update v_emp_30 set ename='zhangsan' where empno=10011;(成功)

   update v_emp_30 set ename='汤姆' where empno=10010;(失败)

        3. 删除数据 只能删除视图中存在的数据

  delete from v_emp_30 where empno=10011;

        delete from v_emp_30 where empno=10010;

修改视图:

- 格式:create or replace view 视图名 as 子查询;

create or replace view v_emp_10 as(select * from emp);

删除视图:

drop view v_emp_10;

drop view if exists v_emp_10; 没有也不会报错

视图别名:

    - 创建视图的时候子查询对字段起了别名,则后期对视图进行操作只能使用别名。

create view v_emp_10 as (select empno,ename name from emp);

    - 测试:

update v_emp_10 set name='汤姆' where empno=10010;(成功)

update v_emp_10 set ename='汤姆aaa' where empno=10010;(失败)

视图总结:

    1. 视图是数据库中的对象,代表一段sql,可以理解成虚拟表。

    2. 作用:重用sql , 隐藏敏感字段。

    3. 分类:简单 和 复杂  简单(不包含去重 函数 分组 关联查询) 复杂反之只能查看。

    4. 插入数据时可能数据污染 通过with check option解决。

    5. 修改和删除只能操作视图中存在的数据。

    6. 起了别名 只能用别名。

mysql 没有外键 导出er图 mysql外键怎么设置可视化_mysql视图的作用是什么

mysql 没有外键 导出er图 mysql外键怎么设置可视化_mysql添加外键_02

Mysql课堂笔记(6)


约束

约束:

- 什么是约束:约束是给表字段添加的限制条件

非空约束 not null:

    - 字段值不能为null

create table t1(id int,age int not null);

    - 测试:

insert into t1 values(1,20);(成功)

insert into t1 values(2,null);(失败)

唯一约束 unique:

    - 字段值不能重复

 create table t2(id int,age int unique);

    - 测试:

   insert into t2 values(1,20);(成功)

   insert into t2 values(2,20); (失败)

主键约束 primary key

     - 字段值不能重复也不能为null

     - 创建表的时候添加主键

create table t_pri(id int primary key auto_increment);

     - 创建表后添加主键

create table t_pri2(id int); alter table t_pri2 add primary key (id);

  - 删除主键  一个表只能有一个主键

alter table t_pri2 drop primary key;

自增:

     1. 当字段的值为null的时候数值自动+1

     2. 删除数据数值不减

     3. 如果插入数据指定比较大的值,下次从最大值基础上+1,如果删除最大值,也是从曾经出现的最大值基础上+1

     4. 使用delete删除全表数据 自增值不变

     5. 使用truncate删除 自增数值清零

十四:默认约束 default

        - 当字段的值不赋值的时候 默认约束的内容生效

create table t_def(id int, age int default 10);

检查约束 check:

       - mysql语法支持 不报错 但是没有效果

create table t_check(id int,age int check(age>10));

外键约束:

   - 作用:

    1. 外键值可以为null,可以重复,但是不能是不存在的值

    2. 外键指向的表,不能先删除

    3. 外键指向的数据不能先删除,如果需要删除,先删除外键约束或先删除外键的数据

(断开关联关系)

     - 使用外键必须要求两张表相同的InnoDB引擎,myisam不支持外键约束

     - 除非特定情况 一般工作中不使用外键约束,使用java代码通过逻辑对插入和删除的数

据进行限制,因为加了外键约束后不方便测试

如何使用外键约束:

      1. 创建部门表

create table dept(id int primary key auto_increment,name varchar(10));

      2. 创建员工表

create table emp(id int primary key auto_increment,name varchar(10),deptid int,constraint    

      fk_dept foreign key(deptid) references dept(id));

     - 内容介绍

constraint 外键约束名 foreign key(外键字段) references 表名(主键)

      - 插入数据

insert into dept values(null,'神仙'),(null,'妖怪');

mysql 没有外键 导出er图 mysql外键怎么设置可视化_mysql视图的作用是什么

mysql 没有外键 导出er图 mysql外键怎么设置可视化_mysql添加外键_02

mysql 没有外键 导出er图 mysql外键怎么设置可视化_mysql添加外键_05

mysql 没有外键 导出er图 mysql外键怎么设置可视化_mysql视图的作用是什么_06