【新特性 Json 视图 存储过程】

json

简介

什么是json?

json是一种轻量级的数据交换格式,全称为javaScript Object Notation (javaScript 对象表示法)。他以易于阅读和编写的文本格式来表示结构化数据,常用于Web应用程序之间的数据传输。

json由键值对组成:

  • 对象(Object):用花括号{}表示一个对象,对象由多个键对值组成,键值对之间用逗号分隔。
    在这里插入图片描述
  • 数组(Array):用方括号[]表示一个数组,数组是由多个值组成,值之间用逗号分隔。
    在这里插入图片描述

操作

  • 创建json字段
    在这里插入图片描述
  • 插入数据
    • 数组:json_array(值1,值2,…)
    • 对象:json_object(键1,值1,键2,值2)
      insert into person(0,‘老大’,json_array(‘听歌’,‘游戏’),json_object(‘name’,‘老二’)))
  • 查询
    • json_extract(字段名,‘$.key(值)’)
    • -> 字段名->‘$.key’
    • json_keys(字段) 查询key
      select id,username,hobby,json_extract(friend,'$.name')from person
      select id,username,hobby,friend->'$.name'from person
      select json_keys(friend)from person
    
  • 修改
    • json_set(‘字段’,‘$.key’,值)
      update person set friend = json_set(friend,'$.name','八八')where id=1
    
    • 添加属性
      update person set friend = json_set(friend,‘$.age’,18) where id=3
    • json_remove(字段,key) 删除属性
      update person set friend = json_remove(friend,‘$.age’) where id=3
    • 函数搜索
      • JSON_CONTAINS (字段,值)
      • JSON_CONTAINS (字段,值,‘ . k e y ′ ) s e l e c t ∗ f r o m p e r s o n w h e r e j s o n c o n t a i n s ( h o b b y , ′ " 游戏 " ′ ) ; s e l e c t ∗ f r o m p e r s o n w h e r e j s o n c o n t a i n s ( f r i e n d , ′ " 八八 " ′ , ′ .key') select * from person where json_contains(hobby,'"游戏"'); select * from person where json_contains(friend,'"八八"',' .key)selectfrompersonwherejsoncontains(hobby,"游戏");selectfrompersonwherejsoncontains(friend,"八八",.name’)
        注意: 值需要另外加引号,否则报错。

视图

介绍

  • 视图概念:
    • 视图可以由数据库的一张或者多张表中的数据组成的,可以对视图中的数据进行增删改查操作,视图可以理解成一张虚拟表,当数据库表中的数据发生变化的时候,视图中的数据也跟着发生变化
  • 视图优点:
    • 我们可以把经常用的数据放到视图中,无需关心视图对应的数据库表的结构,表之间的关联关系,也不需要关心表之间的业务逻辑,简化开发人员的操作
    • 增加数据的安全性,根据权限对用户进行数据访问的限制,将用户的访问之间限制在视图上,不用访问真实的数据表

使用

  • 创建视图
    • 格式:
      在这里插入图片描述
  • 查看视图
    • 可以在navicat中直接查看视图
  • 修改视图
    • create or replace view 视图名称 as sql语句
      如果存在视图名称则修改视图,如果视图名称不存在,则修改视图
      在这里插入图片描述
  • 插入数据
    • 和普通表插入的格式一样,但是视图改变也会将影响原来的表
      insert into 视图名 () vlues ()
  • 删除数据
    • 和普通表删除数据做法一样
      delete from 视图名 where 条件
      在这里插入图片描述
  • 删除视图
    drop view if exists 视图名称;
    注意: 当我们改变原表的时候,视图表中的内容也会发生改变。

存储过程

介绍

  存储过程是一组预先编译的SQL语句,被命名并存储在数据库中。它们通常由数据库管理员或开发人员编写,并可以包含控制结构(例如条件、循环等)和输入/输出参数。存储过程可以像函数一样被调用,但它可能不返回值,也可以返回多个结果集

使用

  • 创建存储过程

    • 格式
      在这里插入图片描述
    • procedure_name是你给存储过程起的名字;
    • parameter_name是存储过程参数的名字;
    • data_type是参数的数据类型。
    • DELIMITER: DELIMITER是一个特殊的命令,用于改变语句分隔符的默认值。SQL语句的默认分隔符是分号(;),这意味着在执行多个语句时,每个语句都必须以分号结束。然而,在创建存储过程语句时,可能包含了多个分号,这会导致MySQL在遇到第一个分号时就认为语句结束,从而产生错误。
    • IN:表示参数是输入参数,用于接收调用存储过程时传递的值。
    • OUT:表示参数是输出参数,用于将存储过程的计算结果返回给调用者。
    • INOUT:表示参数既是输入参数,又是输出参数,用于接收值并返回结果
      在这里插入图片描述
  • 存储过程的调用
    可以使用CALL语句来调用存储过程。调用存储过程时,需要提供传递给存储过程的参数。如果存储过程有输出参数,需要在调用存储过程之前声明这些参数。

    • 格式
      CALL procedure_name([parameter_value, …]);
      • procedure_name是要调用的存储过程的名称;
      • parameter_value是传递给存储过程的参数值。
        在这里插入图片描述
  • 查看存储过程
    SHOW PROCEDURE STATUS WHERE db = ‘数据库名称’;

    SHOW CREATE PROCEDURE 存储过程的名称;
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值