01.插入数据
| 01.复制旧表的数据到新表使用insert into.. select语句的时候,如果旧表存在自增键或者uuid,则在select的时候记得要排除自增ID列的数据,用null代替. |
| |
| 02.replace into 和 insert into 的区别在于replace into 首先尝试插入数据到表中,如果发现表中已经有此行数据(根据主键或者唯一索引判断),则先删除此行数据,然后再插入新的数据. |
| |
| 应用场景:不管ID(唯一索引)是否存在,都要插入成功,此时表中已经有此id,用insert into 或报错,只能用replace into 了. |
02.更新数据
| 同时update多个字段: update 表名 set 字段1,字段2 where ... |
03.删除数据
| 01.时间差函数:timestampdiff(interval,time_start,time_end) 可计算time_start 到time_end之间的时间差,单位以指定的interval为准,常用的可选的参数: |
| second:秒 |
| minute:分钟(返回秒数差除以60的整数部分) |
| hour:小时(返回秒数差除以3600的整数部分) |
| day:天数 (返回秒数差除以3600*2的整数部分) |
| month:月数 |
| year:年数 |
| |
| 02.删除数据的方式汇总: |
| a.根据条件删除:delete tablename where ... |
| b.全部删除(表清空,包含自增计数器重置):truncate tablename |
04.表的创建
| a.直接创建表: |
| CREATE TABLE |
| [IF NOT EXISTS] tb_name |
| (column_name1 data_type1 |
| [ PRIMARY KEY |
| | FOREIGN KEY |
| | AUTO_INCREMENT |
| | COMMENT comment |
| | DEFAULT default_value |
| | UNIQUE |
| | NOT NULL |
| ], ... |
| ) [CHARACTER SET charset utf8 ] |
| [COLLATE collate_value] |
| b.从另一张表复制表结构创建表:CREATE TABLE tb_name LIKE tb_name_old |
| c.从另一张表的查询结果创建表:CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options |
| d.修改表:ALTER TABLE 表名 修改选项 |
| e.删除表:DROP TABLE [IF EXISTS] 表名1 [ ,表名2] |
05.索引的创建 删除和使用
| a.create 方式创建索引: |
| CREATE |
| [UNIQUE |
| | FULLTEXT |
| ] INDEX index_name ON table_name |
| (column1[(length) [DESC|ASC]] [,column2,...]) |
| |
| b.alter方式创建索引:ALTER TABLE tb_name ADD [UNIQUE | FULLTEXT] [INDEX] index_content(content) |
| |
| c.drop方式删除索引:DROP INDEX <索引名> ON <表名> |
| |
| d. alter方式删除索引:ALTER TABLE <表名> DROP INDEX <索引名> |
| |
| e.索引的使用: |
| 1.索引使用时满足最左前缀匹配原则,即对于组合索引(col1, col2),在不考虑引擎优化时,条件必须是col1在前col2在后,或者只使用col1,索引才会生效; |
| 2.索引不包含有NULL值的列 |
| 3.一个查询只使用一次索引,where中如果使用了索引,order by就不会使用 |
| 4.like做字段比较时只有前缀确定时才会使用索引 |
| 5.在列上进行运算后不会使用索引,如year(start_time)<2020不会使用start_time上的索引 |
06.关于MYSQL中的一些函数.
| 注意:MYSQL聚合函数会自行忽略值为null的行. |
| |
| 注意:count(distinct uid,date_format(submit_time,'%y%m%d') |
| |
| 注意:MYSQL查询当月的天数:SELECT day(LAST_DAY('2018-02-01')) |
| |
| 拼接函数:group_concat([distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符']) |
| |
| 注意:子查询的相关知识总结. |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构