MySQL的一些操作记录

SQL新增字段

ALTER table TABLE_NAME(表名) ADD CULUMN `field(字段)` 数据类型 是否无符号 是否为空 是否设置默认值;

删除字段语句

 ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME

使用DISTINCT / GROUP BY 进行去重

SELECT DISTINCT 某某字段 FROM XX表 GROUP BY xx字段

获取一个表内2个字段相同的数据

quantity和take_count

SELECT `id`, `status`, `quantity`, `take_count`
FROM coupon AS a
WHERE 
EXISTS ( SELECT quantity, take_count FROM coupon WHERE quantity = a.take_count GROUP BY quantity HAVING count( * ) > 1 )

开放数据库访问权限

开放远程连接权限:grant [权限] on [database.table] to [用户名]@[IP] identified by [密码];
刷新权限:flush privileges;
例子:

grant all privileges on test.* to user@'%' identified by '1234';  

意思是,test数据库的所有表对任意IP地址的user用户开放所有权限,登陆密码是1234。

修改字段的数据类型

ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

不保险还是用第三方工具进行修改表结构

字母加数字拼接的内容查询

这里的卡券号是varchar类型的,所以这边查询的需求是先输入一个卡券前缀,后面输入一个去除前缀之外的号的起始和结束
比如查询 CS001~CS020之间的所有卡号

select * from coupon 
where number like 'CS%'
and CONVERT(REPLACE(number, "CS",""),SIGNED) >= 1
and CONVERT(REPLACE(number, "CS", ""),SIGNED) <= 20

语法说明

select * from table where CONVERT(replace(起始卡号, "固定前缀", ""),SIGNED) < 查询的号码

这边大佬给了一个好的搜索方式

select * from table where number <= 'CS020' and number >= 'CS001';

就搜索语句简洁度和执行速度来说,这个确实好一点。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Virus
讨论数量: 2
秦晓武

字母加数字拼接的内容查询

没明白这块为何要做字符替换?可以直接查:

select * from coupon where  number >=  'cs001' and number <=  'cs020'
1个月前 评论

@秦晓武 varchar的number,不是int的number,所以会有字母拼接的,varchar的这样也能查吗0.0

1个月前 评论
秦晓武 1个月前
wxvirus (作者) (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!