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;
