DB

文章发布时间:

最后更新时间:

启动mysql

mysqld --standalone ## 主键

用 自增id 或 GUID

全局唯一GUID类型:也称UUID,使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。

alter table last_view_ats add primary key (value);

多对一: 外键

students表中,通过class_id的字段,可以把数据与另一张表关联起来,这种列称为外键

多对多: 中间表

相当于存储所有的边

索引

通过对数据库表创建索引,可以提高查询速度;

命令

进入db

USE db;

查看一个表的所有信息

select * from table;

CREATE TABLE

1
2
3
4
5
6
7
8
9
10
11
DROP TABLE IF EXISTS `user_accounts`;
CREATE TABLE `user_accounts` (
`id` int(100) unsigned NOT NULL AUTO_INCREMENT primary key,
`password` varchar(32) NOT NULL DEFAULT '' COMMENT '用户密码',
`reset_password` tinyint(32) NOT NULL DEFAULT 0 COMMENT '用户类型:0-不需要重置密码;1-需要重置密码',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机',
`create_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`update_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
-- 创建唯一索引,不允许重复
UNIQUE INDEX idx_user_mobile(`mobile`)
)

条件

1
SELECT * FROM <表名> WHERE <条件表达式>

AND OR NOT

不等于 <>

使用LIKE判断相似 : `key LIKE %bc%' ( '%表示任意字符,例如'ab%'将匹配'ab','abc','abcd' )

SELECT 列1, 列2, 列3 FROM ...

排序

SELECT id, name, gender, score FROM students ORDER BY score;

SELECT id, name, gender, score FROM students ORDER BY score DESC;

SELECT id, name, gender, score FROM students ORDER BY score DESC, gender; 先按score列倒序,如果有相同分数的,再按gender列排序

计数

把 * 变成 count(*)

SUM AVG MAX MIN

分组

CROUP BY

修改列信息

ALTER TABLE name ADD PRIMARY KEY (columnName);

ALTER TABLE name DROP COLUMN aaa;

删除

DELETE FROM tablename WHERE ...

Gorm 连接

1
2
3
4
5
dsn := "root:@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("Failed to connect to database")
}

MySQL 认证方式问题: 就是mysql可能只能用 unix socket 而非 tcp 登录

MySQL 默认可能使用 auth_socket 或 unix_socket 插件认证,root 用户可能被配置为仅通过 Unix 套接字(非 TCP)登录,而非密码认证。 使用 -h 127.0.0.1 尝试通过 TCP 连接,但 MySQL 认为用户是 'root'@'localhost',且密码或权限未正确配置。 检查 root 用户的认证方式:SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

@tcp(127.0.0.1:3306)换成 @unix(/var/run/mysqld/mysqld.sock)