假设MySQL数据库表:
create table T{k int unsigned not null auto_increment,a date,b varchar(24),c int,d varchar(24),primary key(k),unique key a_index (a DESC,b DESC),key k1(b),key k2(c),key k3(d));
如下哪些sql语句查询能较好的利用索引?()
正确答案: A D 你的答案: A B (错误)
select b from WHERE b like 'aaa%';
select a,b from T WHERE a='2015-10-25' ORDER BY b ASC,c ASC;
select a,b,c from T WHERE a='2015-10-25' ORDER BY b ASC;
select a,b,c from T WHERE a='2015-10-25' ORDER BY a,b;
BC由于索引是降序建立的,查询是升序,不适用。
D可以很好的利用索引,
A还不太明白????
对于满足SQL92标准的SQL语句:
select foo,count(foo)from pokes where foo>10group by foo having count (*)>5 order by foo
其执行顺序应该是?
正确答案: A 你的答案: A (正确)
FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY
FROM->GROUP BY->WHERE->HAVING->SELECT->ORDER BY
FROM->WHERE->GROUP BY->HAVING->ORDER BY->SELECT
FROM->WHERE->ORDER BY->GROUP BY->HAVING->SELECT
答案是A
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选; 3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、select计算所有的表达式;
7、使用order by对结果集进行排序。
MySQL 语法 返回前number 个记录
SELECT column_name(s) FROM table_name LIMIT number
BETWEEN 操作符
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SQL BETWEEN 语法
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
原始的表 (在实例中使用:)
Persons 表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
4 | Gates | Bill | Xuanwumen 10 | Beijing |
BETWEEN 操作符实例
如需以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人,请使用下面的 SQL:
SELECT * FROM Persons WHERE LastNameBETWEEN
'Adams'AND
'Carter'
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |