当前位置: 首页 > news >正文

【Gorm】传统sql的增删查改,通过go去操作sql

       MySQL中的建库,建表,删库,删表,添加记录,查询,删除记录,更新记录这些命令是一定要回的,就算我们脱离 orm 这些,也能直接连接上数据库进行操作。

一、数据库的操作

# 查询全部的数据库
show databases;# 创建数据库,并制定字符集和排序方式
create database grom_new_dbcharaceter set utf8mb4collate utf8mb4_unicode_ci;# 选中数据库
use grom_new_db;# 删除数据库
drop databases grom_new_db;

二、表的操作

# 查询当前库的所有表
show tables;# 建表
create table users(id bigint unsigned auto_increment primary key,name varchar(50) not null default '',age int unsigned not null default 0,email varchar(50) not null default '',create_at datetime default current_timestamp,updata_at datetime default current_timestamp on update current_timestamp
) engine = innodbdefault charset = utf8mb4collate = utf8mb4_unicode_ci;# 插入数据
insert into users (name, age, email)
values ('张三', 18, 'zhangsan@qq.com'),('李四', 22, 'lisi@qq.com');# 查询数据
select * from users;# 删除数据
delete from users where id = 1;# 更新数据
updata users set name = '张三丰', age = 19 where id = 2;# 删除表
drop table users;

三、通过go去操作sql

db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/gorm_new_db")
if err != nil {log.Fatalf("数据库连接失败 %s", err)
}

3.1 安装驱动

go get -u github.com/go-sql-driver/mysql

3.2 连接

在连接数据库的时候,我们需要使用一句连接字符串,格式如下:

username:password@protocol(address)/dbname?param=value

各部分解释:

  1. username:password:数据库的用户名和密码
  2. @protocol(address) :指定连接协议和数据库服务器的地址。
  3. /dbname:要连接的数据库名

3.3 执行sql

我们除了查询语句之后,其他的语句全是使用 Exac 函数,代码如下:

func main() 
{// 连接数据库db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/gorm_new_db")if err != nil {log.Fatalf("数据库连接失败 %s", err)}defer db.close()_, err := db.Exec("CREATE TABLE userss1(id INT NOT NULL , name VARCHAR(20), PRIMARY KEY(ID));")if err2 != nil {log.Fatal(err2)}fmt.Println("successfully create table")
}

3.4 查询sql

当使用到查询语句的时候,我们可以使用 Query 函数

func main() {// 连接数据库db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/gorm_new_db")if err != nil {log.Fatalf("数据库连接失败 %s", err)   }defer db.close()    res, err := db.Query("select id, name from users")for res.Next() {var id intvar name string// 这里 scan 的字段要对上err = res.Scan(&id, &name)fmt.Println(id, name, err)}
}

我们也可以使用 QueryRow 函数去查一行的数据,代码如下:

func main() {// 连接数据库db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/gorm_new_db")if err != nil {log.Fatalf("数据库连接失败 %s", err)}defer db.close()var id intvar name string// 这里scan的字段要对上err = db.QueryRow("select id, name from users").Scan(&id, &name)fmt.Println(id, name, err)
}

http://www.lryc.cn/news/472219.html

相关文章:

  • HTML小阶段二维表和思维导图
  • AI与低代码的碰撞:企业数字化转型的新引擎
  • HarmonyOS应用开发者基础认证——初级闯关习题参考答案大全
  • Vue背景图片自适应大屏与小屏
  • MongoDB 8.0.3版本安装教程
  • 【C语言】预处理(预编译)详解(下)(C语言最终篇)
  • [Linux] linux 软硬链接与动静态库
  • GitHub Actions的 CI/CD
  • doris 表结构批量导出
  • linux查看文件命令
  • 【2023工业图像异常检测文献】DiAD: 基于扩散模型的多类异常检测方法
  • 三相继电保护机 继电器保护校验仪 微机继电保护测试仪
  • MyEclipse中讲解Git使用——结合GitLab
  • pdf转为txt文本格式并使用base64加密输出数据
  • SpringBoot篇(运维实用篇 - 临时属性)
  • MySQL定时异机备份
  • MMA: Multi-Modal Adapter for Vision-Language Models
  • uniapp通过id获取div的宽度,高度,位置等(应该是 任意平台都通用 )
  • Python Transformer 模型的基本原理:BERT 和 GPT 以及它们在情感分析中的应用
  • 【云原生】Kubernets1.29部署StorageClass-NFS作为存储类,动态创建pvc(已存在NFS服务端)
  • 使用 Pandas 进行时间序列分析的 10个关键点
  • 使用 Mermaid 语言描述 AGI 系统架构图
  • 绘制线性可分支持向量机决策边界图 代码解析
  • No.23 笔记 | WEB安全 - 任意文件漏洞 part 5
  • EasyPlayer.js网页播放器,支持FLV、HLS、WebSocket、WebRTC、H.264/H.265、MP4、ts各种音视频流播放
  • WPF数据绑定的五大模式
  • 从零到一:大学新生编程入门攻略与成长指南
  • 详细分析Pytorch中的transpose基本知识(附Demo)| 对比 permute
  • 初识WebGL
  • 【力扣】Go语言回溯算法详细实现与方法论提炼