MySQL
历史与现状
MySQL
是一个关系型数据库管理系统,由瑞典 MySQL AB
公司开发,2008 年被 SUN
公司收购,2009年 SUN
公司被 Oracle
收购,现它属于 Oracle
旗下产品。
个人的一些习惯
- 数据命名。数据库一般用项目的名字,如
mini_clubs
,用_
连接单词。 - 表名。一般加前缀且单词用复数,如
mc_users
,其中mc
是由mini clubs
的首字母组成。 - 字符编码与字符集。字符编码一般使用
utf8mb4
,字符集一般使用utf8mb4_general_ci
。utf8mb4
是MySQL 5.5.3
增加的,mb4
就是most bytes 4
的意思,专门用来兼容四字节的unicode
实例
以下实例都是我在做项目悦阅 和 小咔吧微信小程序时总结下来的。
-
更新同表内的字段为另一字段 语法
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);
-
查询活动成员
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;
-
导出数据库
mysqldump -uroot -p --databases clubs > clubs.backup20190825.sql
-
创建数据库
CREATE DATABASE IF NOT EXISTS clubs_backup DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
借阅书 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;