一下语句都是基于 mysql数据库
查询是否使用索引
explain select * FROM t_table1;
结果列的含义:
table:此次查询操作是关联哪张数据表
type:连接查询操作类型,一般根据索引查询的话为const,如果没有索引,则遍历所有数据那么为All(此种方式效率极低)
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。
key: 实际使用的索引。如果为NULL,则没有使用索引。
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
rows:返回请求的数据的行数
新建t_table1 复制 t_table2 的表结构和数据
CREATE TABLE t_table1 SELECT * FROM t_table2 ;
t_table2 数据复制到 t_table1
INSERT INTO t_table1 SELECT * FROM t_table2 ;
多表关联删除
DELETE t1 FROM t_table1 t1 LEFT JOIN t_table2 t2 ON t1.id=t2.id WHERE t2.id IS NULL;
多表关联更新数据
UPDATE t_table1 t2 LEFT JOIN t_table2 t1 ON t2.name= t1.name set t2.avatar = t1.avatar ;
截取 substring_index(字段, 截取的符号,1(截取符号之前的)/-1(截取符号之后的))
SELECT substring_index(time, '.',1) from t_table1
根据多列查重复数据
SELECT * FROM t_table1 a group by name,avatar HAVING count(1) > 1 ;
查找带中文字符的数据 length 不等于 char_length时说明含有中文
SELECT * FROM t_table1 WHERE length(name)!=char_length(name);
删除重复数据
DELETE FROM t_table1 WHERE id in (SELECT id FROM (
SELECT id FROM t_table1 a
WHERE ((SELECT COUNT(*) FROM t_table1 WHERE id = a.id) > 1) and id not in (
select min(id) from t_table1 group by id having count(*)>1
) ORDER BY id DESC ) as temp
);
获取字符长度 LENGTH
SELECT LENGTH(name) from t_table1 where LENGTH(name)>50 ;
替换字符 replace(字段,要替换的字符,替换字符)
update t_table1 set name = replace(name,'/','+') where name LIKE '%/%';
截取字符 SUBSTRING(字段,从第几个字符开始截取,截取多少位)
SELECT SUBSTRING(avatar,3,LENGTH(avatar)) from t_table1 LIMIT 1;
添加唯一键
ALTER TABLE t_table1 ADD CONSTRAINT UN_t_table1_phoneNumber UNIQUE (phone_number);
原文:https://blog.csdn.net/qq_27292113/article/details/80008573