首页 > 代码库 > mysql 高级

mysql 高级

零、主键冲突

1.更新:

insert into myclass VALUES(1,‘4班‘)
on duplicate key update classname=‘4班‘;--两行受影响,执行的是更新操作。

-------

2.替换:

REPLACE into myclass values(3,‘31班‘);--两行受影响,执行的是更新操作。

 

一、蠕虫复制

create table myint2 like myint;--复制表结构
select * from myint2;
insert into myint2 select * from myint;--复制表记录

---------------------

create table myint3 select * from myint;--复制表结构和记录
select * from myint3;

---------------------

insert into myint2 select * from myint2; --复制自己(记录行数成倍增长)

---------------------

二、高级更新

update myint2 set int_5=1 where int_1=100 limit 1;--只更新一行

delete from myint2 where int_1=127  limit 1;--只删除一行

truncate table myinc;--清空表(先删除,后创建,自增重新从1开始)

---------

三、高级查询

select * from myclass where classid BETWEEN 2 and 3;-- >=2 and <=3

select rand();--0.009105005310014827 --0到1之间的随机数
select rand()*100;--65.88251689996805
select FLOOR(rand()*100);--26
select FLOOR(65.88251689996805);--65 向下取整
select round(65.88251689996805);--66 向上取整

 

select classid,count(1)
from myclass
group by classid desc --按classid 排序(默认是升序)

------------------------

group_concat 函数可以对分组的结果中的某个字段进行字符串连接(保留该组所有的某个字段)

 技术分享

-------------

with rollup 回溯统计

技术分享

---------------------------------

多字段分组回溯统计

技术分享

 ---------------

where和having的区别:

where :从磁盘上取数据,不能使用别名

having :从内存中取数据,可以使用别名

-------------------

select * from myuser limit 2;--查询前两条

select * from myuser LIMIT 0,2;--从第一行开始,查询两条数据,常用来分页

------------------

 

mysql 高级