A. sql語句的基本題
兩表關聯查詢方法一:
select
a.id,b.name
from
a_table
a,b_table
b
where
a.id=b.id;
兩表關聯查詢方法二:
select
a.id
from
a_table
a
inner
join
b_table
on
a.id=b.id;
模糊查詢:
假設要查詢NAME列中的王
select
name,sex
from
table
where
name
like
'%王%';
%王%--意思是用%匹配王前後的所有字元,例如
小王李,這樣可以匹配;
select
name,sex
from
table
where
name
like
'_王_';
'_王_'--意思是用_匹配王前後各一個字元;
B. sql語句例題
1:
create table s(s# int primary key,sname varchar(20),age int,sex varchar(2);
2:
insert into s values('20070701','lilin',20,'女')
3:
select c#,cname from c where teacher='張老師';
4:select s#,sname from sc where age>23 and sex='男';
5:
select s# from s where(選修課程 in (select 選修課程 from c where tacher='liu考試'))
C. sql資料庫基礎題,作業求幫助
我有可能做的不對奧:
1)select, where , from
2)列 as 列標題, 列標題 = 列
3)
4)where,having,group By
5)
6)#, Tempdb
第3個和第5個真心不會, 我這幹了兩年.net了, 發現你這題當真惡心啊
出這題的人, 也是很專業的研究學術啊, 考試就應該考實際應用的啊, 弄這個題真心醉了.
D. SQL基礎命令題
三、按要求寫出以下各小題的SQL命令
1、使用UPDATE命令計算機每位學生的總成績。
update xscj set count=fox+sx+english
2、使用SELECT命令查詢所有男生的平均成績。
select xh,count/3 as 平均成績 from xscj where xh in( select xh from xs where xb='男')
3、使用INSERT命令向表XS插入一條記錄,對應欄位的值分別為:「090213」、「張三」、「男」、{^1989-09-01}、「共青團員」、120。
insert into xs values("090213","張三","男",{^1989-09-01},"共青團員",120)
4、使用SELECT命令對表XSCJ的總成績欄位進行升序排序。
select * from xscj order by count asc
5、使用SELECT命令對表XS按性別分組。
select * from xs group by xb
6、使用SELECT命令查詢總成績大於400分的學生的學號、姓名、性別以及總成績,並將查詢結果保存到數據表TEMP中。
select xh,xm,xb,count from xs,xscj where xs.xh=xscj.xh and count>400 into table temp
四、設XS表中已輸入了若干條記錄,請寫出完成如下操作的VFP命令。
1、將表中第3至5條記錄的出生日期(CSRQ)都增加三天
use xs
go 3
replace next 3 csrq with csrq+3
2、給表中最後5條記錄中總學分低於30的記錄加上刪除標記
use xs
go reccount()-4
delete next 5 for zxf<30
3、以學號(XH)為關鍵字為表創建普通索引XH.CDX,並將其設為主控索引
use xs
index on xh tag xh of xh
set order to tag xh
4、用物理刪除姓名為「劉燕」的記錄
use xs
delete for xm='劉燕'
pack
5、給表中第3條記錄後添加一條空白記錄
use xs
go 3
insert blank
6、查看錶中第3至8號記錄的姓名、總學分
use xs
go 3
list next 6 fields xm,zxf
E. SQL的題目,最基礎的~等~~
1. 從職工關系中檢索所有工資值。
答:select 工資 from 職工表
2. 檢索倉庫關系中的所有記錄
答:select * from 倉庫表
3. 檢索工資多於1230元的職工號
答:select 職工號 from 職工表 where 工資>1230
4.檢索哪些倉庫有工資多於1210元的職工。
答:select distinct 倉庫號 from 職工表 where 工資>1210
5. 給出在倉庫「wh1」或「wh2」工作,並且工資少於1250元的職工號。
答:select 職工號 from 職工表 where 工資<1250 ;
and (倉庫號="wh1" or 倉庫號="wh2")
注意:邏輯運算符的優先順序從高到低依次為not、and、or。運算符的優先順序:括弧 算術運算 關系運算 邏輯運算.
說明:前面的幾個例子在from之後只指定了一張表,也就是說這些檢索只基於一張表。如果有where子句,系統首先根據指定的條件依次檢驗關系中的每條記錄,然後選出滿足條件的記錄(相當於關系的選擇操作),並顯示select子句中指定屬性的值(相當於關系的投影操作)。
6. 找出工資多於1230元的職工號和他們所在的城市。
答:select 職工表.職工號, 倉庫表.城市 from 職工表,倉庫表 ;
where 職工表.倉庫號=倉庫表.倉庫號 and 工資>1230
7. 找出工作在面積大於400的倉庫的職工號以及這些職工工作所在的城市。
答:select 職工表.職工號, 倉庫表.城市, 倉庫表.面積 ;
from 職工表,倉庫表 where 職工表.倉庫號=倉庫表.倉庫號 ;
and 倉庫表.面積>400
說明:以上兩題為簡單的聯接查詢.
8. 哪些城市至少有一個倉庫的職工工資為1250元
答:
方法一:
Select 倉庫表.城市 from 職工表,倉庫表 where 職工表.倉庫號=倉庫表.倉庫號 and 職工表.工資=1250
方法二:
select 倉庫號 from 職工表 where 工資=1250 into dbf abc.dbf
select 倉庫表.城市 from 倉庫表,abc where 倉庫表.倉庫號=abc.倉庫號
方法三:
select 城市 from 倉庫表 where 倉庫號 in (select 倉庫號 from 職工表 where 工資=1250)
說明: 這屬於嵌套查詢. 這類查詢所要求的結果出自一個關系,但相關的條件卻涉及多個關系.
可以看到,方法三的命令中含有兩個select-from-where查詢塊,即內層查詢塊和外層查詢塊,內層查詢塊檢索到的倉庫值是wh1和wh2,這樣就可以寫出等價命令:
select 城市 from 倉庫表 where 倉庫號 in ("wh1","wh2")
或者
select 城市 from 倉庫表 where 倉庫號="wh1" or 倉庫號="wh2"
9. 查詢所有職工的工資都多於1210元的倉庫的信息。
答:
方法一:
select 倉庫號,min(工資) as 工資 from 職工表 group by 倉庫號 into dbf 倉庫min工資.dbf
select 倉庫表.* from 倉庫表,倉庫min工資 where 倉庫表.倉庫號=倉庫min工資.倉庫號 and 倉庫min工資.工資>1210
方法二:
select * from 倉庫表 where 倉庫表.倉庫號 not in (select 倉庫號 from 職工表 where 工資<=1210 ) and 倉庫表.倉庫號 in (select 倉庫號 from 職工表)
(錯誤方法)
select * from 倉庫表 where 倉庫表.倉庫號 not in (select 倉庫號 from 職工表 where 工資<=1210 )
注意:上述檢索結果錯誤,會將沒有職工的倉庫檢索出來.如果要求排除那些還沒有職工的倉庫,檢索要求可以敘述為:檢索所有職工的工資都大於1210元的倉庫的信息,並且該倉庫至少要有一名職工.
(錯誤方法)
select * from 倉庫表 where 倉庫表.倉庫號 in (select 倉庫號 from 職工表 where 工資>1210 )
注意:上述查詢結果錯誤。它會查出倉庫號為wh1的信息,但wh1的職工工資並不都大於1210。
10. 找出和職工e4掙同樣工資的所有職工。
答: Select 職工號 from 職工表 where 工資 in (select 工資 from 職工表 where 職工號="e4")
說明:7、9、10題都是基於多個關系的查詢,這類查詢所要求的結果出自一個關系,但相關的條件卻涉及多個關系.我們稱之為嵌套查詢。嵌套查詢優選含有兩個select-from-where查詢塊的查詢結構。
11. 檢索出工資在1220元到1240元范圍內的職工信息。
答:select * from 職工表 where 工資 between 1220 and 1240
說明: "工資 between 1220 and 1240"等價於"工資>=1220 and 工資<=1240"
如果要求查詢工資不在1220元到1240元范圍內的職工信息
說明: select * from 職工表 where 工資 not between 1220 and 1240
12. 從供應商關系中檢索出全部公司的信息,不要工廠或其他供應商的信息。
Select * from 供應商表 where "公司" $ 供應商名
13. 找出不在北京的全部供應商信息。
Select * from 供應商表 where 地址!="北京"
或者
Select * from 供應商表 where not(地址="北京")
14. 按職工的工資值升序檢索出全部職工信息。
答:select * from 職工表 order by 工資
如果需要將結果按降序排列,只要加上desc
select * from 職工表 order by 工資 desc
說明:使用SQL SELECT可以將查詢結果排序,排序的短語是order by ,具體格式如下:
order by order_item [ASC|DESC] [,order_item [ASC|DESC]……]
15. 先按倉庫號排序,再按工資排序並輸出全部職工信息。
答:Select * from 職工表 order by 倉庫號,工資
16. 找出供應商所在地的數目。
答:select count(distinct 地址) from 供應商表
注意:除非對表中的記錄數進行計數,一般count函數應該使用distinct
比如: select count(*) from 供應商表
查詢結果是供應商表中的記錄數.
說明:可用於計算檢索的函數有:count——計數 sum——求和
avg——計算平均值 max——求最大值 min——求最小值
17. 求支付的工資總數
答:select sum(工資) from 職工表
18. 求北京和上海的倉庫職工的工資總和
答: select sum(工資) from 職工表,倉庫表 where 職工表.倉庫號=倉庫表.倉庫號 and (城市="北京" or 城市="上海")
方法二:
select sum(工資) from 職工表 where 倉庫號 in (select 倉庫號 from 倉庫表 where 城市="北京" or 城市="上海")
19. 求所有職工的工資都多於1210元的倉庫的平均面積
答:Select avg(面積) from 倉庫表 where 倉庫號 not in(select 倉庫號 from 職工表 where 工資<=1210) and 倉庫號 in(select 倉庫號 from 職工表)
20. 求在wh2倉庫工作的職工的最高工資值
答:select max(工資) from 職工表 where 倉庫號="wh2"
21. 求每個倉庫的職工的平均工資
答:select 倉庫號,avg(工資) from 職工表 group by 倉庫號
說明:可以利用group by 子句進行分組計算查詢.group by短語的格式如下:group by groupcolumn[,groupcolumn……][having filtercondition]
可以按一列或多列分組,還可以用having 進一步限定分組的條件.
注意:where /group by等子句都不能放在from子句之前.
22. 求至少有兩個職工的每個倉庫的平均工資。
答: select 倉庫號,count(*),avg(工資) from 職工表 group by 倉庫號 having count(*)>=2
說明:having子句總是跟在group by 子句之後,不可以單獨使用.having子句用於限定分組.
23. 找出尚未確定供應商的訂購單
答:select * from 訂購單表 where 供應商號 is null
24. 列出已經確定了供應商的訂購單信息
答:select * from 訂購單表 where 供應商號 is not null
F. SQL簡單習題兩道
1:select "書名","定價" from "圖書館"
where "定價" = (select top 1 "定價" from "圖書館" desc as '定價')
//就是要查出定價最高的價格,可以對定價排序,取到,這個你可以自己實踐下,我忘了命令了,本機上沒裝SQL
2:就是要你查出 藏有 發行「書名=『資料庫系統基礎』」的圖書館館名
3:select CNAME,TEACHER from c where C# =
(select C# from SC where S# = '10001')
G. 資料庫sql題目
答案為B
其實從語法就可以排除的:where字句中不能出現聚合函數所以AD排除;出現group by字句,則select字句中查詢的列要麼分組要麼聚合,C選項中姓名列既沒分組也沒在聚合函數中。
下面說說思路:
想要查詢只選修1門課的學生,可以先查出每個學生選了多少門課(按學生分組group by),然後挑選出選課數為1的(對分組後得到的結果進行篩選,having)
如果還有問題請追問。
H. 零基礎SQL自學,題目解析
x.continent=y.continent
上面是同州份
x.NAME<>y.NAME
一個國家是其他國家的三倍以上,那麼必須不能是同一個國家,上面的條件就是不是同一個國家
I. 急求SQL資料庫練習題
樓上的--理論很多不太使用:ㄨinsert -增加語句用法 insert into(Name,Sec)values("張三","李四") --這個語句1.習題:插入學員信息 Name,Sex,Age,Address (地址可為null) 要有自動標識列。 2.實現一次插入多行。3.把原有表中的某個欄位 移到新表中 提示:select <欄位> into newtable from <原表> ㄨdelecte --刪除語句delecte from <表> [where<條件>]例題:上表中 --刪除 年齡是66和地址為null 信息 (年齡與地址自己添加) ㄨupdate--更新語句update set <條件> where[限制條件]例題:把年齡大於50歲的 更新為49歲 其餘條件自己加 ㄨselect --查詢語句select <欄位1>,<欄位2> from <表> where [條件]例題:從表1、表2中查找相同欄位並且 把相同欄位存放到新的表中這里子查詢就不多說了。這些題很基礎你試一試。