1.GROUP_CONCAT 与wm_concat
MySQL中函数CONCAT及GROUP_CONCAT 对应oracle中的wm_concat。
函数语法:
group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
下面举例说明:
select id,price from goods;
以id分组,把price字段的值在同一行打印出来,逗号分隔(默认)
select id, group_concat(price) from goods group by id;
以id分组,把price字段的值在一行打印出来,分号分隔
select id,group_concat(price separator ';') from goods group by id;
以id分组,把去除重复冗余的price字段的值打印在一行,逗号分隔
select id,group_concat(distinct price) from goods group by id;
以id分组,把price字段的值去重打印在一行,逗号分隔,按照price倒序排列
select id,group_concat(DISTINCT price order by price desc) from goods group by id;
2.数据库中,主键和索引的区别
- 主键一定是唯一性索引,唯一性索引并不一定就是主键。
- 一个表中可以有多个唯一性索引,但只能有一个主键。
- 主键列不允许空值,而唯一性索引列允许空值。
主键、外键和索引的区别?
主键 |
外键 |
索引 |
|
定义: |
唯一标识一条记录,不能有重复的,不允许为空 |
表的外键是另一表的主键, 外键可以有重复的, 可以是空值 |
该字段没有重复值,但可以有一个空值 |
作用: |
用来保证数据完整性 |
用来和其他表建立联系用的 |
是提高查询排序的速度 |
个数: |
主键只能有一个 |
一个表可以有多个外键 |
一个表可以有多个惟一索引 |
PRIMARY KEY
主键约束修饰的列,非空且唯一
unique 唯一约束是指定表中的列不能重复,保证数据的唯一性。
3.mysql INSTR函数用法
mysql 进行模糊查询时,可使用内部函数 instr,替代传统的 like 方式,并且速度更快。
instr(field, str) 函数,第一个参数 field 是字段,第二个参数 str 是要查询的串,返回串 str 的位置,没找到就是0。
数据库表如下
3.1、执行如下sql
select * from book where INSTR( book_name , "经" ) > 0
效果如下
3.2、执行如下sql
select instr(book_name, '水') from book
效果如下
返回 ‘水’ 在各个 book_name 中的位置,没有则返回0
4.Mysql中的in和find_in_set的区别?
在mysql中in的使用情况如下:
select * from article where 列名 in(值1,值2,值3.....);
select * from article where 值1 in(值1,值2,值3.....);
在mysql中find_in_set的使用情况如下:
select * from article where find_in_set(值1, '值1,值2,值3.....'); select * from article where find_in_set(列名, '值1,值2,值3.....'); select * from article where find_in_set(值1, 列名);
5.NULL与'' ''
1.
NULL:代表声明了制一个空对象,不是一个字符串,可以赋给任何对象。
空字符:代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串。
2、String s=null; 只是定义了一个句柄,即你有了个引用,但是这个引用未指向任何内存空间。
String s=”“; 这个引用已经指向了一块是空字符串的内存空间,是一个实际的东东了,所以可以对它操作。
String s=”a”和String s=new String(“a”);是有本质上的区别的 :
(1) 前者是在字符串池里写入一个字符’a’,然后用s指向它; 后者是在堆上创建一个内容为”a”的字符串对象。
(2) String str=”aaa”; //于栈上分配内存 ;String str=new String(“aaa”); //于堆上分配内存