50个常用的SQL语句Word文档下载推荐.docx

上传人:b****3 文档编号:16712412 上传时间:2022-11-25 格式:DOCX 页数:24 大小:27.81KB
下载 相关 举报
50个常用的SQL语句Word文档下载推荐.docx_第1页
第1页 / 共24页
50个常用的SQL语句Word文档下载推荐.docx_第2页
第2页 / 共24页
50个常用的SQL语句Word文档下载推荐.docx_第3页
第3页 / 共24页
50个常用的SQL语句Word文档下载推荐.docx_第4页
第4页 / 共24页
50个常用的SQL语句Word文档下载推荐.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

50个常用的SQL语句Word文档下载推荐.docx

《50个常用的SQL语句Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《50个常用的SQL语句Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。

50个常用的SQL语句Word文档下载推荐.docx

update 

set 

条件表达式"

字段1=值1,字段2=值2 

…… 

字段n=值n 

(3) 

删除数据记录:

delete 

数据表"

(将数据表所有记录删除) 

(4) 

添加数据记录:

insert 

into 

(字段1,字段2,字段3 

…) 

valuess 

(值1,值2,值3 

…)"

目标数据表 

select 

源数据表"

(把源数据表的记录添加到目标数据表) 

(5) 

数据记录统计函数:

AVG(字段名) 

得出一个表格栏平均值 

COUNT(*|字段名) 

对数据行数的统计或对某一栏有值的数据行数统计 

MAX(字段名) 

取得一个表格栏最大的值 

MIN(字段名) 

取得一个表格栏最小的值 

SUM(字段名) 

把数据栏的值相加 

引用以上函数的方法:

sum(字段名) 

as 

别名 

set 

rs=conn.excute(sql) 

用 

rs("

别名"

) 

获取统的计值,其它函数运用同上。

(6) 

数据表的建立和删除:

CREATE 

TABLE 

数据表名称(字段1 

类型1(长度),字段2 

类型2(长度) 

) 

例:

tab01(name 

varchar(50),datetime 

default 

now()) 

DROP 

数据表名称 

(永久性删除一个数据表) 

string 

cnString 

"

连接字符串"

;

SqlConnection 

cn 

new 

SqlConnection(cnString);

SqlCommand 

cmd 

SqlCommand();

cmd.Connection 

cn;

cmd.CommandText 

pubs"

SqlDataReader 

dr 

cmd.ExecuteReader();

while(dr.Read())

{

Response.Write(dr[0].ToString());

}

dr.Close();

int 

result 

cmd.ExecuteNonQuery();

cn.Close();

cmd.Dispose();

cn.Dispose();

 

tablename 

a='

a'

Student(S#,Sname,Sage,Ssex)学生表

Course(C#,Cname,T#)课程表

SC(S#,C#,score)成绩表

Teacher(T#,Tname)教师表

createtableStudent(S#varchar(20),Snamevarchar(10),Sageint,Ssexvarchar

(2))

前面加一列序号:

if

exists(selecttable_namefrominformation_schema.tables

wheretable_name='

Temp_Table'

droptableTemp_Table

go

select排名=identity(int,1,1),*INTOTemp_TablefromStudent

select*fromTemp_Table

go

dropdatabase[]--删除空的没有名字的数据库

问题:

1、查询“”课程比“”课程成绩高的所有学生的学号;

selecta.S#from(selects#,scorefromSCwhereC#='

001'

)a,(selects#,score

fromSCwhereC#='

002'

)b

wherea.score>

b.scoreanda.s#=b.s#;

2、查询平均成绩大于60分的同学的学号和平均成绩;

selectS#,avg(score)

fromsc

groupbyS#havingavg(score)>

60;

3、查询所有同学的学号、姓名、选课数、总成绩;

selectStudent.S#,Student.Sname,count(SC.C#),sum(score)

fromStudentleftOuterjoinSConStudent.S#=SC.S#

groupbyStudent.S#,Sname

4、查询姓“李”的老师的个数;

selectcount(distinct(Tname))

fromTeacher

whereTnamelike'

李%'

5、查询没学过“叶平”老师课的同学的学号、姓名;

selectStudent.S#,Student.Sname

fromStudent

whereS#notin(selectdistinct(SC.S#)fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname='

叶平'

);

6、查询学过“”并且也学过编号“”课程的同学的学号、姓名;

selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#andSC.C#='

andexists(Select*fromSCasSC_2whereSC_2.S#=SC.S#andSC_2.C#='

7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

selectS#,Sname

whereS#in(selectS#fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname='

groupbyS#havingcount(SC.C#)=(selectcount(C#)fromCourse,TeacherwhereTeacher.T#=Course.T#andTname='

));

8、查询课程编号“”的成绩比课程编号“”课程低的所有同学的学号、姓名;

SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_2whereSC_2.S#=Student.S#andSC_2.C#='

)score2

fromStudent,SCwhereStudent.S#=SC.S#andC#='

)S_2wherescore2<

score;

9、查询所有课程成绩小于分的同学的学号、姓名;

whereS#notin(selectStudent.S#fromStudent,SCwhereS.S#=SC.S#andscore>

60);

10、查询没有学全所有课的同学的学号、姓名;

fromStudent,SC

whereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavingcount(C#)<

(selectcount(C#)fromCourse);

11、查询至少有一门课与学号为“”的同学所学相同的同学的学号和姓名;

selectS#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#inselectC#fromSCwhereS#='

1001'

12、查询至少学过学号为“”同学所有一门课的其他同学学号和姓名;

selectdistinctSC.S#,Sname

whereStudent.S#=SC.S#andC#in(selectC#fromSCwhereS#='

13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;

updateSCsetscore=(selectavg(SC_2.score)

fromSCSC_2

whereSC_2.C#=SC.C#)fromCourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTeacher.Tname='

14、查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;

selectS#fromSCwhereC#in(selectC#fromSCwhereS#='

1002'

groupbyS#havingcount(*)=(selectcount(*)fromSCwhereS#='

15、删除学习“叶平”老师课的SC表记录;

DelectSC

fromcourse,Teacher

whereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTname='

16、向SC表中插入一些记录,这些记录要求符合以下条件:

没有上过编号“”课程的同学学号、、

号课的平均成绩;

InsertSCselectS#,'

(Selectavg(score)

)fromStudentwhereS#notin(SelectS#fromSCwhereC#='

17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:

学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

SELECTS#as学生ID

(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='

004'

)AS数据库

)AS企业管理

006'

)AS英语

COUNT(*)AS有效课程数,AVG(t.score)AS平均成绩

FROMSCASt

GROUPBYS#

ORDERBYavg(t.score)

18、查询各科成绩最高和最低的分:

以如下形式显示:

课程ID,最高分,最低分

SELECTL.C#As课程ID,L.scoreAS最高分,R.scoreAS最低分

FROMSCL,SCASR

WHEREL.C#=R.C#and

L.score=(SELECTMAX(IL.score)

FROMSCASIL,StudentASIM

WHEREL.C#=IL.C#andIM.S#=IL.S#

GROUPBYIL.C#)

AND

R.Score=(SELECTMIN(IR.score)

FROMSCASIR

WHERER.C#=IR.C#

GROUPBYIR.C#

);

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

SELECTt.C#AS课程号,max(course.Cname)AS课程名,isnull(AVG(score),0)AS平均成绩

100*SUM(CASEWHENisnull(score,0)>

=60THEN1ELSE0END)/COUNT(*)AS及格百分数

FROMSCT,Course

wheret.C#=course.C#

GROUPBYt.C#

ORDERBY100*SUM(CASEWHENisnull(score,0)>

=60THEN1ELSE0END)/COUNT(*)DESC

20、查询如下课程平均成绩和及格率的百分数(用"

1行"

显示):

企业管理(),马克思(),OO&

UML(),数据库()

SELECTSUM(CASEWHENC#='

THENscoreELSE0END)/SUM(CASEC#WHEN'

THEN1ELSE0END)AS企业管理平均分

100*SUM(CASEWHENC#='

ANDscore>

=60THEN1ELSE0END)/SUM(CASEWHENC#='

THEN1ELSE0END)AS企业管理及格百分数

SUM(CASEWHENC#='

THEN1ELSE0END)AS马克思平均分

THEN1ELSE0END)AS马克思及格百分数

003'

THEN1ELSE0END)ASUML平均分

THEN1ELSE0END)ASUML及格百分数

THEN1ELSE0END)AS数据库平均分

THEN1ELSE0END)AS数据库及格百分数

FROMSC

21、查询不同老师所教不同课程平均分从高到低显示

SELECTmax(Z.T#)AS教师ID,MAX(Z.Tname)AS教师姓名,C.C#AS课程ID,MAX(C.Cname)AS课程名称,AVG(Score)AS平均成绩

FROMSCAST,CourseASC,TeacherASZ

whereT.C#=C.C#andC.T#=Z.T#

GROUPBYC.C#

ORDERBYAVG(Score)DESC

22、查询如下课程成绩第名到第名的学生成绩单:

企业管理(),马克思(),UML(),数据库()

[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩

SELECTDISTINCTtop3

SC.S#As学生学号,

Student.SnameAS学生姓名,

T1.scoreAS企业管理,

T2.scoreAS马克思,

T3.scoreASUML,

T4.scoreAS数据库,

ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)as总分

FROMStudent,SCLEFTJOINSCAST1

ONSC.S#=T1.S#ANDT1.C#='

LEFTJOINSCAST2

ONSC.S#=T2.S#ANDT2.C#='

LEFTJOINSCAST3

ONSC.S#=T3.S#ANDT3.C#='

LEFTJOINSCAST4

ONSC.S#=T4.S#ANDT4.C#='

WHEREstudent.S#=SC.S#and

ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)

NOTIN

(SELECT

DISTINCT

TOP15WITHTIES

FROMsc

LEFTJOINscAST1

ONsc.S#=T1.S#ANDT1.C#='

k1'

LEFTJOINscAST2

ONsc.S#=T2.S#ANDT2.C#='

k2'

LEFTJOINscAST3

ONsc.S#=T3.S#ANDT3.C#='

k3'

LEFTJOINscAST4

ONsc.S#=T4.S#ANDT4.C#='

k4'

ORDERBYISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)DESC);

23、统计列印各科成绩,各分数段人数:

课程ID,课程名称,[100-85],[85-70],[70-60],[<

60]

SELECTSC.C#as课程ID,Cnameas课程名称

SUM(CASEWHENscoreBETWEEN85AND100THEN1ELSE0END)AS[100-85]

SUM(CASEWHENscoreBETWEEN70AND85THEN1ELSE0END)AS[85-70]

SUM(CASEWHENscoreBETWEEN60AND70THEN1ELSE0END)AS[70-60]

SUM(CASEWHENscore<

60THEN1ELSE0END)AS[60-]

FROMSC,Course

whereSC.C#=Course.C#

GROUPBYSC.C#,Cname;

24、查询学生平均成绩及其名次

SELECT1+(SELECTCOUNT(distinct平均成绩)

FROM(SELECTS#,AVG(score)AS平均成绩

)AST1

WHERE平均成绩>

T2.平均成绩)as名次,

S#as学生学号,平均成绩

FROM(SELECTS#,AVG(score)平均成绩

)AST2

ORDERB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1