2024年10月SQL语句是什么?数据库常用sql语句有哪些
⑴SQL语句是什么?数据库常用sql语句有哪些
⑵本文目录SQL语句是什么数据库常用sql语句有哪些常见的SQL语句有哪些SQL语句是什么SQL全称是“结构化查询语言(StructuredQueryLanguage)”SQL(StructuredQueryLanguage)是一种数据库查询和程序设计语言,按课程号升序排列selectC#as课程号,count(*)as人数fromscgroupbyC#orderbycount(*)desc,c#、检索至少选修两门课程的学生学号selectS#fromscgroupbys#havingcount(*)》=、查询全部学生都选修的课程的课程号和课程名selectC#,amefromCoursewhereC#in(selectc#fromscgroupbyc#)、查询没学过“叶平”老师讲授的任一门课程的学生姓名selectSnamefromStudentwhereS#notin(selectS#fromCourse,Teacher,SCwhereCourse.T#=Teacher.T#andSC.C#=course.C#andTname=’叶平’);、查询两门以上不及格课程的同学的学号及其平均成绩selectS#,avg(isnull(score,))fromSCwhereS#in(selectS#fromSCwherescore《groupbyS#havingcount(*)》)groupbyS#;、检索“”课程分数小于,按课程号降序排列SelectC#,Avg(score)fromSCgroupbyC#orderbyAvg(score),C#DESC;、查询平均成绩大于的所有学生的学号、姓名和平均成绩selectSname,SC.S#,avg(score)fromStudent,SCwhereStudent.S#=SC.S#groupbySC.S#,Snamehaving??avg(score)》;、查询课程名称为“数据库”,:Sun公司将以SQL基础的数据库管理系统嵌入JavaV数据库常用sql语句有哪些数据库常用sql语句有哪些SQL语句有哪些,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECTS#as学生ID,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#=’’)AS数据库,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#=’’)AS企业管理,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#=’’)AS英语,COUNT(*)AS有效课程数,AVG(t.score)AS平均成绩FROMSCAStGROUPBYS#ORDERBYavg(t.score)、查询各科成绩最高和最低的分:以如下形式显示:课程ID,成绩最高的学生姓名及其成绩selectStudent.Sname,scorefromStudent,SC,CourseC,TeacherwhereStudent.S#=SC.S#andSC.C#=C.C#andC.T#=Teacher.T#andTeacher.Tname=’叶平’andSC.score=(selectmax(score)fromSCwhereC#=C.C#);、查询各个课程及相应的选修人数selectcount(*)fromscgroupbyC#;、查询不同课程成绩相同的学生的学号、课程号、学生成绩selectdistinctA.S#,B.scorefromSCA,SCBwhereA.Score=B.ScoreandA.C#《》B.C#;、查询每门功成绩最好的前两名SELECTt.S#as学生ID,t.C#as课程ID,Scoreas分数FROMSCtWHEREscoreIN(SELECTTOPscoreFROMSCWHEREt.C#=C#ORDERBYscoreDESC)ORDERBYt.C#;、统计每门课程的学生选修人数(超过人的课程才统计。
⑶SQL全称是“结构化查询语言(StructuredQueryLanguage)”SQL(StructuredQueryLanguage)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL同时也是数据库脚本文件的扩展名。SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。结构化查询语言(StructuredQueryLanguage)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQLServer这些大型的数据库管理系统,还是像VisualFoxporo、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。美国国家标准局(ANSI)与国际标准化组织(ISO已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和InternationalElectrotechnicalmission(IEC)的成员之一。ANSI发布与国际标准组织相应的美国标准。年,ISO和IEC发布了SQL国际标准,称为SQL-。ANSI随之发布的相应标准是ANSISQL-。ANSISQL-有时被称为ANSISQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循ANSISQL标准。SQLServer使用ANSISQL-的扩展集,称为T-SQL,其遵循ANSI制定的SQL-标准。SQL语言包含个部分:※数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。※数据操作语言(DML),例如:INSERT、UPDATE、DELETE语句。※数据查询语言(DQL),例如:SELECT语句。※数据控制语言(DCL),例如:GRANT、REVOKE、MIT、ROLLBACK等语句。SQL语言包括三种主要程序设计语言类别的陈述式:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。SQL发展历史:E.J.Codd发表了关系数据库理论(relationaldatabasetheory);-:IBM以Codd的理论为基础开发了“Sequel”,并重命名为“SQL“;:Oracle发布了商业版SQL-:出现了其他商业版本,分别来自IBM(DB),DataGeneral(DG/SQL),RelationalTechnology(INGRES);SQL/:ANSI跟ISO的第一个标准;SQL/:增加了引用完整性(referentialintegrity);SQL/(akaSQL):被数据库管理系统(DBMS生产商广发接受;+:成为动态网站(Dynamicwebcontent)的后台支持;SQL/:Corelevel跟其他种相应的level,包括递归查询,程序跟流程控制,基本的对象(object支持包括oids;SQL/:包含了XML相关内容,自动生成列值(columnvalues);--:“Dataisthenextgenerationinside...SQListhenewHTML”!TimO’eilly提出了Web.理念,称数据将是核心,SQL将成为“新的HTML“;SQL/:定义了SQL与XML(包含XQuery)的关联应用;:Sun公司将以SQL基础的数据库管理系统嵌入JavaV
⑷数据库常用sql语句有哪些
⑸数据库常用sql语句有哪些
⑹SQL语句有哪些?SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,下文我为大家分享的就是SQL的常用语句,仅供参考!
⑺Student(S#,Sname,Sage,Ssex)学生表
⑻Course(C#,ame,T#)课程表
⑼SC(S#,C#,score)成绩表
⑽Teacher(T#,Tname)教师表
⑾查询“”课程比“”课程成绩高的所有学生的学号;
⑿selecta.S#from(selects#,scorefromSCwhereC#=’’)a,(selects#,score
⒀fromSCwhereC#=’’)b
⒁wherea.score》b.scoreanda.s#=b.s#;
⒂查询平均成绩大于分的同学的学号和平均成绩;
⒃selectS#,avg(score)
⒄groupbyS#havingavg(score)》;
⒅查询所有同学的学号、姓名、选课数、总成绩;
⒆selectStudent.S#,Student.Sname,count(SC.C#),sum(score)
⒇fromStudentleftOuterjoinSConStudent.S#=SC.S#
⒈groupbyStudent.S#,Sname
⒉查询姓“李”的老师的个数;
⒊selectcount(distinct(Tname))
⒋fromTeacher
⒌whereTnamelike’李%’;
⒍查询没学过“叶平”老师课的同学的学号、姓名;
⒎selectStudent.S#,Student.Sname
⒏fromStudent
⒐whereS#notin(selectdistinct(SC.S#)fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname=’叶平’);
⒑查询学过“”并且也学过编号“”课程的同学的学号、姓名;
⒒selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#andSC.C#=’’andexists(Select*fromSCasSC_whereSC_.S#=SC.S#andSC_.C#=’’);
⒓查询学过“叶平”老师所教的所有课的同学的学号、姓名;
⒔selectS#,Sname
⒕fromStudent
⒖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=’叶平’));
⒗查询课程编号“”的成绩比课程编号“”课程低的所有同学的学号、姓名;
⒘SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_whereSC_.S#=Student.S#andSC_.C#=’’)score
⒙fromStudent,SCwhereStudent.S#=SC.S#andC#=’’)S_wherescore《score;
⒚查询所有课程成绩小于分的同学的学号、姓名;
⒛selectS#,Sname
fromStudent
whereS#notin(selectStudent.S#fromStudent,SCwhereS.S#=SC.S#andscore》);
查询没有学全所有课的同学的学号、姓名;
selectStudent.S#,Student.Sname
fromStudent,SC
whereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavingcount(C#)《(selectcount(C#)fromCourse);
查询至少有一门课与学号为“”的同学所学相同的同学的学号和姓名;
selectS#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#inselectC#fromSCwhereS#=’’;
查询至少学过学号为“”同学所有一门课的其他同学学号和姓名;
selectdistinctSC.S#,Sname
fromStudent,SC
whereStudent.S#=SC.S#andC#in(selectC#fromSCwhereS#=’’);
把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
updateSCsetscore=(selectavg(SC_.score)
whereSC_.C#=SC.C#)fromCourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTeacher.Tname=’叶平’);
查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;
selectS#fromSCwhereC#in(selectC#fromSCwhereS#=’’)
groupbyS#havingcount(*)=(selectcount(*)fromSCwhereS#=’’);
删除学习“叶平”老师课的SC表记录;
fromcourse,Teacher
whereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTname=’叶平’;
向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、、
InsertSCselectS#,’’,(Selectavg(score)
fromSCwhereC#=’’)fromStudentwhereS#notin(SelectS#fromSCwhereC#=’’);
按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分
SELECTS#as学生ID
,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#=’’)AS数据库
,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#=’’)AS企业管理
,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#=’’)AS英语
,COUNT(*)AS有效课程数,AVG(t.score)AS平均成绩
ORDERBYavg(t.score)
查询各科成绩最高和最低的分:以如下形式显示:课程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#)
R.Score=(SELECTMIN(IR.score)
FROMSCASIR
WHERER.C#=IR.C#
GROUPBYIR.C#
按各科平均成绩从低到高和及格率的百分数从高到低顺序
SELECTt.C#AS课程号,max(course.ame)AS课程名,isnull(AVG(score),)AS平均成绩
,*SUM(CASEWHENisnull(score,)》=THENELSEEND)/COUNT(*)AS及格百分数
FROMSCT,Course
wheret.C#=course.C#
GROUPBYt.C#
ORDERBY*SUM(CASEWHENisnull(score,)》=THENELSEEND)/COUNT(*)DESC
查询如下课程平均成绩和及格率的百分数(用“行“显示):企业管理(,马克思(,OO&UML(,数据库(
SELECTSUM(CASEWHENC#=’’THENscoreELSEEND)/SUM(CASEC#WHEN’’THENELSEEND)AS企业管理平均分
,*SUM(CASEWHENC#=’’ANDscore》=THENELSEEND)/SUM(CASEWHENC#=’’THENELSEEND)AS企业管理及格百分数
,SUM(CASEWHENC#=’’THENscoreELSEEND)/SUM(CASEC#WHEN’’THENELSEEND)AS马克思平均分
,*SUM(CASEWHENC#=’’ANDscore》=THENELSEEND)/SUM(CASEWHENC#=’’THENELSEEND)AS马克思及格百分数
,SUM(CASEWHENC#=’’THENscoreELSEEND)/SUM(CASEC#WHEN’’THENELSEEND)ASUML平均分
,*SUM(CASEWHENC#=’’ANDscore》=THENELSEEND)/SUM(CASEWHENC#=’’THENELSEEND)ASUML及格百分数
,SUM(CASEWHENC#=’’THENscoreELSEEND)/SUM(CASEC#WHEN’’THENELSEEND)AS数据库平均分
,*SUM(CASEWHENC#=’’ANDscore》=THENELSEEND)/SUM(CASEWHENC#=’’THENELSEEND)AS数据库及格百分数
查询不同老师所教不同课程平均分从高到低显示
SELECTmax(Z.T#)AS教师ID,MAX(Z.Tname)AS教师姓名,C.C#AS课程ID,MAX(C.ame)AS课程名称,AVG(Score)AS平均成绩
FROMSCAST,CourseASC,TeacherASZ
whereT.C#=C.C#andC.T#=Z.T#
GROUPBYC.C#
ORDERBYAVG(Score)DESC
查询如下课程成绩第名到第名的学生成绩单:企业管理(,马克思(,UML(,数据库(
,企业管理,马克思,UML,数据库,平均成绩
SELECTDISTINCTtop
SC.S#As学生学号,
Student.SnameAS学生姓名,
T.scoreAS企业管理,
T.scoreAS马克思,
T.scoreASUML,
T.scoreAS数据库,
ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)as总分
FROMStudent,SCLEFTJOINSCAST
ONSC.S#=T.S#ANDT.C#=’’
LEFTJOINSCAST
ONSC.S#=T.S#ANDT.C#=’’
LEFTJOINSCAST
ONSC.S#=T.S#ANDT.C#=’’
LEFTJOINSCAST
ONSC.S#=T.S#ANDT.C#=’’
WHEREstudent.S#=SC.S#and
ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)
TOPWITHTIES
ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)
LEFTJOINscAST
ONsc.S#=T.S#ANDT.C#=’k’
LEFTJOINscAST
ONsc.S#=T.S#ANDT.C#=’k’
LEFTJOINscAST
ONsc.S#=T.S#ANDT.C#=’k’
LEFTJOINscAST
ONsc.S#=T.S#ANDT.C#=’k’
ORDERBYISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)+ISNULL(T.score,)DESC);
统计列印各科成绩,各分数段人数:课程ID,课程名称,
SELECTSC.C#as课程ID,ameas课程名称
,SUM(CASEWHENscoreBETWEENANDTHENELSEEND)AS
,SUM(CASEWHENscoreBETWEENANDTHENELSEEND)AS
,SUM(CASEWHENscoreBETWEENANDTHENELSEEND)AS
,SUM(CASEWHENscore《THENELSEEND)AS
FROMSC,Course
whereSC.C#=Course.C#
GROUPBYSC.C#,ame;
查询学生平均成绩及其名次
SELECT+(SELECTCOUNT(distinct平均成绩)
FROM(SELECTS#,AVG(score)AS平均成绩
WHERE平均成绩》T.平均成绩)as名次,
S#as学生学号,平均成绩
FROM(SELECTS#,AVG(score)平均成绩
ORDERBY平均成绩desc;
查询各科成绩前三名的记录:(不考虑成绩并列情况)
SELECTt.S#as学生ID,t.C#as课程ID,Scoreas分数
WHEREscoreIN(SELECTTOPscore
WHEREt.C#=C#
ORDERBYscoreDESC
ORDERBYt.C#;
查询每门课程被选修的学生数
selectc#,count(S#)fromscgroupbyC#;
查询出只选修了一门课程的全部学生的学号和姓名
selectSC.S#,Student.Sname,count(C#)AS选课数
fromSC,Student
whereSC.S#=Student.S#groupbySC.S#,Student.Snamehavingcount(C#)=;
Selectcount(Ssex)as男生人数fromStudentgroupbySsexhavingSsex=’男’;
Selectcount(Ssex)as女生人数fromStudentgroupbySsexhavingSsex=’女’;
查询姓“张”的.学生名单
SELECTSnameFROMStudentWHERESnamelike’张%’;
查询同名同性学生名单,并统计同名人数
selectSname,count(*)fromStudentgroupbySnamehavingcount(*)》;;
年出生的学生名单(注:Student表中Sage列的类型是datetime)
selectSname,CONVERT(char(),DATEPART(year,Sage))asage
fromstudent
whereCONVERT(char(),DATEPART(year,Sage))=’’;
查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列
SelectC#,Avg(score)fromSCgroupbyC#orderbyAvg(score),C#DESC;
查询平均成绩大于的所有学生的学号、姓名和平均成绩
selectSname,SC.S#,avg(score)
fromStudent,SC
whereStudent.S#=SC.S#groupbySC.S#,Snamehaving??avg(score)》;
查询课程名称为“数据库”,且分数低于的学生姓名和分数
SelectSname,isnull(score,)
fromStudent,SC,Course
whereSC.S#=Student.S#andSC.C#=Course.C#andCourse.ame=’数据库’andscore《;
查询所有学生的选课情况;
SELECTSC.S#,SC.C#,Sname,ame
FROMSC,Student,Course
whereSC.S#=Student.S#andSC.C#=Course.C#;
查询任何一门课程成绩在分以上的姓名、课程名称和分数;
SELECTdistinctstudent.S#,student.Sname,SC.C#,SC.score
FROMstudent,Sc
WHERESC.score》=ANDSC.S#=student.S#;
查询不及格的课程,并按课程号从大到小排列
selectc#fromscwherescore《orderbyC#;
查询课程编号为且课程成绩在分以上的学生的学号和姓名;
selectSC.S#,Student.SnamefromSC,StudentwhereSC.S#=Student.S#andScore》andC#=’’;
求选了课程的学生人数
selectcount(*)fromsc;
查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩
selectStudent.Sname,score
fromStudent,SC,CourseC,Teacher
whereStudent.S#=SC.S#andSC.C#=C.C#andC.T#=Teacher.T#andTeacher.Tname=’叶平’andSC.score=(selectmax(score)fromSCwhereC#=C.C#);
查询各个课程及相应的选修人数
selectcount(*)fromscgroupbyC#;
查询不同课程成绩相同的学生的学号、课程号、学生成绩
selectdistinctA.S#,B.scorefromSCA,SCBwhereA.Score=B.ScoreandA.C#《》B.C#;
查询每门功成绩最好的前两名
SELECTt.S#as学生ID,t.C#as课程ID,Scoreas分数
WHEREscoreIN(SELECTTOPscore
WHEREt.C#=C#
ORDERBYscoreDESC
ORDERBYt.C#;
统计每门课程的学生选修人数(超过人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列
selectC#as课程号,count(*)as人数
orderbycount(*)desc,c#
检索至少选修两门课程的学生学号
havingcount(*)》=
查询全部学生都选修的课程的课程号和课程名
selectC#,ame
fromCourse
whereC#in(selectc#fromscgroupbyc#)
查询没学过“叶平”老师讲授的任一门课程的学生姓名
selectSnamefromStudentwhereS#notin(selectS#fromCourse,Teacher,SCwhereCourse.T#=Teacher.T#andSC.C#=course.C#andTname=’叶平’);
查询两门以上不及格课程的同学的学号及其平均成绩
selectS#,avg(isnull(score,))fromSCwhereS#in(selectS#fromSCwherescore《groupbyS#havingcount(*)》)groupbyS#;
检索“”课程分数小于,按分数降序排列的同学学号
selectS#fromSCwhereC#=’’andscore《orderbyscoredesc;
删除“”同学的“”课程的成绩
deletefromScwhereS#=’’andC#=’’;;
常见的SQL语句有哪些
更新数据记录:sql=“update数据表set字段名=字段值where条件表达式“sql=“update数据表set字段=值,字段=值……字段n=值nwhere条件表达式“()添加数据记录:sql=“insertinto数据表(字段,字段,字段…)values(值,值,值…)“sql=“insertinto目标数据表select*from源数据表“(把源数据表的记录添加到目标数据表)()删除数据记录:sql=“deletefrom数据表where条件表达式“sql=“deletefrom数据表“(将数据表所有记录删除)()数据记录筛选:sql=“select*from数据表where字段名=字段值orderby字段名“sql=“select*from数据表where字段名like’%字段值%’orderby字段名“sql=“selecttop*from数据表where字段名orderby字段名“sql=“select*from数据表where字段名in(’值’,’值’,’值’)“sql=“select*from数据表where字段名between值and值“()数据表的建立和删除:CREATETABLE数据表名称(字段类型(长度),字段类型(长度)……)例:CREATETABLEtab(namevarchar(),datetimedefaultnow())DROPTABLE数据表名称(永久性删除一个数据表)()数据记录统计函数:AVG(字段名)得出一个表格栏平均值COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名)取得一个表格栏最大的值MIN(字段名)取得一个表格栏最小的值SUM(字段名)把数据栏的值相加引用以上函数的方法:sql=“selectsum(字段名)as别名from数据表where条件表达式“setrs=conn.excute(sql)用rs(“别名“)获取统的计值,其它函数运用同上。(复制数据库的表select*into新表名from要复制的表的表名where=要完全复制把where=去了就可以了(删除某个表的一个列altertablebankbilldropcolumnzslaltertablexxalter/add/dropcolumnxx(模糊查询Sql=“selecttop*from数据表where字段名orderby字段名“查找数据库中前记录Sql=“selecttopn*form数据表orderbynewid()“随机取出数据库中的若干条记录的方法topn,n就是要取出的记录数Sql=“select*from数据表where字段名in(’值’,’值’,’值’)“