MySQL入门命令之视图、变量

视图

含义:虚拟表,和普通表一样使用
MySQL15.1版本出现的新特性,是通过表动态生成的数据
视图:MySQL从5.0.1版本开始提供视图功能。一种虚拟
存在的表,行和列的数据来自定义视图的查询中使用的表
,并且是在使用视图时动态生成的,只保存了sql逻辑,不
保存查询结果

应用场景:

– 多个地方用到同样的查询结果
– 该查询结果使用的sql语句较复杂

好处

重用sql语句
• 简化复杂的sql操作,不必知道它的查询细节
• 保护数据,提高安全性

创建视图

create view 视图名
as
查询语句;


mysql> CREATE VIEW v1
    -> AS
    -> SELECT * FROM departments WHERE location_id=1700;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from v1;
+---------------+-----------------+------------+-------------+
| department_id | department_name | manager_id | location_id |
+---------------+-----------------+------------+-------------+
|            10 | Adm             |        200 |        1700 |
|            30 | Pur             |        114 |        1700 |
|            90 | Exe             |        100 |        1700 |
|           100 | Fin             |        108 |        1700 |
|           110 | Acc             |        205 |        1700 |
|           120 | Tre             |       NULL |        1700 |
|           130 | Cor             |       NULL |        1700 |

mysql> create view v3 as
    -> select * from departments;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from v3 where location_id=1700;
+---------------+-----------------+------------+-------------+
| department_id | department_name | manager_id | location_id |
+---------------+-----------------+------------+-------------+
|            10 | Adm             |        200 |        1700 |
|            30 | Pur             |        114 |        1700 |
|            90 | Exe             |        100 |        1700 |
|           100 | Fin             |        108 |        1700 |
|           110 | Acc             |        205 |        1700 |
|           120 | Tre             |       NULL |        1700 |
|           130 | Cor             |       NULL |        1700 |

视图的修改

mysql> create view v as select * from departments where location_id=1700;
Query OK, 0 rows affected (0.00 sec)
方式一
mysql> create or replace view v as select * from departments where location_id=1400;
Query OK, 0 rows affected (0.00 sec)
方式二
mysql> alter view v as select * from departments where location_id=1200;
Query OK, 0 rows affected (0.00 sec)

删除视图

mysql> drop view v,v1;
Query OK, 0 rows affected (0.00 sec)

查看视图

mysql> desc v;
+-----------------+------------+------+-----+---------+-------+
| Field           | Type       | Null | Key | Default | Extra |
+-----------------+------------+------+-----+---------+-------+
| department_id   | int(4)     | NO   |     | 0       |       |
| department_name | varchar(3) | YES  |     | NULL    |       |
| manager_id      | int(6)     | YES  |     | NULL    |       |
| location_id     | int(4)     | YES  |     | NULL    |       |
+-----------------+------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

show create view v;#不大好用

视图的插入更新删除

mysql> create or replace view v as select last_name,email from employees;
Query OK, 0 rows affected (0.00 sec)
插入
mysql> insert into v values('张飞','zg@qq.com');
Query OK, 1 row affected (0.01 sec)

mysql> insert into employees(last_name,email) values('test','sete');
Query OK, 1 row affected (0.00 sec)
更新
mysql> update v set last_name='张无忌' where last_name='张飞';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
删除
mysql> delete from v where last_name in ('张无忌','test');
Query OK, 2 rows affected (0.00 sec)

视图的可更新性和视图中查询的定义有关系,以下类型的
视图是不能更新的。
• 包含以下关键字的sql语句:分组函数、distinctgroup byhavingunion或者union all
• 常量视图
• Select中包含子查询
• joinfrom一个不能更新的视图
• where子句的子查询引用了from子句中的表

区别

含义:虚拟表,和普通表一样使用
mysql5.1版本出现的新特性,是通过表动态生成的数据

比如:舞蹈班和普通班级的对比
	创建语法的关键字	是否实际占用物理空间	使用

视图	create view		只是保存了sql逻辑	增删改查,只是一般不能增删改

表	create table		保存了数据		增删改查

变量

一:系统变量

说明:变量由系统定义,不是用户定义,属于服务器层面
注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别

1、查看所有系统变量

show global|【session】variables;

2、查看满足条件的部分系统变量

show global|【session】 variables like ‘%char%’;

3、查看指定的系统变量的值

select @@global|【session】系统变量名;

4、为某个系统变量赋值

方式一:
set global|【session】系统变量名=值;
方式二:
set @@global|【session】系统变量名=值;

全局变量:作用域:针对于所有会话(连接)有效,但不能跨重启
会话变量:作用域:针对于当前会话(连接)有效

二:自定义变量

用户变量
作用域:针对于当前会话(连接)有效,作用域同于会话变量

赋值操作符:=或:=
①声明并初始化
SET @变量名=;
SET @变量名:=;
SELECT @变量名:=;

②赋值(更新变量的值)
方式一:
	SET @变量名=;
	SET @变量名:=;
	SELECT @变量名:=;
方式二:
	SELECT 字段 INTO @变量名
	FROM;
③使用(查看变量的值)
SELECT @变量名;

局部变量
作用域:仅仅在定义它的begin end块中有效
应用在 begin end中的第一句话

①声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 【DEFAULT 值】;


②赋值(更新变量的值)

方式一:
	SET 局部变量名=;
	SET 局部变量名:=;
	SELECT 局部变量名:=;
方式二:
	SELECT 字段 INTO 具备变量名
	FROM;
③使用(查看变量的值)
SELECT 局部变量名;
用户变量和局部变量的对比

		作用域			定义位置		语法
用户变量	当前会话		会话的任何地方		加@符号,不用指定类型
局部变量	定义它的BEGIN ENDBEGIN END的第一句话	一般不用加@,需要指定类型

更多MySQL命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值