复制表结构
create table table2 like table1;
将另一个结构相同的表的数据插入到表中
INSERT INTO table2 select *FROM table1
联合查询
SELECT name FROM TABLE1
UNION
SELECT name_t FROM TABLE2
内连接,查询两个表中
SELECT t.name,t.name_t FROM TABLE2 as t
INNER JOIN
TABLE1 as t2 on t.name=t2.name
左连接
SELECT t.name,t.name_t, t2.`name` as t2name FROM TABLE2 as t
left JOIN
TABLE1 as t2 on t.name=t2.name
语法:FIND_IN_SET(str,strlist)
定义:
1. 假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N之间。
2. 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。
3. 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,使用比特计算。
4. 如果str不在strlist或strlist为空字符串,则返回值为0。
5. 如任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
strlist:一个由英文逗号“,”链接的字符串,例如:"a,b,c,d",该字符串形式上类似于SET类型的值被逗号给链接起来。
示例:SELECT FIND_IN_SET('b','a,b,c,d'); //返回值为2,即第2个值
示例:SELECT FIND_IN_SET('e','a,b,c,d'); //没有则返回 0
这个可以用于where 的条件判断
SELECT name FROM TABLE1 where 0
SELECT name FROM TABLE1 where 1
with rollup
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
注意:相同
除了统计了相应的字段也把全部的统计了一边,不过全部的字段现在为null
SELECT name , COUNT(*) as g FROM TABLE2 GROUP BY name with ROLLUP
优化修改全部的统计字段为总数
SELECT coalesce(name,"总数") , COUNT(*) as g FROM TABLE2 GROUP BY name with ROLLUP
coalesce
我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
select coalesce(a,b,c);
参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
以下实例中如果名字为空我们使用总数代替:
SELECT coalesce(name,"总数") , COUNT(*) as g FROM TABLE2 GROUP BY name with ROLLUP
delete,drop,truncate 都有删除表的作用,区别在于:
1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
BETWEEN 在两值之间 >=min&&<=max
SELECT 3 BETWEEN 1 AND 4
SELECT 5 BETWEEN 1 AND 4
插入数据用于测试
INSERT into table_time(time1,time2,time3,name)VALUES(now(),now(),now(),"122455555553")
INSERT into table_time(time1,time2,time3,name)VALUES(now(),now(),now(),"1745ad768")