视图

含义:理解成一张虚拟的表

视图和表的区别:

使用方式 占用物理空间视图    完全相同    不占用,仅仅保存的是sql逻辑表     完全相同    占用

视图的好处:

1、sql语句提高重用性,效率高
2、和表实现了分离,提高了安全性

视图的创建

语法:
CREATE VIEW  视图名
AS
查询语句;

视图的增删改查

1、查看视图的数据 ★SELECT * FROM my_v4;
SELECT * FROM my_v1 WHERE last_name='Partners';2、插入视图的数据
INSERT INTO my_v4(last_name,department_id) VALUES('虚竹',90);3、修改视图的数据UPDATE my_v4 SET last_name ='梦姑' WHERE last_name='虚竹';4、删除视图的数据
DELETE FROM my_v4;

某些视图不能更新

包含以下关键字的sql语句:分组函数、distinct、group  by、having、union或者union all
常量视图
Select中包含子查询
join
from一个不能更新的视图
where子句的子查询引用了from子句中的表

视图逻辑的更新

#方式一:
CREATE OR REPLACE VIEW test_v7
AS
SELECT last_name FROM employees
WHERE employee_id>100;#方式二:
ALTER VIEW test_v7
AS
SELECT employee_id FROM employees;SELECT * FROM test_v7;

视图的删除

DROP VIEW test_v1,test_v2,test_v3;

视图结构的查看

DESC test_v7;
SHOW CREATE VIEW test_v7;

存储过程

含义:一组经过预先编译的sql语句的集合
好处:

1、提高了sql语句的重用性,减少了开发程序员的压力
2、提高了效率
3、减少了传输次数

分类:

1、无返回无参
2、仅仅带in类型,无返回有参
3、仅仅带out类型,有返回无参
4、既带in又带out,有返回有参
5、带inout,有返回有参
注意:in、out、inout都可以在一个存储过程中带多个

创建存储过程

语法:

create procedure 存储过程名(in|out|inout 参数名  参数类型,...)
begin存储过程体end

类似于方法:

修饰符 返回类型 方法名(参数类型 参数名,...){方法体;
}

注意

1、需要设置新的结束标记
delimiter 新的结束标记
示例:
delimiter $CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名  参数类型,...)
BEGINsql语句1;sql语句2;END $2、存储过程体中可以有多条sql语句,如果仅仅一条sql语句,则可以省略begin end3、参数前面的符号的意思
in:该参数只能作为输入 (该参数不能做返回值)
out:该参数只能作为输出(该参数只能做返回值)
inout:既能做输入又能做输出

调用存储过程

call 存储过程名(实参列表)

函数

创建函数

学过的函数:LENGTH、SUBSTR、CONCAT等
语法:

CREATE FUNCTION 函数名(参数名 参数类型,...) RETURNS 返回类型
BEGIN函数体END

调用函数

SELECT 函数名(实参列表)

函数和存储过程的区别

关键字      调用语法    返回值         应用场景
函数      FUNCTION    SELECT 函数() 只能是一个       一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个
存储过程    PROCEDURE   CALL 存储过程() 可以有0个或多个        一般用于更新

流程控制结构

系统变量

一、全局变量

作用域:针对于所有会话(连接)有效,但不能跨重启

查看所有全局变量
SHOW GLOBAL VARIABLES;
查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%char%';
查看指定的系统变量的值
SELECT @@global.autocommit;
为某个系统变量赋值
SET @@global.autocommit=0;
SET GLOBAL autocommit=0;

二、会话变量

作用域:针对于当前会话(连接)有效

查看所有会话变量
SHOW SESSION VARIABLES;
查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE '%char%';
查看指定的会话变量的值
SELECT @@autocommit;
SELECT @@session.tx_isolation;
为某个会话变量赋值
SET @@session.tx_isolation='read-uncommitted';
SET SESSION tx_isolation='read-committed';

自定义变量

一、用户变量

声明并初始化:

SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;

赋值:

方式一:一般用于赋简单的值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名:=值;方式二:一般用于赋表 中的字段值
SELECT 字段名或表达式 INTO 变量
FROM 表;

使用:

select @变量名;

二、局部变量

声明:

declare 变量名 类型 【default 值】;

赋值:

方式一:一般用于赋简单的值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名:=值;方式二:一般用于赋表 中的字段值
SELECT 字段名或表达式 INTO 变量
FROM 表;

使用:

select 变量名

二者的区别:

     作用域         定义位置        语法

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

分支

一、if函数
语法:if(条件,值1,值2)
特点:可以用在任何位置

二、case语句

语法:

情况一:类似于switch
case 表达式
when 值1 then 结果1或语句1(如果是语句,需要加分号)
when 值2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)情况二:类似于多重if
case
when 条件1 then 结果1或语句1(如果是语句,需要加分号)
when 条件2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

特点:
可以用在任何位置

三、if elseif语句

语法:

if 情况1 then 语句1;
elseif 情况2 then 语句2;
...
else 语句n;
end if;

特点:
只能用在begin end中!!!!!!!!!!!!!!!

三者比较:
应用场合
if函数 简单双分支
case结构 等值判断 的多分支
if结构 区间判断 的多分支

循环

语法:

【标签:】WHILE 循环条件  DO循环体
END WHILE 【标签】;

特点:

只能放在BEGIN END里面如果要搭配leave跳转语句,需要使用标签,否则可以不用标签leave类似于java中的break语句,跳出所在循环!!!

Mysql学习笔记04--尚硅谷李玉婷老师mysql课程相关推荐

  1. 尚硅谷李玉婷老师MySQL课程--DQL语言

    DQL(Data Query Language):数据查询语言 select 1.基础查询 语法: SELECT 查询列表 [FROM 表名]; 类似于Java中 :System.out.printl ...

  2. 尚硅谷李玉婷老师MySQL课程--DDL语言

    DDL(Data Definition Language):数据定义语言 库和表的管理(创建.修改.删除) 创建:create 修改:alter 删除:drop 一.库的管理 1.库的创建 语法 CR ...

  3. 尚硅谷李玉婷老师MySQL课程--TCL语言

    TCL(Transaction Control Language):事务控制语言 一.事务 一个或一组sql语句组成一个执行单元,这个执行单元全部执行,要么全部不执行. 事务的ACID属性 原子性:要 ...

  4. 尚硅谷李玉婷老师MySQL课程--DML语言

    DML(Data Manipulation Language):数据操作语言 插入:insert 修改:update 删除:delete 一.插入语句 1.方式一 语法 INSERT INTO 表名( ...

  5. 尚硅谷李玉婷老师MySQL课程--视图、变量、存储过程和函数、流程控制结构

    一.视图 1.视图的创建 CREATE VIEW 视图名 AS 查询语句; 例1: create view myv as select avg(salary),job_id from employee ...

  6. mysql基础命令学习(尚硅谷李玉婷老师教学)

    文章目录 一.基础查询方法 案例 二.条件查询 三.排序查询 四.常见函数 单行函数 练习题 五.分组函数 练习题 六.分组查询 练习解析: 七.连接查询 练习解析: 八.sql99语法 一.内连接 ...

  7. Mysql学习笔记01--尚硅谷李玉婷老师mysql课程

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ...

  8. Mysql学习笔记02--尚硅谷李玉婷老师mysql课程

    DQL语言的学习 进阶1:基础查询 语法: SELECT 要查询的东西 [FROM 表名];类似于Java中 :System.out.println(要打印的东西); 特点: ①通过select查询完 ...

  9. Mysql学习笔记03--尚硅谷李玉婷老师mysql课程

    进阶7:子查询 含义: 一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询 在外面的查询语句,称为主查询或外查询 特点: 1.子查询都放在小括号内 2 ...

最新文章

  1. IBM: 拆分瘦身,还有机会吗?
  2. xshell 上传 下载文件
  3. Selenium--调用js,对话框处理 (python)
  4. 两台电脑cpu序列号一样_如何正确使用苹果电脑?
  5. maven打war包
  6. Jupiter黑客松——IPFS开发者大赛火热报名中!
  7. 收集Java 性能优化的44个建议
  8. powershell实现设置程序相关性脚本
  9. emit传参,获取返回值
  10. 一阶倒立摆的输入和输出是什么_了解一阶高通滤波器传递函数
  11. 在Excel中引用Visual Studio.NET 2008编写的COM组件
  12. 停掉暴风影音stormliv.exe进程
  13. 计算机的excel的知识,计算机基础知识:Excel常用操作(一)
  14. GIS与CAD在村庄规划中的图框位置一致处理
  15. opengles之3D模型加载(obj模型文件)
  16. 内网网段范围_局域网网段到底是什么意思?怎么划分的啊?为什么要划分网段?...
  17. mysql redis 点赞_Redis 实现点赞功能
  18. 恢复服务器的文件,云服务器怎么恢复文件
  19. Eclipse使用Space键替换Tab键不生效的解决方案
  20. linux下查看文件的权限,Linux下查看文件权限、修改文件权限的方法

热门文章

  1. LabVIEW开发 XY Graph DoubleScale双刻度
  2. iframe窗口下滚动条失效怎么解决
  3. 2021年度训练联盟热身训练赛第二场 C.Tip to be Palindrome
  4. 激光打标在PCB行业中的应用
  5. 计算机连接免费网络,如何免费连接WiFi?
  6. 100以内猜字游戏及解析
  7. 552. Student Attendance Record II(学生出勤记录 II)
  8. Lava店铺音乐升级顾客体验
  9. c#手写web内网网站映射,穿透服务器(一)
  10. wince7 屏幕控制_触摸屏控制方法,个人总结(欢迎拍砖,但不要打脸)