小于 1 分钟
- 框架相关18
- 系统相关16
- 我的想法9
- 前端相关9
- 数据库9
- Docker8
- Java8
- JDK基础源码8
- 树莓派4
- JDK并发编程4
- Java技术2
- MySQL2
- 设计模式2
- 面试突击2
- 前端技术1
- 开发运维1
- k8s1
- Java并发编程1
- 技能1
- 前端示例1
- Windows1
- Java基础1
- 面试1
- JDK集合源码1
- MyBatis1
- Spring1
大家可能会想,不会吧,本文结论是,不会的。
步骤
- 建表、建索引
- explain(查看执行计划)
建表、建索引
CREATE TABLE `hi_user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`gender` tinyint DEFAULT NULL,
`age` int DEFAULT NULL,
`description` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
2021年6月26日大约 2 分钟
索引可以包含一列或多列,如果是多列,列的顺序也十分重要;创建一个包含两列的索引,和创建两个一列的索引是大不相同的。
目录
- 索引分类
- 索引命名规范
- 测试表SQL
- 索引设计原则
- 索引优化实战
1、索引分类
- 主键索引(Primary Key)
- 唯一索引(Unique Key)
- 普通索引(Normal Key)
2020年5月4日大约 5 分钟
1、授权
1.1 MySQL 8.0以下
-
基础授权
GRANT 权限 ON 数据库对象 TO 用户 IDENTIFIED BY 密码; -
GRANT ALL PRIVILEGES ON *.* TO 'zzti'@'180.117.75.5' IDENTIFIED BY 'zutEdu2018'; -
可为其他用户授权(基础授权 +
WITH GRANT OPTION;) -
GRANT ALL PRIVILEGES ON *.* TO 'zzti'@'180.117.75.5' IDENTIFIED BY 'zutEdu2018' WITH GRANT OPTION;
2019年12月30日小于 1 分钟
根据日期找出年月日
- 方式1
- SELECT EXTRACT (YEAR FROM DATE '2019-08-15') FROM dual;
- SELECT EXTRACT (MONTH FROM DATE '2019-08-15') FROM dual;
- SELECT EXTRACT (DAY FROM DATE '2019-08-15') FROM dual;
- 方式2
- SELECT "SUBSTR"('2019-08-15', 0, 4) FROM dual;
- SELECT "SUBSTR"('2019-08-15', 6, 2) FROM dual;
- SELECT "SUBSTR"('2019-08-15', 9, 2) FROM dual;
2019年1月1日小于 1 分钟
1、锁
SELECT ... LOCK IN SHARE MODE 走的是IS锁 (意向共享锁)
即在符合条件的rows上都加了共享锁,这样的话,其他session可以读取这些记录,也可以继续添加IS锁,
但是无法修改这些记录直到你这个加锁的session执行完成(否则直接锁等待超时)。
SELECT ... FOR UPDATE 走的是IX锁 (意向排它锁)
即在符合条件的rows上都加了排它锁,其他session也就无法在这些记录上添加任何的S锁或X锁。
如果不存在一致性非锁定读的话,那么其他session是无法读取和修改这些记录的,
但是innodb有非锁定读(快照读并不需要加锁),for update之后并不会阻塞其他session的快照读取操作,
除了select ...lock in share mode和select ... for update这种显示加锁的查询操作。
2019年1月1日大约 1 分钟
目录
新增add
- 新增字段
ALTER TABLE wmmm_user.member ADD CHANNEL_ID bigint(20) DEFAULT NULL COMMENT '注册来源渠道号'; - 默认设置创建时间
CREATE_TIME datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' - 默认设置修改时间
UPDATE_TIME datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间' - 注: 数据库增加字段
ADD COLUMN是错的,直接ADD即可
2019年1月1日大约 1 分钟
Linux MySQL
- https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html
- yum localinstall mysql80-community-release-el7-3.noarch.rpm
- yum repolist enabled | grep "mysql.-community."
- yum repolist enabled | grep mysql
- yum install mysql-community-server
- 修改端口:
- vi /etc/my.cnf
- 增加port=3309
- 启动
service mysqld start - 查看
service mysqld status - 重启
service mysqld restart - 查看原始密码
grep 'temporary password' /var/log/mysqld.log - 设置新密码|设置Navicat支持的密码加密方式(MySQL8.0+密码默认加密方式非Navicat默认加密方式)
2019年1月1日大约 2 分钟