第一篇:sql查詢練習(xí)題含答案
--(1)查詢20號(hào)部門(mén)的所有員工信息。select * from emp e where e.deptno=20;
--(2)查詢獎(jiǎng)金(COMM)高于工資(SAL)的員工信息。select * from emp where comm>sal;--(3)查詢獎(jiǎng)金高于工資的20%的員工信息。select * from emp where comm>sal*0.2;--(4)查詢10號(hào)部門(mén)中工種為MANAGER和20號(hào)部門(mén)中工種為CLERK的員工的信息。select * from emp e
where(e.deptno=10 and e.job='MANAGER')or(e.deptno=20 and e.job='CLERK')--(5)查詢所有工種不是MANAGER和CLERK,--且工資大于或等于2000的員工的詳細(xì)信息。select * from emp
where job not in('MANAGER','CLERK')and sal>=2000;
--(6)查詢有獎(jiǎng)金的員工的不同工種。select * from emp where comm is not null;--(7)查詢所有員工工資和獎(jiǎng)金的和。select(e.sal+nvl(e.comm,0))from emp e;--(8)查詢沒(méi)有獎(jiǎng)金或獎(jiǎng)金低于100的員工信息。select * from emp where comm is null or comm<100;--(9)查詢員工工齡大于或等于10年的員工信息。
select * from emp where(sysdate-hiredate)/365>=10;
--(10)查詢員工信息,要求以首字母大寫(xiě)的方式顯示所有員工的姓名。select initcap(ename)from emp;select upper(substr(ename,1,1))||lower(substr(ename,2))from emp;
--(11)顯示所有員工的姓名、入職的年份和月份,按入職日期所在的月份排序,--若月份相同則按入職的年份排序。
select ename,to_char(hiredate,'yyyy')year,to_char(hiredate,'MM')month from emp order by month,year;--(12)查詢?cè)?月份入職的所有員工信息。select * from emp where to_char(hiredate,'MM')='02'--(13)查詢所有員工入職以來(lái)的工作期限,用“**年**月**日”的形式表示。
select e.ename,floor((sysdate-e.hiredate)/365)||'年' ||floor(mod((sysdate-e.hiredate),365)/30)||'月' ||floor(mod(mod((sysdate-e.hiredate),365),30))||'日' from emp e;--(14)查詢從事同一種工作但不屬于同一部門(mén)的員工信息。select a.ename,a.job,a.deptno,b.ename,b.job,b.deptno from emp a,emp b where a.job=b.job and a.deptno<>b.deptno;
--(15)查詢各個(gè)部門(mén)的詳細(xì)信息以及部門(mén)人數(shù)、部門(mén)平均工資。select d.deptno,count(e.empno),avg(e.sal),d.dname,d.loc from emp e ,dept d where e.deptno=d.deptno group by d.deptno,d.dname,d.loc
--(16)查詢10號(hào)部門(mén)員工以及領(lǐng)導(dǎo)的信息。select * from emp where empno in(select mgr from emp where deptno=10)or deptno=10;
--(17)查詢工資為某個(gè)部門(mén)平均工資的員工信息。select * from emp where sal in(select avg(sal)from emp group by deptno);
--(18)查詢工資高于本部門(mén)平均工資的員工的信息。select * from emp e1
where sal >(select avg(sal)from emp e2 where e2.deptno=e1.deptno);
--(19)查詢工資高于本部門(mén)平均工資的員工的信息及其部門(mén)的平均工資。select e.*,a.avgsal from emp e,(select deptno,avg(sal)as avgsal from emp group by deptno)a where a.deptno=e.deptno and e.sal>a.avgsal;
--(20)統(tǒng)計(jì)各個(gè)工種的人數(shù)與平均工資。
select count(*),e.job,avg(e.sal)from emp e group by e.job
--(21)統(tǒng)計(jì)每個(gè)部門(mén)中各個(gè)工種的人數(shù)與平均工資。select deptno,job,count(empno),avg(sal)from emp e group by e.deptno,e.job--(22)查詢所有員工工資都大于1000的部門(mén)的信息。select * from dept where deptno in(select deptno from emp where deptno not in
(select distinct deptno from emp where sal<1000));
--(23)查詢所有員工工資都大于1000的部門(mén)的信息及其員工信息。select * from emp e join dept d on d.deptno in(select deptno from emp where deptno not in
(select distinct deptno from emp where sal<1000))and d.deptno=e.deptno;
--(24)查詢所有員工工資都在900~3000之間的部門(mén)的信息。select * from dept where deptno not in(select deptno from emp
where sal not between 900 and 3000);--(25)查詢所有工資都在900~3000之間的員工所在部門(mén)的員工信息。select * from emp a where a.deptno in(select distinct e.deptno from emp e where e.sal between 900 and 3000);
--(26)查詢每個(gè)員工的領(lǐng)導(dǎo)所在部門(mén)的信息。select d.* from dept d where d.deptno in(select distinct e2.deptno from emp e1,emp e2 where e1.empno=e2.mgr);--(27)查詢?nèi)藬?shù)最多的部門(mén)信息。select * from dept where deptno in(select deptno from(select count(*)count,deptno from emp group by deptno)where count in(select max(count)
from(select count(*)count ,deptno from emp group by deptno)));
--(28)查詢30號(hào)部門(mén)中工資排序前3名的員工信息。
select * from
(select sal from emp where deptno=30 order by sal desc)e where rownum<4
--(29)查詢'JONES'員工及所有其直接、間接下屬員工的信息。select e.* from emp e start with ename='JONES' connect by prior empno=mgr;
---(30)查詢SCOTT員工及其直接、間接上級(jí)員工的信息。select e.* from emp e start with ename='SCOTT' connect by prior mgr=empno;
--(31)以樹(shù)狀結(jié)構(gòu)查詢所有員工與領(lǐng)導(dǎo)之間的層次關(guān)系。select substr(sys_connect_by_path(ename,'->'),3),level from emp start with mgr is null connect by prior empno=mgr;
--(32)向emp表中插入一條記錄,員工號(hào)為1357,員工名字為oracle,--工資為2050元,部門(mén)號(hào)為20,入職日期為2002年5月10日。
--(33)將各部門(mén)員工的工資修改為該員工所在部門(mén)平均工資加1000。update emp e set sal= 1000+(select avg(sal)from emp where deptno=e.deptno);
--(34)查詢工作等級(jí)為2級(jí),1985年以后入職的工作地點(diǎn)為DALLAS的員工編號(hào)、--姓名和工資。
select e.ename,e.empno,e.sal from emp e,salgrade s,dept d where(e.sal between s.losal and s.hisal)and(s.grade=2)
and to_char(e.hiredate,'yyyy')>1985 and e.deptno=d.deptno and d.loc='DALLAS';
--35.部門(mén)平均薪水最高的部門(mén)編號(hào)
select * from(select avg(sal)avgsal,deptno
from emp group by deptno order by avgsal desc)
where rownum=1;
select deptno,avg(sal)from emp group by deptno having avg(sal)=(select max(avg(sal))avgsal
from emp group by deptno)
--36,部門(mén)平均薪水最高的部門(mén)名稱(chēng)
select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select max(avg(sal))avgsal
from emp group by deptno))
--37.平均薪水最低的部門(mén)的部門(mén)名稱(chēng)
select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select min(avg(sal))avgsal
from emp group by deptno))
--38.平均薪水等級(jí)最低的部門(mén)的部門(mén)名稱(chēng) select d.dname from dept d where d.deptno in(select a.deptno from
(select e.deptno from emp e,salgrade s where(e.sal between s.losal and s.hisal)group by e.deptno order by avg(s.grade))a where rownum=1);
--39.部門(mén)經(jīng)理人中,薪水最低的部門(mén)名稱(chēng) select dname from dept where deptno=(select deptno from
(select deptno from emp where job='MANAGER' group by deptno order by min(sal))where rownum=1)
--40.比普通員工的最高薪水還要高的經(jīng)理人名稱(chēng) select ename from emp where sal>(select max(sal)from emp where job not in('MANAGER','PRESIDENT'))and job='MANAGER' or job='PRESIDENT'
--41.刪除重復(fù)部門(mén),但是留下一項(xiàng)
insert into dept values(70,'RESEARCH','DALLAS')select deptno,dname,rowid from dept
delete from dept d where rowid<>(select min(rowid)from dept where dname=d.dname and d.loc=loc)
--42.更新員工工資為他的主管的工資,獎(jiǎng)金
update emp e set sal=(select sal from emp where empno=e.mgr), comm=(select comm from emp where empno=e.mgr)
update emp e set(sal,comm)=(select sal,comm from emp where empno=e.mgr)rollback;select * from emp;
第二篇:SQL查詢語(yǔ)句
SQL查詢語(yǔ)句
第一次:查詢(顯示)、條件、排序、空記錄
第二次:通配符、生成表、文件(記事本)、數(shù)組、臨時(shí)表,數(shù)學(xué)函數(shù)、分組、嵌套查詢
第三次:插入記錄、刪除記錄、更新記錄 第四次:超連接、新建(打開(kāi))數(shù)據(jù)庫(kù)、表的建立、表的刪除、第五次 表結(jié)構(gòu)的修改,添加記錄 顯示同張芳同一天出生的學(xué)生的信息 格式:
1、查詢(顯示)記錄
顯示所有男學(xué)生的學(xué)號(hào),姓名,性別 區(qū)分:字段、條件、表名
Select 字段名列表(*)from 表名; where 條件表達(dá)式;
into table(dbf)文件名;
into cursor 臨時(shí)表名;
into array 數(shù)組名;
to file 文件名;
order by 字段名列表(asc desc);
group by 字段名 having 條件;
顯示所有大于平均分的學(xué)生的學(xué)號(hào)、姓名 顯示同E4掙同樣工資的職工信息
Select * from 職工 where 工資=(select 工資 from 職工 where 職工號(hào)=”E4”)職工(倉(cāng)庫(kù)號(hào)C(10),職工號(hào) C(10),工資 N(10,2))
顯示所有工資大于1500的員工的倉(cāng)庫(kù)號(hào)、職工號(hào)及所在的城市
2、插入記錄
Insert into 表名(字段名列表)values(記錄值)
3、刪除記錄
Delete from 表名 where 條件
4、更新記錄
Update 表名 set 字段名=記錄值; Where 條件
5、表的刪除
drop table 表名
6、表的建立
create table 表名(字段名 數(shù)據(jù)類(lèi)型(寬度))
7、表結(jié)構(gòu)的修改select * from 職工where 職工號(hào)!=“E4” AND 工資=(select 工資 from 職工 where 職工號(hào)=“E4”)
alter table 表名
1)增加字段
alter table student add 身份證號(hào) c(10)
2)刪除字段
alter table student drop colum 身份證號(hào)
3)修改字段名
alter table student rename colum 出生日期 to 出生年月
4)增加字段有效性規(guī)則
alter table student alter 成績(jī) set check 成績(jī)>=0 and 成績(jī)<=100;
error “成績(jī)輸入錯(cuò)誤,成績(jī)應(yīng)該在0-100之間”
5)刪除字段有效性規(guī)則
alter table student alter 成績(jī) drop check 注意:
以上題目中用到的 SQL語(yǔ)句粘貼到計(jì)事本文件XY.TXT中(每行一條語(yǔ)句)。對(duì)兩個(gè)表操作的方法:
1)同時(shí)打開(kāi)兩個(gè)表
select 倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),城市,職工號(hào),工資 from 倉(cāng)庫(kù),職工;
where 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and 工資=1250
2)超連接(內(nèi)連接、左連接、右連接、全連
接)
內(nèi)連接:只顯示符合條件的記錄
左連接:顯示符合條件的記錄及第一個(gè)表中不符合條件的記錄
右連接:顯示符合條件的記錄及第二個(gè)表中不符合條件的記錄
全連接:顯示符合條件的記錄及第一、二個(gè)表中不符合條件的記錄
成績(jī)表(score)
學(xué)號(hào)姓名課程名成績(jī) 2001張三計(jì)算機(jī)10 2003張四英語(yǔ)20 2001張三語(yǔ)言30 2005張三數(shù)據(jù)40 2003張四計(jì)算機(jī)50
Select sum(成績(jī))from score group by 學(xué)號(hào)
Select sum(成績(jī))from score group by 課程名
select 字段名列表(*)from 表名;where 條件;
order by 字段名列表 asc|desc;
into table(dbf)表名;
into array 數(shù)組名;
to file 文件名;
into cursor 臨時(shí)表名
題目練習(xí)
實(shí)現(xiàn)以下功能:在考生文件夾下,打開(kāi)“陶的數(shù)據(jù)庫(kù)”的數(shù)據(jù)庫(kù),并利用SQL語(yǔ)句在該數(shù)據(jù)庫(kù)中新建一個(gè)表:gongzi(職工號(hào) c(4),實(shí)發(fā)工資 n(7,0)),將zhigong表中基本工資大于1330(含1330)的記錄存儲(chǔ)在gongzi表中,其中實(shí)發(fā)工資為:基本工資+加班費(fèi)(白天20,晚上30),最后將所有的SQL語(yǔ)句保存到考生目錄下的sqlanswer.txt文件中(自行建立,一行一條語(yǔ)句)
open database 陶的數(shù)據(jù)庫(kù)
create table gongzi(職工號(hào) c(4),基本工資 n(7,2))
select 職工號(hào),基本工資+白班*20+晚班*30 from zhigong;where 基本工資>1350 into array xy
insert into gongzi from array xy
第三篇:Sql語(yǔ)句查詢
sql語(yǔ)句多表連接查詢
在程序開(kāi)發(fā)過(guò)程中,不僅可以對(duì)單一數(shù)據(jù)表進(jìn)行查詢,還可以進(jìn)行多表查詢,用戶通過(guò)多表查詢從多個(gè)表中提取出需要的數(shù)據(jù)。
多表查詢可以分為內(nèi)連接查詢、外連接查詢以及聯(lián)合查詢。
1.內(nèi)連接查詢
連接查詢是指通過(guò)各個(gè)表之間共同列的關(guān)聯(lián)性查詢數(shù)據(jù)。連接查詢分為內(nèi)連接查詢和外連接查詢。內(nèi)連接是將兩個(gè)相互交叉的數(shù)據(jù)集合中重疊部分的數(shù)據(jù)行連接起來(lái),返回表示兩個(gè)數(shù)據(jù)集合之間匹配連接關(guān)系的數(shù)據(jù)行。
可以在FORM子句中使用INNER JOIN?ON?建立內(nèi)連接,也可以在WHERE子句中指定連接條件建立內(nèi)連接,例如:
select a.UserName,b.BookName,b.Datetm from UserInfo as a inner join SellSheet as b on a.UserID= b.UserID
也可以用下面的語(yǔ)句實(shí)現(xiàn)。
select a.UserName,b.BookName,b.Datetm from UserInfo as a,SellSheet as b where a.UserID=b.UserID
2.外連接查詢
外連接是對(duì)內(nèi)連接的擴(kuò)充,除了將兩個(gè)數(shù)據(jù)集合中重疊部分以內(nèi)的數(shù)據(jù)行連接起來(lái)之外,還可以根據(jù)要求返回左側(cè)或右側(cè)數(shù)據(jù)集合中非匹配的數(shù)據(jù),即左外連接(LEFT OUTER JOIN)和右外連接(RIGHT OUTER JOIN)。
l左外連接LEFT OUTER JOIN
左外連接LEFT OUTER JOIN邏輯運(yùn)算符除了返回兩個(gè)數(shù)據(jù)表中滿足連接條件的行,它還返回任何在后一個(gè)數(shù)據(jù)表中沒(méi)有匹配行的前一個(gè)數(shù)據(jù)表中的行。非匹配行的部分字段列作為空值返回。
l右外連接RIGHT OUTER JOIN
右外連接RIGHT OUTER JOIN是左外連接的反向連接。它除了返回兩個(gè)數(shù)據(jù)表中滿足連接條件的行,還返回任何在前一個(gè)數(shù)據(jù)表中沒(méi)有匹配行的后一個(gè)數(shù)據(jù)表中的行。非匹配行的部分字段列作為空值返回。
3.使用UNION進(jìn)行聯(lián)合查詢
使用UNION運(yùn)算符可以進(jìn)行聯(lián)合查詢。UNION運(yùn)算符連接多個(gè)SELECT語(yǔ)句,將兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中所有查詢的全部行。使用UNION運(yùn)算符遵循的規(guī)則如下:
(1)在使用UNION運(yùn)算符組合的語(yǔ)句中,所有選擇列表的表達(dá)式數(shù)目必須相同(列名、算術(shù)表達(dá)式、聚集函數(shù)等)。
(2)在使用UNION組合的結(jié)果集中的相應(yīng)列必須具有相同數(shù)據(jù)類(lèi)型,或者兩種數(shù)據(jù)類(lèi)型之間必須存在可能的隱性數(shù)據(jù)轉(zhuǎn)換,或者提供了顯式轉(zhuǎn)換。例如,在datetime數(shù)據(jù)類(lèi)型的列和binary數(shù)據(jù)類(lèi)型的列之間不能使用UNION運(yùn)算符,除非提供了顯式轉(zhuǎn)換,而在money數(shù)據(jù)類(lèi)型的列和int數(shù)據(jù)類(lèi)型的列之間可以使用UNION運(yùn)算符,因?yàn)樗鼈兛梢赃M(jìn)行隱性轉(zhuǎn)換。
(3)結(jié)果集中列的名字或者別名是由第一個(gè)SELECT語(yǔ)句的選擇列表決定的。
注意:對(duì)數(shù)據(jù)表進(jìn)行聯(lián)合查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“和”,而對(duì)數(shù)據(jù)表進(jìn)行連接查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“積”。
第四篇:SQL常用查詢總結(jié)
1)查詢?nèi)w學(xué)生的學(xué)號(hào)、姓名、所在系 select Sno,Sname,Sdept from Student
2)
查詢?nèi)w學(xué)生的詳細(xì)信息
select * from Student
3)
查詢?nèi)w學(xué)生的姓名及其出生日期 select Sname,Sbirthday from Student
4)
查詢軟件工程系全體學(xué)生的名單
select * from Student
where Sdept='軟件工程系'
5)
查詢所有年齡在20歲以下的學(xué)生姓名以及年齡(注:GETDATE()函數(shù)可獲得當(dāng)前的日期,YEAR()函數(shù)可返回日期中的年份)
Select Sname ,(year(getdate())-YEAR(Sbirthday))as age from Student
where(year(getdate())-YEAR(Sbirthday))<20
6)
查詢考試成績(jī)不及格的學(xué)生的學(xué)號(hào) select Sno from Score where Grade<60
7)
查詢出生日期在1990年1月1日~1995年12月31日之間的學(xué)生的姓名、所在系和出生日期
select Sname,Sdept,Sbirthday from Student
where Sbirthday between '1990-1-1 0:00:00' and '1995-12-31 0:00:00'
8)
查詢不在信息系、數(shù)學(xué)系也不在軟件工程系學(xué)生的姓名和性別
select Sname,sex from Student
where Sdept not in('信息系','數(shù)學(xué)系','軟件工程系')
9)
查詢所有姓李且全名為三個(gè)漢字的學(xué)生的姓名、學(xué)號(hào)和性別
10)查詢姓名中第2個(gè)字為“陽(yáng)”字的學(xué)
生的姓名和學(xué)號(hào)
select Sname,Sno
from Student
where Sname like '%陽(yáng)%'
11)查詢軟件工程系年齡在20歲以下的學(xué)生姓名
Select Sname ,(year(getdate())-YEAR(Sbirthday))as age from Student
where(year(getdate())-YEAR(Sbirthday))<20 and Sdept='軟件工程系'
12)查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)
及其成績(jī),查詢結(jié)果按分?jǐn)?shù)的降序排列
select Sno,Grade from Score where Cno=3 order by Grade desc
13)查詢?nèi)w學(xué)生情況,結(jié)果按所在系的升序排列,同一系的按年齡降序排列
select * from Student
order by Sdept asc,Sbirthday desc
14)統(tǒng)計(jì)學(xué)生總?cè)藬?shù)
select Sno from Student compute count(Sno)
15)查詢選修了課程的學(xué)生人數(shù)
select distinct Student.Sno,Score.Sno from Student,Score
where Student.Sno=Score.Sno compute count(Student.Sno)
16)計(jì)算1號(hào)課程的學(xué)生平均成績(jī)
select Grade from Score where Cno=1 compute avg(Grade)
17)查詢選修了1號(hào)課程的學(xué)生最高分
數(shù)
select * from Score where Cno=1 compute max(Grade)
18)求各課程號(hào)及相應(yīng)的選課人數(shù)
select Sno,Cno from Score order by Cno
compute count(Sno)by Cno
19)查詢選修了3門(mén)以上課程的學(xué)生學(xué)
號(hào)
20)查詢選修2號(hào)課程且成績(jī)?cè)?0分以
上的所有學(xué)生的學(xué)號(hào)、姓名
select Student.Sno,Student.Sname from Student,Score
where Student.Sno=Score.Sno and Score.Cno=2 and Score.Grade>90
21)查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程名和成績(jī)
select Student.Sno,Student.Sname, Course.Cname,Score.Grade from Course,Score,Student where
Student.Sno=Score.Sno
and
Score.Cno=Course.Cno
22)查詢所有選修了1號(hào)課程的學(xué)生姓
名
select distinct Student.Sno,Score.Sno,Student.Sname from Student,Score
where Student.Sno=Score.Sno and Score.Cno=1
23)查詢選修了課程名為“數(shù)據(jù)庫(kù)”的學(xué)
生的學(xué)號(hào)和姓名
select distinct Student.Sno,Student.Sname from Student,Course,Score
where Student.Sno=Score.Sno and Course.Cname='數(shù)據(jù)庫(kù)'
第五篇:SQL查詢語(yǔ)言
《SQL查詢語(yǔ)言》教學(xué)設(shè)計(jì)
一、教學(xué)目標(biāo)分析
認(rèn)知目標(biāo)
學(xué)習(xí)SQL查詢語(yǔ)言的使用方法。
掌握SQL語(yǔ)言當(dāng)中的SELECT語(yǔ)句
能力目標(biāo)
培養(yǎng)學(xué)生應(yīng)用查詢語(yǔ)句查詢數(shù)據(jù)的應(yīng)用能力
情感目標(biāo)
體驗(yàn)SQL語(yǔ)言查詢方法
主動(dòng)將數(shù)據(jù)庫(kù)管理信息的思想、方法創(chuàng)造性地應(yīng)用到生活、學(xué)習(xí)之中。
二、教學(xué)內(nèi)容分析
課前需要為學(xué)生準(zhǔn)備名為SCHOOL數(shù)據(jù)庫(kù)文件,里面放著名為CLASS的表,供學(xué)生練習(xí)使用。提供這個(gè)數(shù)據(jù)庫(kù)文件可以避免學(xué)生在建立表以及表中錄入記錄上花費(fèi)太多的時(shí)間,而把重點(diǎn)放在對(duì)本節(jié)內(nèi)容的學(xué)習(xí)上,可以讓教師更好地進(jìn)行目標(biāo)調(diào)控,做到有的放矢。這個(gè)數(shù)據(jù)庫(kù)文件放置于網(wǎng)絡(luò)共享文件夾中,并將其快捷方式置于學(xué)生機(jī)的桌面上。教學(xué)重點(diǎn):
1、使用“在設(shè)計(jì)視圖中創(chuàng)建查詢”。
2、SQL查詢語(yǔ)言的格式。
教學(xué)難點(diǎn):
運(yùn)行、調(diào)試SQL命令。
解決措施:
通過(guò)老師講解、演示及設(shè)置的任務(wù),讓學(xué)生在學(xué)習(xí)的過(guò)程中,自己動(dòng)手,以不斷解決問(wèn)題為手段,有機(jī)結(jié)合各種知識(shí),以任務(wù)驅(qū)動(dòng)的方式發(fā)展能力,一步步完成學(xué)習(xí)任務(wù)。
三、學(xué)生學(xué)習(xí)狀態(tài)分析
本課的教學(xué)對(duì)象是大二的學(xué)生,由于學(xué)生的理論知識(shí)薄弱,加上數(shù)據(jù)庫(kù)比較抽象,比較難理解的特點(diǎn),從而造成學(xué)生對(duì)數(shù)據(jù)庫(kù)的認(rèn)識(shí)還很模糊。學(xué)生在本節(jié)課之前,已經(jīng)掌握數(shù)據(jù)庫(kù)和表的創(chuàng)建、打開(kāi)及表中輸入、修改記錄的方法,初步掌握SQL的一些基本操作,在此基礎(chǔ)上,如何學(xué)會(huì)在數(shù)據(jù)庫(kù)眾多表中查詢記錄變得至關(guān)重要了,所以為了學(xué)生更好地掌握這一點(diǎn)知識(shí)點(diǎn),應(yīng)廣泛調(diào)動(dòng)他們的學(xué)習(xí)興趣,增強(qiáng)學(xué)習(xí)的主動(dòng)性。
四、教學(xué)策略
職業(yè)技術(shù)學(xué)院課程本身的特點(diǎn)、知識(shí)及技能的傳授應(yīng)以典型“任務(wù)”為主,創(chuàng)造學(xué)生自主探究學(xué)習(xí)的平臺(tái),學(xué)生在教師的指導(dǎo)下帶著任務(wù)通過(guò)實(shí)際操作、探究學(xué)習(xí)等方式,逐步完成任務(wù)。
五、教學(xué)過(guò)程
合理安排教學(xué)過(guò)程是教學(xué)成功的關(guān)鍵。因此,我把教學(xué)過(guò)程分為“情境感知,揭示課題——任務(wù)驅(qū)動(dòng),講授新知——課堂小結(jié),鞏固新知”三部分。
(一)情境感知,揭示課題
為了讓同學(xué)們對(duì)自己班級(jí)同學(xué)的情況有所了解,我們?nèi)绾魏?jiǎn)便地查詢呢?我們可以通過(guò)輸入一些命令解決問(wèn)題。這些命令就是我們這節(jié)課所要學(xué)習(xí)的SQL查詢語(yǔ)言。設(shè)計(jì)思路:
SQL所包含的數(shù)據(jù)具有一定的規(guī)模,并且能快速地從眾多表中查詢到某個(gè)同學(xué)的情況,讓學(xué)生體會(huì)到數(shù)據(jù)庫(kù)在現(xiàn)實(shí)生活中的應(yīng)用。
(二)任務(wù)驅(qū)動(dòng),講授新知
1. 如何在SQL中使用查詢命令?
任務(wù)一:
在SCHOOL數(shù)據(jù)庫(kù)的CLASS表中查詢所有的記錄
Select * from class
1)步驟:略
2)分析剛才寫(xiě)的查詢命令:
SELECT:表示這是一個(gè)查詢語(yǔ)句
*:表示顯示出符合條件記錄的所有字段內(nèi)容,如果在這輸入的是一些逗號(hào)分隔的字段名,則查詢結(jié)果只顯示響應(yīng)字段的內(nèi)容。
FROM:表示從哪個(gè)表里查詢。
3)寫(xiě)SQL命令時(shí)應(yīng)注意的事項(xiàng):
命令必須是英文的半角字母
字符型數(shù)據(jù)要用英文的單引號(hào)包含起來(lái)。
設(shè)計(jì)思路:
這既是課堂重點(diǎn)也是難點(diǎn),通過(guò)兩個(gè)層次推進(jìn)的設(shè)疑,教師適當(dāng)?shù)乩斫狻⒀菔荆箤W(xué)生對(duì)SQL查詢語(yǔ)言已消除了陌生感,并有了一定的理解。
2. 嘗試練習(xí)
任務(wù)二:
查詢表中頭三條記錄
通過(guò)本例講解讓學(xué)生掌握TOP關(guān)鍵字的用法
任務(wù)三:
查詢姓名和年齡兩列數(shù)據(jù)
通過(guò)本例講解讓學(xué)生掌握部分字段內(nèi)容的查詢
任務(wù)四:
查詢年齡大于等于17而小于等于19的數(shù)據(jù)
通過(guò)本例講解,讓學(xué)生掌握比較運(yùn)算符和邏輯運(yùn)算符的應(yīng)用,以及另一種方法BETWEEN…AND…關(guān)鍵字的用法
任務(wù)五:
查詢健康狀況為良好的所有數(shù)據(jù)
通過(guò)本例講解,讓學(xué)生掌握WHERE關(guān)鍵字的用法
任務(wù)六:
查詢姓李的學(xué)生所有數(shù)據(jù)
通過(guò)本例講解,讓學(xué)生掌握LIKE關(guān)鍵字的用法
任務(wù)七:
查詢健康狀況為良好或一般的數(shù)據(jù)
通過(guò)本例講解,讓學(xué)生掌握IN關(guān)鍵字的用法
任務(wù)八:
查詢中文成績(jī)及格的數(shù)據(jù)
通過(guò)本例講解,讓學(xué)生掌握比較運(yùn)算符的應(yīng)用
任務(wù)九:
查詢英語(yǔ)和中文的總成績(jī)
通過(guò)本例講解,讓學(xué)生掌握為派生列起別名的方法
任務(wù)十:
學(xué)生練習(xí):
查詢一班各位同學(xué)的英語(yǔ)、中文成績(jī)總分。
任務(wù)十一:
將中文成績(jī)俺降序排列(升序asc)
通過(guò)本例講解,讓學(xué)生掌握ORDER BY關(guān)鍵字的應(yīng)用
任務(wù)十二:
查詢一班同學(xué)中文成績(jī)排名狀況(按降序)
通過(guò)本例講解,讓學(xué)生掌握WHERE條件和ORDER BY關(guān)鍵字綜合應(yīng)用
任務(wù)十三
查詢各班中文總成績(jī)
通過(guò)本例講解,讓學(xué)生掌握聚合函數(shù)和GROUP BY關(guān)鍵字的應(yīng)用
任務(wù)十四
查詢一班中文總成績(jī)
通過(guò)本例講解,讓學(xué)生掌握聚合函數(shù)和GROUP BY關(guān)鍵字以及HAVING關(guān)鍵字的應(yīng)用 任務(wù)十五:
利用class表中的姓名、中文、英文成績(jī)創(chuàng)建一個(gè)名為jjnn的新表。
通過(guò)本例講解,讓學(xué)生掌握從源表中篩選一部分?jǐn)?shù)據(jù)產(chǎn)生新表的方法。
設(shè)計(jì)思路:
這個(gè)環(huán)節(jié)我拋出了一個(gè)個(gè)任務(wù),促使學(xué)生去自我探索和自主學(xué)習(xí),達(dá)到掌握操作和使用的目的,激發(fā)學(xué)生的學(xué)習(xí)熱情和創(chuàng)造積極性。
(三)課堂小結(jié),鞏固新知
這節(jié)課我們學(xué)習(xí)了SQL語(yǔ)言查詢的使用方法,綜合以上任務(wù),不難得出SELECT語(yǔ)句的使用格式和方法(板書(shū)SELECT語(yǔ)句的格式):
? 〈SELECT語(yǔ)句〉::=
SELECT [ALL|DISTINCT]〈目標(biāo)列表達(dá)式〉[別名] [ ,〈目標(biāo)列表達(dá)式〉[別
名]]?
FROM 〈表名或視圖名〉[別名][ ,〈表名或視圖名〉[別名]]?
[WHERE〈條件表達(dá)式〉]
[GROUP BY 〈列名1〉[HAVING〈條件表達(dá)式〉]]
[ORDER BY 〈列名2〉[ASC|DESC]];
? 〈目標(biāo)列表達(dá)式〉::=
*
|〈表名〉.*
|[〈表名〉.]〈列名表達(dá)式〉{,[〈表名〉.]〈列名表達(dá)式〉}
|〈集函數(shù)名〉([DISTINCT|ALL] *|列名)
? 〈集函數(shù)名〉::=
COUNT
|SUM
|AVG
|MAX
|MIN
? 〈條件表達(dá)式〉::=
1.? θ ?
2.? [NOT] BETWEEN ? AND ?
3.? [NOT] IN(?)
4.? [NOT] LIKE '?'
5.? IS [NOT] NULL
6.[NOT] EXISTS 〈SELECT語(yǔ)句〉
7.〈條件表達(dá)式〉〈AND|OR〉〈條件表達(dá)式〉
對(duì)學(xué)生在操作中出現(xiàn)的問(wèn)題再一次強(qiáng)調(diào)書(shū)寫(xiě)命令的注意事項(xiàng)。
六、教學(xué)反思
本節(jié)課,我的設(shè)計(jì)任務(wù)與學(xué)生的成績(jī)有關(guān),容易激起學(xué)生很大的關(guān)注。隨著任務(wù)的深入,學(xué)習(xí)目標(biāo)得到很好的落實(shí),力爭(zhēng)以學(xué)習(xí)目標(biāo)為起點(diǎn),又以學(xué)習(xí)目標(biāo)為歸宿。學(xué)習(xí)過(guò)程中要時(shí)刻關(guān)注學(xué)生的進(jìn)展及出現(xiàn)的問(wèn)題,對(duì)于學(xué)生的點(diǎn)滴進(jìn)步給予及時(shí)的肯定;對(duì)于出現(xiàn)的問(wèn)題,也是一種動(dòng)態(tài)生成的教學(xué)資源,應(yīng)善于捕捉,適時(shí)提出,引導(dǎo)學(xué)生分析并解決,實(shí)現(xiàn)“問(wèn)題從學(xué)生中來(lái),最終回到學(xué)生中去”,從而完善學(xué)生的意義建構(gòu)。