1.CIL连接mysql
- mysql -h localhost -P 3306 -u root -proot
大写的P
表示端口号,小写的p
表示密码,大家记住了
大家要记住,小写的p表示密码,-p和密码
之间一定不能有空格,其他的像-u,-h,-P之类的,是可以有空格的,也可以没有空格,如果是本机的话,主机ip和端口号可以不写(即主机ip和端口号可以省略),直接写成mysql -u root -proot
选择特定的数据库:use databasename
https://blog.csdn.net/czh500/article/details/84972388
2.mysql where子句解析顺序
mysql 从左到右,Oracle 从右到左, 将过滤大量数据的子句优先执行,有利于提高执行效率
- sql语句长度限制:https://blog.csdn.net/yf_man/article/details/78150876
3.exists 和 in 以及 between之间区别
https://www.cnblogs.com/clarke157/p/7912871.html
https://www.cnblogs.com/tianzeng/p/9279593.html
in()适合B表比A表数据小的情况
执行两次sqlexists()适合B表比A表数据大的情况
执行外表.length+1次sql通常情况下采用exists要比in效率高,因为IN不走索引
(如果IN里面是子查询,会导致索引失效)- 明确数值的情况下用
and (id ='1' or id ='2' or id ='3')
走索引,效率高 - not in:使用not in 时,如果列表查询出来的有
null
,则查询不出任何数据。 - between
min
andmax
(mysql包含边界值
)、
(数据比较功能 SELECT 'b' BETWEEN 'a' AND 'c'
区间内为 1 否则为 0) - 查询使用缓存:SQL_CACHE ,不适用缓存:SQL_NO_CACHE
4.Date,DateTime,TimeStamp和Time类型
DATETIME
类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以’YYYY-MM-DD HH:MM:SS’格式显示DATETIME值,支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。(“支持”意味着尽管更早的值可能工作,但不能保证他们可以。)DATE
类型用在你仅需要日期值时,没有时间部分。MySQL检索并且以’YYYY-MM-DD’格式显示DATE值,支持的范围是’1000-01-01’到’9999-12-31’。TIMESTAMP
列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE
的操作。TIME
数据类型表示一天中的时间。MySQL检索并且以"HH:MM:SS"格式显示TIME值。支持的范围是’00:00:00’到’23:59:59’
6.mySql 大数据量分页查询优化
书签方式、延迟关联
7.MVVC(Multi-Version Concurrency Control)多版本并发控制机制
10.mysql排序
14.mysql 慢查询优化
15.批量插入数据, insert … select、replace … select 和 load data会有表级锁,为了保证主键自增时,主备一致。
16.mysql相关文章
用ENUM
代替 varchar
,尽量使用 not null
,
17.压力测试工具 Sysbench,ApacheBench,http_load
18.共享表空间和独立表空间
19.mysql索引知识(B-树 B+树)
不同磁道上扇区的长度不一样,为什么容量还一样
20.MySQL单个字段去重
select *, count(distinct name) from table group by name
21.mysql 连接数查询处理
- 正在执行的事务:SELECT * FROM information_schema.INNODB_TRX
- 在锁的事务:SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
- 等待锁的事务:SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
- 查看所有连接:show full prcesslist;
- 查看服务器状态: show status [like ‘***’]