IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql常用语句 -> 正文阅读

[大数据]mysql常用语句

json查询

建表,初始化数据


drop table if exists test_json;
create table test_json
(
    jid   int auto_increment
        primary key,
    data json null
);
insert into test_json values(1, '[{"id": "1", "name": "张三", "age": "10"}, {"id": "2", "name": "李四", "age": "12"}]');
insert into test_json values(2, '[{"id": "3", "name": "王五", "age": "13"}, {"id": "4", "name": "马六", "age": "18"}]');

查询json中属性


select data->'$[*].id' id, data->'$[*].name' name, data->'$[*].age' age from test_json;
select data->'$[*].id' id, data->'$[*].name' name, data->'$[*].age' age from test_json where data->'$[0].id' = '3';
select data->'$[*].id' id, data->'$[*].name' name, data->'$[*].age' age from test_json where json_contains(data, json_object('id', '3'));

批量插入、更新

建表

drop table if exists test_batch;
create table test_batch
(
   id int auto_increment,
   name varchar(20) null,
   age int null,
   email varchar(20) null,
   constraint test_batch_pk
      primary key (id)
);

初始化数据

# 批量插入
INSERT INTO test_batch(name, age, email)
VALUES ('张三', 10, 'zhangsan@qq.com'),
       ('李四', 12, 'lisi@qq.com'),
       ('王二麻子', 15, 'wangermazi@qq.com');

# 批量更新
UPDATE test_batch
SET name = CASE
               WHEN id = 1 THEN '张三1'
               WHEN id = 2 THEN '李四1'
               WHEN id = 3 THEN '李四1' END,
    age  = CASE
               WHEN id = 1 THEN 101
               WHEN id = 2 THEN 121
               WHEN id = 3 THEN 151 END
WHERE id = 1
   OR id = 2
   OR id = 3;

mybaits mapper.xml

# 批量插入
<insert id="batchSave" parameterType="list">
    INSERT INTO test_batch (name, age, email)
    VALUES
    <foreach collection="list" index="item" item="item" separator=",">
        (#{item.name}, #{item.age}, #{item.email})
    </foreach>
</insert>

# 批量更新
<update id="batchUpdate" parameterType="list">
    UPDATE test_batch
    <trim prefix="set" suffixOverrides=",">
        <trim prefix="name = case " suffix="end, ">
            <foreach collection="list" item="item" index="index">
                <if test="item.name != null">
                    WHEN id = #{item.id} THEN #{item.name}
                </if>
            </foreach>
        </trim>
        <trim prefix="release_ratio = case " suffix="end, ">
            <foreach collection="list" item="item" index="index">
                <if test="item.releaseRatio != null and item.releaseRatio != ''">
                    WHEN id = #{item.id} THEN #{item.releaseRatio}
                </if>
            </foreach>
        </trim>
        <trim prefix="age = case " suffix="end, ">
            <foreach collection="list" item="item" index="index">
                <if test="item.age!= null">
                    WHEN id = #{item.id} THEN #{item.age}
                </if>
            </foreach>
        </trim>
    </trim>
    WHERE
    <foreach collection="list" separator="or" item="item" index="index" >
        id = #{item.id}
    </foreach>
</update>

GROUP_CONCAT()函数

建表

# 角色表
drop table if exists test_role;
create table test_role
(
   id int auto_increment,
   name varchar(10) null,
   constraint test_role_pk
      primary key (id)
);
# 用户表
drop table if exists test_user;
create table test_user
(
   id int auto_increment,
   name varchar(20) null,
   constraint test_user_pk
      primary key (id)
);
# 用户关联角色表
drop table if exists test_user_role;
create table test_user_role
(
   id int auto_increment,
   user_id int null,
   role_id int null,
   constraint test_user_role_pk
      primary key (id)
);

初始化数据

# 角色表
INSERT INTO test_role (name)
VALUES ('管理员'), ('董事长'), ('总经理');
# 用户表
INSERT INTO test_user (name)
VALUES ('张三'), ('李四');
# 用户关联角色表
INSERT INTO test_user_role (user_id, role_id)
VALUES (1, 1), (1, 2), (2, 3);

查询

# 返回一个字符串,由分组中的值连接而成
SELECT t.id, t.name, GROUP_CONCAT(tr.id) roleId, GROUP_CONCAT(tr.name) roleName
FROM test_user t
         LEFT JOIN test_user_role tur ON t.id = tur.user_id
         LEFT JOIN test_role tr ON tur.role_id = tr.id
GROUP BY t.id;

CONCAT_WS()函数

# 使用语法: CONCAT_WS(separator,str1,str2,…)
# 字符串拼接,可以用于插入或更新sql的生成
SELECT id,
       CONCAT_WS('', 'insert into test_user_role (user_id, role_id) values (', id, ', 3);') insertSql,
       CONCAT_WS('', 'update test_user set name = ''', id, ''' where id = ''', id, ''';')   updateSql
FROM test_user
WHERE id = 2;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:06:54  更:2021-10-29 13:08:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:48:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码