我们新建一张表用于数据检索。
CREATE TABLE `clerk_Info` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `salary` decimal(10,2) DEFAULT NULL, `companyId` int(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1然后插入一些数据,插入完成后的数据如下。
然后我们可以使用 RAND() 函数进行随机检索数据行
select * from clerk_info order by rand();检索完成后的数据如下
多次查询后发现每次检索的数据顺序都是随机的。
这个函数多用于随机抽样,比如选取一定数量的样本在进行随机排序,需要用到 limit 关键字。
GROUP BY + WITH ROLLUP我们经常使用 GROUP BY 语句,但是你用过 GROUP BY 和 WITH ROLLUP 一起使用的吗?使用 GROUP BY 和 WITH ROLLUP 字句可以检索出更多的分组集合信息。
我们仍旧对 clerk_info 表进行操作,我们对 name 和 salary 进行分组统计工资总数。
select name,sum(salary) from clerk_info group by name with rollup;可以看到上面的表按照 name 进行分组,然后再对 money 进行统计。
也就是说 GROUP BY 语句执行完成后可以满足用户想要的任何一个分组以及分组组合的聚合信息值。
这里需要注意一点,不能同时使用 ORDER BY 字句对结果进行排序,ROLLUP 和 ORDER BY 是互斥的。
数据库名、表名大小写问题在 MySQL 中,数据库中的每个表至少对应数据库目录中的一个文件,当然这取决于存储引擎的实现了。不同的操作系统对大小写的敏感性决定了数据库和表名的大小写的敏感性。在 UNIX 操作系统中是对大小写敏感的,因此数据库名和表名也是具有敏感性的,而到了 Windows 则不存在敏感性问题,因为 Windows 操作系统本身对大小写不敏感。列、索引、触发器在任何平台上都对大小写不敏感。
在 MySQL 中,数据库名和表名是由 lower_case_tables_name 系统变量决定的。可以在启动 mysqld 时设置这个系统变量。下面是 lower_case_tables_name 的值。
如果只在一个平台上使用 MySQL 的话,通常不需要修改 lower_case_tables_name 变量。如果想要在不同系统系统之间迁移表就会涉及到大小写问题,因为 UNIX 中 clerk_info 和 CLERK_INFO 被认为是两个不同的表,而 Windows 中则认为是一个。在 UNIX 中使用 lower_case_tables_name=0, 而在 Windows 中使用lower_case_tables_name=2,这样可以保留数据库名和表名的大小写,但是不能保证所有的 SQL 查询中使用的表名和数据库名的大小写相同。如果 SQL 语句中没有正确引用数据库名和表名的大小写,那么虽然在 Windows 中能正确执行,但是如果将查询转移到 UNIX 中,大小写不正确,将会导致查询失败。
外键问题这里需要注意一个问题,InnoDB 存储引擎是支持外键的,而 MyISAM 存储引擎是不支持外键的,因此在 MyISAM 中设置外键会不起作用。
MySQL 常用函数下面我们来了解一下 MySQL 函数,MySQL 函数也是我们日常开发过程中经常使用的,选用合适的函数能够提高我们的开发效率,下面我们就来一起认识一下这些函数
字符串函数字符串函数是最常用的一种函数了,MySQL 也是支持很多种字符串函数,下面是 MySQL 支持的字符串函数表
函数 功能LOWER 将字符串所有字符变为小写
UPPER 将字符串所有字符变为大写
CONCAT 进行字符串拼接
LEFT 返回字符串最左边的字符
RIGHT 返回字符串最右边的字符
INSERT 字符串替换
LTRIM 去掉字符串左边的空格
RTRIM 去掉字符串右边的空格
REPEAT 返回重复的结果
TRIM 去掉字符串行尾和行头的空格
SUBSTRING 返回指定的字符串
LPAD 用字符串对最左边进行填充
RPAD 用字符串对最右边进行填充
STRCMP 比较字符串 s1 和 s2
REPLACE 进行字符串替换
下面通过具体的示例演示一下每个函数的用法
LOWER(str) 和 UPPER(str) 函数:用于转换大小写