暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

全网最全MySQL Prompt

232
这几个月,因为课程录制和工作需要,尝试了通过ChatGPT协助MySQL的一些操作,比如SQL生成、SQL优化、写脚本、开发项目等等,这一节内容,就来分享一下用到的一些Prompt(提示词,文中红色字体部分)。
PS:有些Prompt是经过反复调试才生成了小编想要的结果。
1 表设计
设计一张MySQL 8.0中的高考分数表,输出建表语句,包括学号,姓名,总分(包括小数点后一位),记录写入时间和更新时间,有单自增主键,不要外键约束。

2 写测试数据
表结构如下:
    CREATE TABLE student_score (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    score DECIMAL(5,1) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );
    往上面的表写入5条测试数据,放在一条SQL语句中,总分750,分数500到700之间,给到具体分数

    3 SQL语句生成
    表结构如下:
      CREATE TABLE student_score (
      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(50) NOT NULL,
      score DECIMAL(5,1) NOT NULL,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
      );
      查询分数大于600的学生姓名。


      4 写脚本
      ip.txt中,每一行存放MySQL的IP地址、用户名和密码,形式如下,请编写一个shell脚本,查看每个数据库当前的活跃连接数
        192.168.12.161,read_only,xxxxxx
        192.168.12.162,read_only,xxxxxx

        5 充当SQL考官
        接下来,你来帮我练习一下MySQL的SQL语句,每次给我出一道题,让我写出SQL语句,我回答告诉我正确还是错误,如果错误,告诉我正确答案,然后再出一道新的

        6 创建用户和赋权
        MySQL 8.0,创建一个用户,用户名是rw_user,host是%,权限是对所有库都有增删查改四个权限,帮我写成SQL语句

        7 用户权限回收
        MySQL 8.0,回收用户rw_user@'%' 对所有库的delete权限

        8 构造权限查询语句
        MySQL 8.0,为每个用户构造一条show grants for 'user_name'@'host' 的语句

        9 使用ChatGPT协助创建视图
        表结构如下:
          CREATE TABLE products (
          id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(255) NOT NULL,
          description TEXT,
          price DECIMAL(10,2) NOT NULL,
          stock INT NOT NULL,
          production_date DATE,
          expiry_date DATE
          );
          创建视图view_products_expiry_20220130,用来存放过期日期是2022-01-30的商品

          10 使用ChatGPT协助创建存储过程
          表t1的建表语句如下:
            CREATE TABLE `t1` (
            `id` int NOT NULL AUTO_INCREMENT,
            `a` varchar(20) DEFAULT NULL,
            `b` int DEFAULT NULL,
            `c` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
            PRIMARY KEY (`id`)
            ) ENGINE=InnoDB CHARSET=utf8mb4 ;
            创建一个存储过程,往表t1写入1000行数据

            11 使用ChatGPT协助创建触发器
            表class_info_01的建表语句如下:
              create table class_info_01(
              id int,
              name varchar(10)
              );
              class_info_02的表结构和class_info_01一样
              创建一个触发器,如果class_info_01有insert操作,就会触发往class_info_02写入class_info_01表新增的记录

              12 通过安装包安装MySQL
              在CentOS7上通过安装包安装MySQL8.0.25这个小版本,
              当前路径已经有mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz这个压缩包了,
              MySQL基础目录为/data/mysql,
              数据目录是/data/mysql/data,
              日志目录是/data/mysql/log,
              配置文件是/data/mysql/conf/my.cnf,初始化和启动时,需要指定配置文件
              安装过程的命令不要加sudo

              13 通过ChatGPT编写自动化备份脚本
              通过xtrabackup备份数据的命令如下:
                xtrabackup --defaults-file=/data/mysql/conf/my.cnf -uu_backup -p'Ujg8G_aUU' --backup --stream=xbstream --target-dir=./ >/data/backup/xtrabackup.xbstream
                请帮我写一个MySQL物理备份脚本,每天0点执行备份,
                备份文件夹的名字以bak_开头,包括时间戳,
                并且通过find 的形式删除10天之前的备份目录

                14 通过ChatGPT编写复制创建脚本
                编写一个自动创建主从复制的Shell脚本
                复制是基于GTID的
                脚本是在从库执行
                主库的IP是192.168.12.161
                主库的备份用户是u_bak,密码是xxxxxx
                需要从从库通过mysqldump远程备份主库的数据,再导入到从库
                主库的复制用户是repl,密码是xxxxxx
                从库的用户是root,密码是xxxxxx

                15 用ChatGPT帮忙写业务表统计信息
                编辑一个Shell脚本
                查询information_schema.tables
                统计某个库所有表的预估数据量
                自增值
                存储引擎
                每一行展示一张表的信息

                16 编写归档脚本
                通过pt-archiver,帮忙写一个martin库的log_table表归档的shell脚本,这个实例的ip是192.168.12.161,超过30天的数据归档到归档实例192.168.12.162中的archiver库log_table表中。两个数据库的连接用户都是dba,密码是xxxxxx

                17 实现SQL优化平台
                借助gradio实现一个页面,有两个输入框,一个框输入表结构,另一个框输入SQL语句,调用openai来分析语句,一个输出框输出优化结果,不要连MySQL,一个文件实现

                18 MySQL表信息查询系统
                借助gradio实现一个页面,有三个下拉框,一个框是选择MySQL的IP,一个框选择MySQL的状态,一个框是填写库名,状态包括每张业务表的数据量、表大小、碎片率、主键自增值。状态获取均通过SQL语句实现。一个输出框,输出下拉框选择查看的内容结果。用一个Python文件实现


                19 通过ChatGPT创建RDS慢查询项目
                备注,这个是阿里云API调试页面的代码:
                  // This file is auto-generated, don't edit it. Thanks.
                  package main


                  import (
                  "fmt"
                  openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
                  rds20140815 "github.com/alibabacloud-go/rds-20140815/v3/client"
                  util "github.com/alibabacloud-go/tea-utils/v2/service"
                  "github.com/alibabacloud-go/tea/tea"
                  "os"
                  )




                  /**
                  * 使用AK&SK初始化账号Client
                  * @param accessKeyId
                  * @param accessKeySecret
                  * @return Client
                  * @throws Exception
                  */
                  func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *rds20140815.Client, _err error) {
                  config := &openapi.Config{
                  // 必填,您的 AccessKey ID
                  AccessKeyId: accessKeyId,
                  // 必填,您的 AccessKey Secret
                  AccessKeySecret: accessKeySecret,
                  }
                  // Endpoint 请参考 https://api.aliyun.com/product/Rds
                  config.Endpoint = tea.String("rds.aliyuncs.com")
                  _result = &rds20140815.Client{}
                  _result, _err = rds20140815.NewClient(config)
                  return _result, _err
                  }


                  func _main (args []*string) (_err error) {
                  // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                  // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378661.html
                  client, _err := CreateClient(tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")))
                  if _err != nil {
                  return _err
                  }


                  describeSlowLogRecordsRequest := &rds20140815.DescribeSlowLogRecordsRequest{
                  DBInstanceId: tea.String("rm-uf6img56ru4l61963"),
                  StartTime: tea.String("2023-09-04T02:00Z"),
                  EndTime: tea.String("2023-09-04T03:00Z"),
                  }
                  runtime := &util.RuntimeOptions{}
                  tryErr := func()(_e error) {
                  defer func() {
                  if r := tea.Recover(recover()); r != nil {
                  _e = r
                  }
                  }()
                  // 调用API并获取返回结果
                  response, _err := client.DescribeSlowLogRecordsWithOptions(describeSlowLogRecordsRequest, runtime)
                  if _err != nil {
                  return _err
                  }


                  // 打印API的输出结果
                  fmt.Println(response)


                  return nil
                  }()


                  if tryErr != nil {
                  var error = &tea.SDKError{}
                  if _t, ok := tryErr.(*tea.SDKError); ok {
                  error = _t
                  } else {
                  error.Message = tea.String(tryErr.Error())
                  }
                  // 如有需要,请打印 error
                  _, _err = util.AssertAsString(error.Message)
                  if _err != nil {
                  return _err
                  }
                  }
                  return _err
                  }




                  func main() {
                  err := _main(tea.StringSlice(os.Args[1:]))
                  if err != nil {
                  panic(err)
                  }
                  }



                  上面代码,是通过阿里云API获取慢查询,创建一个Go项目

                  需要包括完整的代码,并且分成多个文件夹

                  比如service、repository、model、config、cmd这些文件夹

                  cmd中包括main.go

                  config中包括获取配置文件的代码

                  model 定义慢查询的结构体

                  repository 放慢查询写入数据库的代码

                  service 从阿里云获取慢查询

                  config.yaml 配置文件,可以配置DBInstanceID,数组模式。还可以配置存放慢查询的数据库连接信息


                  写入数据库的字段包括

                  "DBName": "martin",

                  "ExecutionStartTime": "2023-09-04T02:21:54Z",

                  "HostAddress": "martin_rw[martin_rw] @ [10.152.163.197]",

                  "LockTimes": 0,

                  "ParseRowCounts": 1,

                  "QueryTimeMS": 4000,

                  "QueryTimes": 4,

                  "ReturnRowCounts": 1,

                  "SQLHash": "3227cd26653a98dd94a76f1bc58f0880",

                  "SQLText": "/* Query from DMS-WEBSQL-0-Qid_28919350597280378C by user 1360627127365188 */ select sleep(4),version()"

                  以及DBInstanceId


                  给出具体代码



                  朋友们估计也看到了,即使云时代到来,AI时代到来,数据库从业者的一些基础知识还是需要具备的,这样使用AI产品能写出更为准确的提示词,自然AI也就会生成更为合适的结果。

                  所以如果考虑转型DBA的,可以关注一下小编最新出的DBA课程(点击阅读原文跳转),除了总结小编8年DBA工作中掌握的基础知识和实战项目外,也增加了向云时代以及AI时代转型的必备内容,比如调用公有云API自动化管理云上数据库,使用更为准确的提示词协助我们工作,以及借助开源低代码项目+ChatGPT开发数据库平台等。

                  文章转载自MySQL数据库联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论