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 操作数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程