go 操作数据库
2022/6/1 2:50:25
本文主要是介绍go 操作数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
go 操作数据库
1.1 SQL语法简介
SQL(i/ˈsiːkwəl/; Structured Query Language)是一套语法标准,不区分大小写。MySQL、sql-server和Oracle都是关系型数据库,在一些高级语法上跟标准SQL略有出入。
Linux用户安装MySQL服务端
yum install mysql-server
安装MySQL客户端
yum install mysql
启动MySQL服务端
service mysqld start
以管理员登录
mysql -h localhost -P 3306 -u root -p'123456' -h:mysql server host,不写时默认是localhost。 -P:mysql server port,不写时默认是3306。 -u:user name,-u后可以加空格也可以不加。 -p:password,密码中可能包含空格,所以要加引号。高版本的mysql不允许在命令行中直接输入密码,此时只输入-p后面不要写密码即可。 创建账号 create user 'tester' identified by '123456'
创建database
create database test
把特定database的操作权限授予一个普通用户
grant all on test.* to tester;
以普通用户登录
mysql -utester -p'123456'
使用database
use test
创建表
#primary key (id) 设置id为主键 #unique key idx_name (name)表示为name创建唯一索引 //索引是什么?从数据库中每次查询数据,都会遍历表。我们创建索引后,就相当于构建一个快速查找树,所以我们要预估那个列会频繁进行where查询,我们对这些列建索引。 create table if not exists student( id int not null auto_increment comment '主键自增id', name char(10) not null comment '姓名', province char(6) not null comment '省', city char(10) not null comment '城市', addr varchar(100) default '' comment '地址', score float not null default 0 comment '考试成绩', enrollment date not null comment '入学时间', primary key (id), unique key idx_name (name), key idx_location (province,city) )default charset=utf8 comment '学员基本信息';
新增记录,必须给not null且无default值的列赋值
insert into student (name,province,city,enrollment) values ('张三','北京','北京','2021-03-05'), ('李四','河南','郑州','2021-04-25'), ('小丽','四川','成都','2021-03-10');
查询
select id,name from student where id>0; select province,avg(score) as avg_score from student where score>0 group by province having avg_score>50 order by avg_score desc;
修改
update student set score=score+10,addr='海淀' where province='北京'; update student set score=case province when '北京' then score+10 when '四川' then score+5 else score+7 end, addr=case province when '北京' then '东城区' when '四川' then '幸福里' else '朝阳区' end where id>0;
删除
delete from student where city= '郑州'; delete from student; --删除表里的所有行 drop table student; --删除表
2.1 MySQL最佳实践
- 写sql时一律使用小写。
- 建表时先判断表是否已存在if not exists。
- 所有的列和表都加comment。
- 字符串长度比较短时尽量使用char,定长有利于内存对齐,读写性能更好,而varchar字段频繁修改时容易产生内存碎片。
- 满足需求的前提下尽量使用短的数据类型,如tinyint vs int, float vs double, date vs datetime。
null
- default null有别于default ''和default 0
- is null, is not null有别于!= '', !=0
- 尽量设为not null
- 有些DB索引列不允许包含null
- 对含有null的列进行统计,结果可能不符合预期
- null值有时候会严重拖慢系统性能
这篇关于go 操作数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南