1、sqlite_master
针对库中的所有表生成select count(*)对应的SQL语句,如数据库里有以下表,
(注:在 SQLite 中用 “||” 符号连接字符串,无法使用concat函数)
employees
departments
dept_emp
dept_manage
salaries
titles
emp_bonus
那么就会输出以下的样子:
代码实现:
select 'select count(*) from'||name||';' from sqlite_master
where type='table'
注意:sqlite_master的使用见:https://blog.csdn.net/qq_38978225/article/details/108948158
2、连接||的使用
将employees表中的所有员工的last_name和first_name通过(’)连接起来。(不支持concat,请用||实现)
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
输出格式:
代码实现:
select employees.last_name|| "'" || employees.first_name as name
from employees
3、查找字符串’10,A,B’ 中逗号’,'出现的次数cnt。
题目描述:
查找字符串’10,A,B’ 中逗号’,'出现的次数cnt。
代码实现:
select length('10,A,B')-length(replace('10,A,B',',','')) as cnt
思路分析:
先使用replace将,替换为空,那么整个字符串减少的长度除,的长度,就是,出现的次数。
4、substr(first_name,-2,2)
sql按照first_name后面两个字母的顺序来进行排序.
题目描述:
”获取Employees中的first_name,查询按照first_name最后两个字母,按照升序进行排列
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
输出格式:
代码实现:
select first_name
from employees
order by substr(first_name,-2,2) ASC
解题思路:
注意这里substr()函数的使用。https://blog.csdn.net/qq_38978225/article/details/108948529
5、concat
concat的使用见:链接
题目描述:
按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
输出格式:
代码实现:
select dept_no,group_concat(emp_no) as employees
from dept_emp
group by dept_no
解题思路:
注意这里的griup_concat的使用,详细可见:链接