Mysql数据库部分笔记

  • 表格去重问题
    表格去重是我们经常会遇到的问题,怎么才能有效的根据数据信息去重:
    1、数据表中存在索引列即ID(可以直接添加列)
    2、多列数据相同使用group By筛选
    3、存储过程去重表格数据
CREATE DEFINER=`root`@`localhost` PROCEDURE `uniq_table`()
BEGIN


CREATE TABLE tmp SELECT MAX(index) as inde FROM yday GROUP BY userid,name;
CREATE TABLE tmp2 SELECT old_table.* FROM old_table,tmp WHERE old_table.index= tmp.index;
#删除旧表格
DROP TABLE old_table;
#表格重命名
RENAME TABLE tmp2 TO new_table;
#删除临时表
DROP TABLE IF EXISTS tmp;
#为新的去重表格添加自增序列
alter table new_table MODIFY inde int(10) not null auto_increment first ,add primary key(index);


END

  • group By和 having的使用
    1、运算顺序:先group By 分组,后having 条件判断
    2、having使用原因:WHERE 关键字无法与合计函数一起使用
#嵌套条件查询(注意临时表名‘a’)
select count(*) from ( select userid from new_table group by userid having count(name) = 2  ) a;

  • 添加列,删除列等
#查看表的字段信息:
desc 表名;
#查看表的所有信息:
show create table 表名;
#添加主键约束:
alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
#添加外键约束:
alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
#删除主键约束:
alter table 表名 drop primary key;
#删除外键约束:
alter table 表名 drop foreign key 外键(区分大小写);
#修改表名:
alter table t_book rename to bbb;
#添加列:
alter table 表名 add column 列名 varchar(30);
#删除列:
alter table 表名 drop column 列名;
#修改列名: 
alter table bbb change nnnnn hh int;
#修改列属性:
alter table t_book modify name varchar(22);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值