我的 MySQL 大总结

分类:MySQL     发布时间:2019-12-07     最后更新:2021-02-23     浏览数:1988
用了许多年的 MySQL,依然对它不熟悉,学习到的也是些零零散散的知识点,今闲来无事,打算花点时间来总结一下我知道的 MySQL。如有不对,请指正。

MySQL

历史与现状

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,2009年 SUN 公司被 Oracle 收购,现它属于 Oracle 旗下产品。

个人的一些习惯

  • 数据命名。数据库一般用项目的名字,如 mini_clubs,用 _ 连接单词。
  • 表名。一般加前缀且单词用复数,如 mc_users,其中 mc 是由 mini clubs 的首字母组成。
  • 字符编码与字符集。字符编码一般使用 utf8mb4,字符集一般使用utf8mb4_general_ciutf8mb4MySQL 5.5.3 增加的,mb4 就是 most bytes 4 的意思,专门用来兼容四字节的unicode

实例

以下实例都是我在做项目悦阅 和 小咔吧微信小程序时总结下来的。

  1. 更新同表内的字段为另一字段 语法 UPDATE 表名 SET 字段名=值

    UPDATE book_borrowers SET created_at = (expire_at - 30 * 24 * 60 * 60);
    UPDATE books SET remark = REPLACE(remark, 'A', 'B');
    UPDATE mc_users SET email = lower(email);
  2. 查询活动成员

    SELECT
    u.NAME,
    u.email,
    DATE_FORMAT( FROM_UNIXTIME( m.joined_at ), '%Y-%m-%d %H:%i:%s' ) AS joinedAt 
    FROM
    mc_activity_members AS m
    LEFT JOIN mc_users AS u ON u.id = m.user_id 
    WHERE
    activity_id = 26 
    ORDER BY
    m.joined_at DESC;
  3. 导出数据库

    mysqldump -uroot -p --databases clubs > clubs.backup20190825.sql
  4. 创建数据库

    CREATE DATABASE
    IF
    NOT EXISTS clubs_backup DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  5. 借阅书 7 天后将过期

    SELECT
    users.name AS '用户',
    books.title AS '图书',
    FROM_UNIXTIME( book_borrowers.created_at ) AS '借书日',
    FROM_UNIXTIME( book_borrowers.expire_at ) AS '最后还书日',
    TIMESTAMPDIFF(
        DAY,
        FROM_UNIXTIME(
            UNIX_TIMESTAMP(
            NOW())),
        FROM_UNIXTIME( book_borrowers.expire_at ) 
    ) AS '还有几天到期',
    books.state AS '图书状态' 
    FROM
    book_borrowers,
    books,
    users 
    WHERE
    books.id = book_borrowers.book_id 
    AND book_borrowers.user_id = users.id 
    AND book_borrowers.deleted_at IS NULL 
    AND book_borrowers.send_email_at IS NULL /*AND books.state = 2*/
    
    AND book_borrowers.expire_at <= (
        UNIX_TIMESTAMP(
        NOW()) + 7 * 24 * 60 * 60 
    ) 
    ORDER BY
    expire_at ASC;

MySQL基础

参考

MySQL的发展历程

上一篇: for of 和 for in 的区别 下一篇: React Chat