北宸~
热爱世间万物,无偏爱,无例外~~
posts - 31,comments - 0,views - 5746

01.插入数据

01.复制旧表的数据到新表使用insert into.. select语句的时候,如果旧表存在自增键或者uuid,则在select的时候记得要排除自增ID列的数据,用null代替.
02.replace intoinsert 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 -- 自增ID
| 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'--释义:先对UID进行去重,然后再count submit.
注意:MYSQL查询当月的天数:SELECT day(LAST_DAY('2018-02-01')) --先通过LAST_DAY() 查找当月最后一天,然后通过day()返回天数.
拼接函数:group_concat([distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符']) -- 通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
注意:子查询的相关知识总结.
posted on   Agoni~~  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示