首页 > 代码库 > 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 高级