特点

MyISAM和InnoDB对比
| 对比项目 | MyISAM | InnoDB |
|---|---|---|
| 主外键 | 不支持 | 支持 |
| 事务 | 不支持 | 支持 |
| 行表锁 | 表锁,即使操作一条记录也会锁表 |
读写锁调度是写优先,写表锁会造成其他线程的查询很难得到锁,造成永久阻塞 | 行锁,只锁操作行,适合高并发操作 | | 缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还缓存真实数据,对内存要求比较高,而且内存大小对性能有决定性影响 | | 表空间 | 小 | 大 | | 关注点 | 性能 | 事务 |
DDL(数据库和表操作)
DQL(查询语句)
DML(操作语句)
逻辑删除与物理删除的区别 逻辑删除的本质就是修改操作,所谓的逻辑删除并不是真的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。实际上数据还存在数据库里; 物理删除就是真正的从数据库中删除操作,直接delete。
批量插入 INSERT ALL INTO (field1,...fieldn) VALUES (), INTO () VALUES ()
查询分页 OFFSET offsetRow ROWS FETCH NEXT limitNum ROWS ONLY
查询前几条 ROWNUM <= n FETCH FIRST n ROWS ONLY
instr()字符查找函数,查找一个字符串在另一个字符串中首次出现的位置
to_date()[‘yyyy-mm-dd hh24:mm:ss’, ‘yyyymmddhh24mmss’]
coalesce (表达式1,表达式2,。。。) 如果第一个表达式为空,则返回第二个,以此类推
substr(string,start) | (string from index) | (string from index for len) | (string, start, len) |(string from regexp)从字符串的某个位置开始截取(长度)
COUNT() 函数返回匹配指定条件的行数。
case ... when ... then ... else ... end 当某字段符合条件时,执行then否则else,else后面的值类型要与then后面的值类型保持一致
ROW_NUMBER() OVER (PARTITION BY field ORDER BY field DESC) 窗口函数
cast(字段名 as 转换的类型) 将字段类型做转换
BINARY 二进制 CHAR[(N)] 字符型 DATETIME 日期和时间型 DATE 日期型 TIME 时间型 DECIMAL 浮点型 SIGNED 整型 UNSIGNED 无符号整型