Sql學(xué)習(xí)第一天——SQL 練習(xí)題(建表/sql語句)_Mssql數(shù)據(jù)庫(kù)教程
推薦:Sql學(xué)習(xí)第三天——SQL 關(guān)于with ties介紹with ties一般是和Top , order by相結(jié)合使用的,會(huì)查詢出最后一條數(shù)據(jù)額外的返回值,接下來將為大家詳細(xì)介紹下,感興趣的各位可以參考下哈
題目:來自Madrid且訂單數(shù)少于3的消費(fèi)者
建表:
復(fù)制代碼 代碼如下:www.zhaotila.cn
set nocount on --當(dāng) SET NOCOUNT 為 ON 時(shí),不返回計(jì)數(shù)(表示受 Transact-SQL 語句影響的行數(shù))。當(dāng) SET NOCOUNT 為 OFF 時(shí),返回計(jì)數(shù)
use SY
GO
if object_Id('dbo.Orders') is not null
drop table dbo.Orders
GO
if object_Id('dbo.Customers') is not null
drop table dbo.Customers
GO
create table dbo.Customers
(
customerid char(5) not null primary key ,
city varchar(10) not null
);
insert into dbo.Customers values('FISSA','Madrid');
insert into dbo.Customers values('FRNDO','Madrid');
insert into dbo.Customers values('KRLOS','Madrid');
insert into dbo.Customers values('MRPHS','Zion');
create table dbo.Orders
(
orderid int not null primary key ,
customerid char(5) null references customers(customerid)
)
insert into dbo.Orders values(1,'FRNDO');
insert into dbo.Orders values(2,'FRNDO');
insert into dbo.Orders values(3,'KRLOS');
insert into dbo.Orders values(4,'KRLOS');
insert into dbo.Orders values(5,'KRLOS');
insert into dbo.Orders values(6,'MRPHS');
insert into dbo.Orders values(7,null);
------------------------------------------------------------------------------------------------------------------------------
做題分析:
復(fù)制代碼 代碼如下:www.zhaotila.cn
select customerid as 消費(fèi)者,count(customerid) as 訂單數(shù)
from dbo.Orders
where customerid in (
select customerid
from dbo.Customers
where city = 'Madrid')
group by customerid
having count(customerid) < 3
結(jié)果如圖所示:

--第一次想到的答案,突然發(fā)現(xiàn)少了一個(gè)來自Madrid的FISSA訂單,FISSA訂單數(shù)量為0,所以在Orders表中沒有出現(xiàn),所以上面的寫法會(huì)少一個(gè).
--推翻了上面的答案,又想到了用表的連接,而用內(nèi)連接出現(xiàn)的情況會(huì)和上面的一樣,所以我選擇了左連接,如下:
復(fù)制代碼 代碼如下:www.zhaotila.cn
select C.customerid as 消費(fèi)者,count(O.customerid) as 訂單數(shù)
from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
where C.city= 'Madrid'
group by C.customerid
having count(C.customerid) < 3
結(jié)果如圖所示:

--查詢發(fā)現(xiàn)是正確的。
--分析查看不帶條件的左連接
復(fù)制代碼 代碼如下:www.zhaotila.cn
select * from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
復(fù)制代碼 代碼如下:www.zhaotila.cn
select * from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
結(jié)果如圖所示:

--書中給的標(biāo)準(zhǔn)答案是:
復(fù)制代碼 代碼如下:www.zhaotila.cn
select C.customerid , count(O.orderid) as numorders
from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
where C.city= 'Madrid'
group by C.customerid
having count(O.orderid) < 3
order by numorders
結(jié)果如圖所示:

--書中給的只是多了一個(gè)order by 進(jìn)行定義了排序方式(以numorders這一列的升序進(jìn)行排序)
分享:Sql學(xué)習(xí)第二天——SQL DML與CTE概述關(guān)于DML即數(shù)據(jù)操縱語言;關(guān)于CTE即公用表表達(dá)式,接下來為大家介紹下CTE使用的地方以及優(yōu)點(diǎn)同時(shí)提供一個(gè)簡(jiǎn)單的CTE例題,感興趣的各位可以參考下哈
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫(kù),提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 如何把Access的數(shù)據(jù)導(dǎo)入到Mysql中
- 揭秘常用經(jīng)典SQL語句
- 觸發(fā)器學(xué)習(xí)
- Sql2005如何用dtexec運(yùn)行ssis(DTS)包
- 分享:在存儲(chǔ)過程中使用另一個(gè)存儲(chǔ)過程返回的查詢結(jié)果集的方法
- SQL Server 2008數(shù)據(jù)挖掘查詢?nèi)蝿?wù)
- 詳解優(yōu)化SQL Server數(shù)據(jù)庫(kù)的方法
- 解讀經(jīng)典SQL語句大全
- 查詢分析器單步調(diào)試出錯(cuò)的原因
- 讓SQL Server數(shù)據(jù)庫(kù)自動(dòng)執(zhí)行管理任務(wù)(二)
猜你也喜歡看這些
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫(kù)教程-Sql學(xué)習(xí)第一天——SQL 練習(xí)題(建表/sql語句)
。