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

news/2024/11/2 11:44:57/

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

一、数据库的操作

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

二、表的操作

sql"># 查询当前库的所有表
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.ppmy.cn/news/1543855.html

相关文章

Php实现钉钉OA一级审批,二级审批

Php实现钉钉OA一级审批,二级审批 一级审批 public function oaPush($user_id,$person,$data){//测试数据,上线需要删除$user_id 154502333155;//发起人$person [154502665555];//审批人$len count($person);$result null;if($len>0){$approve_con…

开源趣味艺术画板Paint Board

什么是 Paint Board ? Paint Board 是简洁易用的 Web 端创意画板。它集成了多种创意画笔和绘画功能,支持形状绘制、橡皮擦、自定义画板等操作,并可以将作品保存为图片。 软件功能: 不过非常可惜,老苏最期待的数据同步还…

躺平成长-下一个更新的数据(躺平成长数据显示核心)

旭日图(Sunburst Chart)是一种用于展示具有层次结构数据的可视化图表。 它起源于饼图和环形图,并随着数据可视化需求的发展而演变。 旭日图通过将层次结构数据以由内向外的同心圆环形式展示,使数据的层次关系更加清晰直观。 以下…

golang的RSA加密解密

参考:https://blog.csdn.net/lady_killer9/article/details/118026802 1.加密解密工具类PasswordUtil.go package utilimport ("crypto/rand""crypto/rsa""crypto/x509""encoding/pem""fmt""log"&qu…

分享一个生成二维码的js

生成二维码js https://pan.quark.cn/s/826a69dba5b3 提取码:WrrC 生成二维码js,并可设置边距border https://pan.quark.cn/s/18251a515fb2 提取码:psSr 在线生成二维码:https://www.51bj.top/tools/qrcode.html

如何实现图片懒加载,原生 + React 实现方式

前言 有时候列表存在许多图片,那么一次性加载会阻塞 http 请求,为了避免在可视窗口之外的元素进行不必要的图片加载,可以尝试使用懒加载进行优化。懒加载可以显著提高页面加载性能,特别是当页面包含大量图片时。为了实现延迟加载…

深度学习中的核心概念详解

目录 前言1. 深度神经网络与残差网络1.1 深度神经网络的挑战1.2 残差网络的提出与实现1.3 残差网络的作用 2. 词向量:语义理解的基础2.1 词向量的基本概念2.2 词向量的实现方法与作用 3. 对象嵌入:从词向量到对象表示3.1 对象嵌入的概念3.2 对象嵌入的应…

【SSM详细教程】-15-Spring Restful风格【无敌详细】

精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…