SQl查询的简单问题,
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQl查询的简单问题,相关的知识,希望对你有一定的参考价值。
今天考SQL,虽然简单,但我没基础,一头雾水,,写查询语句给我
例子:1 检索goods表中的“货品名称”、“库存量”列。
select 货品名称,库存量
from goods
回答以下
2 从goods表中检索出货品名称为“pen”、“book”、“desk”的货品的“货品名称”、“库存量”、“供应商”信息。
3 从goods表检索出所有库存量大于等于1000且小于等于2000的“货品名称”、“库存量”、“价格”信息。列标题分别为“货品的名称”、“货品的库存量”、“货品的单价”。
4 编写一条SELECT语句,显示goods表中所有货品的货品名称、价格和折价10%后的价格,使用别名“9折后的价格”标识被计算的列,查询结果按价格由高到低排序。
5 编写一条SELECT语句,列出customers表中姓王的客户信息。
6 查询员工表(employees)中姓李的人数(即“员工姓名”列中第一个字是李的数量)。
7 基于多个条件的查询,编写一条SELECT语句,查询2002年上半年、销售数量大于1000的订单信息。
8 实现内连接,查询出有订单的重庆客户的姓名、电话号码并显示他们的订单信息。
9 建立子查询,编写一个SELECT语句,查找订货数量大于该货品的平均订货数量的订单信息。
10 根据销订购单表(orders)的数据计算2009年全年所销售商品的总量。
11 查询员工表(employeer表)年龄最小(”出生日期”最大)的员工姓名、性别
12 从订购单表orders和员工表employees中查询性别为”女”的员工的销售记录。
各位大侠,速度啊~~10月22日8点55前能写多少答案就多少。~~~~~~~~~ 我要答案啊~~~~~~~~~~~~不要什么讲义
select 货品名称,库存量,供应商
from goods
where 货品名称 in('pen','book','desk')
--3.
select 货品名称 as 货品的名称,库存量 as 货品的库存量,价格 as 货品的单价
from goods
where 库存量 between 1000 and 2000
--4
select 货品名称,价格,价格*0.9 as 9折后的价格
from goods
order by 价格 desc
--5
select * from customers
where 姓名 like '王%'
--6
select count(*)
from employees
where 员工姓名 like '李%'
--7
select * from 订单表
where 时间 between('2002-01-01' and '2002-06-30') and 数量>1000
不回答了,你连有哪些表,还有表的结构都不说清楚.
--11
select 姓名,性别
from employeer
where 出生日期=
(
select max(出生日期) from employeer
)
就这么多了,你要是把表描述清楚了其实很简单的,你这样没说清楚让人不好写.本回答被提问者采纳 参考技术B 是不是这样
SQL>
select
*
from
tt01;
ID
NAME
----------
----------
1
wang
2
ws
3
wx
SQL>
select
*
from
tt01
where
id
in
(select
regexp_substr(vcr,'[^,]+',1,level)
id
from
(select
'1,2'
vcr
from
dual)
connect
by
level<=length(vcr));
ID
NAME
----------
----------
1
wang
2
ws 参考技术C 我考过不久,有讲义你要不?
简单的 SQL 嵌套选择查询不再起作用
【中文标题】简单的 SQL 嵌套选择查询不再起作用【英文标题】:Simple SQL nested select query no longer working 【发布时间】:2012-05-09 09:39:46 【问题描述】:我有一个相对简单的查询,通常需要不超过 10 秒才能返回。如下:
SELECT personid
FROM vw_has_copyright
WHERE (Orderid IN (SELECT orderid
FROM orders WHERE eventid = 1234))
GROUP BY personid
ORDER BY personid
现在它只是在我运行此查询时挂起。如果我运行select orders.orderid from orders where orders.eventid = 1234
- 然后将此查询生成的列表与select personid from vw_has_copyright where Orderid in (*my list here...*)
一起使用,它可以正常工作。
那么为什么它不再适用于嵌套选择查询呢?看起来很奇怪,但我不确定如何调试它?提前致谢!!
---编辑---
相当尴尬的是,问题在于我没有正确维护我的索引。由于我的订单表索引上的高度碎片化,查询突然停止工作,但是在重建和重组它们之后,查询现在又可以工作了!故事的寓意 - 照顾你的数据库!
【问题讨论】:
哪个 DBMS? PostgreSQL?甲骨文? DB2? 什么版本的 SQL? (MySQL、MS SQL Server、Oracle?)我会考虑刷新表统计信息和/或重新编译视图(假设 vw_ 表示视图)。 执行计划是什么,上次执行索引维护和更新统计是什么时候? 如果它突然“挂起”,可能是锁定问题。其他一些事务修改了 vw_has_copyright 或 orders 表并阻止了您的选择 简直不敢相信 - 但我的 SQL Server 代理维护计划一直处于非活动状态(一定有一段时间),因为我的索引上有大量碎片。我刚刚重建和重组了相关索引,现在一切正常! 【参考方案1】:IN
非常棘手,特别是在通常有大量记录的订单表上。我建议将其更改为 EXISTS 甚至是常规加入。
Here 是一个很好的链接,解释了这 3 个操作数之间的区别
【讨论】:
感谢您提供的信息 - 虽然从技术上讲这不是解决我的问题的方法,但我现在正在阅读,知道它很有用!【参考方案2】:试试这样的
SELECT CopyRight.personid
FROM vw_has_copyright CopyRight
Inner Join orders order on order.orderid = CopyRight.Orderid
WHERE order.eventid = 1234
GROUP BY CopyRight.personid
ORDER BY CopyRight.personid
【讨论】:
【参考方案3】:您应该定期执行索引维护和统计信息更新,以确保查询始终如一地执行。
检查执行计划以查看 SQL Server 是否执行任何意外(表扫描与索引查找)也很重要。
【讨论】:
以上是关于SQl查询的简单问题,的主要内容,如果未能解决你的问题,请参考以下文章