北宸~
热爱世间万物,无偏爱,无例外~~

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 -- 自增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 2022-03-22 15:05  Agoni~~  阅读(65)  评论(0)    收藏  举报