雇员表EMP 结构如下 ( 雇员编号 EMPNO , 姓名 ENAME , 工作岗位 JOB , 管理员编号 MGR, 受雇时间 HIREDATE , 工资 SAL , 奖金 COMM , 部门编号 DEPTNO );
显示受雇时间在2010年1月1日和2012年12月31日之间的雇员的姓名、工资、及受雇时间,并以受雇时间升序排列。
SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN '2010-01-01' AND '2012-12-31' ORDER BY HIREDATE;以上代码是错误的,因为该时间范围是从 2010-01-01 的 0 时 到 2012-12-31 的 0 时, 即没有包括31号这一天。
例子 create table time (t datetime); insert into time values(‘2018-12-31 11:23:56’); insert into time values(‘2018-12-30 11:23:56’);
select * from time where t between ‘2018-01-01’ and ‘2018-12-31’;
#查询日期只能截止到2012-12-31 00:00:00 并没有当天的记录 #结果只有一条: 2018-12-30 11:23:56
select * from time where t between ‘2018-01-01’ and ‘2018-12-30’; #结果:Empty set (0.00 sec)
select * from time where t between ‘2018-01-01’ and ‘2019-01-01’; #能查到两条结果
有一个名为app的MySQL数据库表,其建表语句如下:
CREATE TABLE `app` ( `app_id` int(10) DEFAULT '0',//应用ID `version_code` int(10) DEFAULT '0',//应用的版本号 `download_count` int(10) DEFAULT '0'//当前版本的下载量 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4当前表中数据记录如下,一条记录表示某个应用的某个版本的下载量记录:
首先汇总每个app每个版本的销量,需要group by app_id,version_code
select t.app_id, t.version_code, max(t.download_sum) from (select app_id, version_code, sum(download_count) download_sum from app group by app_id, version_code order by download_sum desc) as t group by t.app_id;论清理表数据的速度,truncate一般比delete更快 正确 truncate命令可以用来删除部分数据。 错 truncate只删除表的数据不删除表的结构 正确 delete能够回收高水位 错
1、处理效率:drop>truncate>delete 2、drop删除整个表;truncate删除全部记录,但不删除表;delete …where 删除部分记录 3、delete不影响所用extent,高水线保持原位置不动;truncate会将高水线复位。
——————————————————————————————
【https://www.nowcoder.com/questionTerminal/f3053b1c256e471b99a2a7da445a6d47】 来源:牛客网
因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。 ————————————————————————————————
having子句既可包含聚合函数作用的字段也可包括普通的标量字段 正确
使用having的同时不能使用where子句 错误
having子句必须于group by 子句同时使用,不能单独使用 正确
使用having子句的作用是限定分组条件 错误
Having子句和where子句是等同的 错误
如果select语句中没有聚合函数的使用,就不能使用having子句 错误
group by的作用是限定分组条件,而having则是对group by中分出来的组进行条件筛选。 正确
用having就一定要和group by连用,且是先group by XXX 再having XXX 正确
聚合函数是 max min avg 等 正确
