1.表中添加字段ddl
alter table tb_item_group add column tb_place_id varchar(20) comment'场馆表id';
alter table 表名 add column 新增字段名 类型 cimment '注释';
2.修改表字段ddl
ALTER TABLE tuser CHANGE name user_name varchar(32) DEFAULT NULL COMMENT '姓名';
# ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
3行转列
数据图
比如想将uuid >3的role_name转化为一列
SELECT GROUP_CONCAT(role_name SEPARATOR ',') namex FROM mooc_film_actor_t WHERE UUID>2
SEPARATOR ',' 值中间加入逗号
4字符串替换函数 REPLACE
SELECT REPLACE(cat_name,"#",",") cat_name,source_name FROM news WHERE id=10
5 TRIM 函数
完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
简化格式:TRIM([remstr FROM] str)
mysql> SELECT TRIM(' aaa '); -> 'aaa' mysql> SELECT TRIM(LEADING '.' FROM '...aaa...'); //删除指定的首字符 . -> 'aaa...' mysql> SELECT TRIM(LEADING '.' FROM '..a.aaa...'); //只能删除首字符,第一个a后面的.不能删除 -> 'a.aaa...' mysql> SELECT TRIM(TRAILING '.' FROM 'aaa...'); //删除指定的尾字符 . -> 'aaa' mysql> SELECT TRIM(BOTH '.' FROM '...aaa...'); //删除指定的首尾字符 . -> 'bar'
6 FIND_IN_SET函数
CREATE TABLE `tb_test` ( `id` int(8) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `list` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `tb_test` VALUES (1, 'name', '石头,狮子,椅子'); INSERT INTO `tb_test` VALUES (2, 'name2', '大石头,狮子,桌子'); INSERT INTO `tb_test` VALUES (3, 'name3', '白色,黑色,椅子');
比如,我们想获取 list中有石头的数据
SELECT id,name,list from tb_test WHERE '石头' IN(list); --没有数据
用like查询 ,发现【大石头】的这列也查了出来,但是我们只想要石头
SELECT id,name,list from tb_test WHERE list like '%石头%';
用FIND_IN_SET 函数 ,就查出来了
SELECT id,name,list from tb_test WHERE FIND_IN_SET('石头',list);
mysql中 like和find_in_set区别:
mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。
like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。