含义:虚拟表,和普通表一样使用,视图中的数据来自查询中使用的表,并且试图是动态生成的,并没有保存查询结果可以理解为封装:多次使用
创建视图
语法结构:
creat view 视图名
as
查询语句;
案例 :创建视图查询每个部门的平均工资
- CREATE VIEW myv2
- AS
- SELECT AVG(salary) ag,`department_id`
- FROM employees
- GROUP BY department_id;
案例: #查询各部门工资级别
- SELECT myv2.ag,g.`grade_level`
- FROM myv2
- JOIN `job_grades` g
- ON myv2.ag BETWEEN g.`lowest_sal` AND `highest_sal`;
案例 #查询姓张的学生名和专业名
#之前写法
- SELECT `stuNume`,`majorName`
- FROM `stuinfo` s
- INNER JOIN maijor m
- ON s.`maijorId`=m.`id`
- WHERE s.`stuNume` LIKE '张%';
#做虚拟表,封装起来
- CREATE VIEW v1
- AS
- SELECT `stuNume`,`majorName`
- FROM `stuinfo` s
- INNER JOIN maijor m
- ON s.`maijorId`=m.`id`;
-
- SELECT *FROM v1 WHERE stuNume LIKE '张%';
语法结构
方式1:
create or replace view 视图名
as
查询语句;
方式二:
alter view 视图名
as
查询语句;
drop view 视图名,视图名
- DESC myv2;
- SHOW CREATE VIEW myv2;
这个其实很好理解:更新视图的时候同时修改了原始表,所以当视图中有多于原始表中内容的操作的时候都不能执行
#1.插入 (修改视图的时候,原始表也修改了,可以插入的条件是,没有额外多余原始表的东西
- INSERT INTO myv1 VALUES('张',NULL,NULL);
-
- SELECT *FROM myv1;
#2.修改
UPDATE myv1 SET last_name='zt' WHERE last_name=''
#3.删除
DELETE FROM myv1 WHERE 条件
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
作用域:服务器每次启动将为所有全局变量赋值,针对所有连接有效,但是不能跨重启
1.查看所有系统变量
SHOW GLOBAL /【session】 VARIABLES
2.查看满足条件的部分系统变量
SHOW GLOBAL /【session】 VARIABLES LIKE ‘ ’;
3.查看某某个指定系统变量的值
SELECT @@global/【session】系统变量名
4.为某个系统变量赋值
- SET GLOBAL/【】 系统变量名=值
- 或
- SET @@ global/【】 . 系统变量名=值;
- SHOW VARIABLES;
- SHOW VARIABLES LIKE '%ssl%';
- SELECT @@autocommit;
- SET autocommit=0;
- SET @@autocommit=1;
用户自己定义的
声明 赋值 使用
可以应用到任何地方
1.1声明并且初始化
- SET @用户变量名=值;
- SET @用户变量名:=值;
- SELECT @用户变量名:=值;
1.2 赋值
- 和上面一样 或
- SELECT 字段 INTO @变量名
- FROM 表
-
- SET @coun=0;
- SELECT COUNT(*) INTO @coun
- FROM `employees`;
1.3 使用
- SELECT @用户变量名;
- SELECT @coun;
声明
- DECLARE 变量名 类型;
- DECLARE 变量名 类型 DEFAULT 值;
赋值
- SET 变量名=值
- SET 变量名:=值
使用
SELECT 局部变量名
用户变量 局部变量
当前连接 只能在begin END 中第一句
SET @用户变量名=值 DECLARE 用户变量名 类型
案例 :声明两个变量并且赋值 求和 打印
- 1.用户变量
- SET @m=2;
- SET @n=3;
- SET@sum=@m+@n;
- SELECT @sum;
- 2.局部变量
- #下面这样写不行,需要在begin end 中
- DECLARE m1 INT DEFAULT 5;
- DECLARE n1 INT DEFAULT 6;
- DECLARE summ INT ;
- SET summ=m1+n1;
- SELECT summ;