常用简单sql语句
- 格式:doc
- 大小:1.08 MB
- 文档页数:20
数据库sql查询语句大全数据库SQL查询语句是用来从数据库中检索数据的命令。
以下是一些常见的SQL查询语句大全:1. SELECT语句,用于从数据库中选择数据。
例如,SELECT FROM 表名;2. WHERE子句,用于过滤数据,只返回满足特定条件的行。
例如,SELECT FROM 表名 WHERE 列名 = '条件';3. ORDER BY子句,用于对结果集按照指定列进行排序。
例如,SELECT FROM 表名 ORDER BY 列名;4. GROUP BY子句,用于对结果集按照指定列进行分组。
例如,SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1;5. HAVING子句,用于过滤分组后的数据。
例如,SELECT 列名1, COUNT(列名2) FROM 表名 GROUP BY 列名1 HAVING COUNT(列名2) > 10;6. JOIN子句,用于在多个表之间建立关联。
例如,SELECT FROM 表名1 INNER JOIN 表名2 ON 表名1.列名 = 表名2.列名;7. UNION操作符,用于合并两个或多个SELECT语句的结果集。
例如,SELECT 列名1 FROM 表名1 UNION SELECT 列名2 FROM 表名2;8. INSERT INTO语句,用于向数据库表中插入新记录。
例如,INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);9. UPDATE语句,用于更新数据库表中的记录。
例如,UPDATE 表名 SET 列名 = 值 WHERE 条件;10. DELETE FROM语句,用于从数据库表中删除记录。
例如,DELETE FROM 表名 WHERE 条件;以上是一些常见的SQL查询语句,它们可以帮助用户从数据库中检索、过滤、排序、分组和更新数据。
当然,SQL语言还有很多其他的功能和语法,这些只是其中的一部分。
数据库常用sql语句有哪些数据库常用sql语句有哪些结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
下面是店铺整理的数据库常用sql语句有哪些,欢迎大家分享。
数据库常用sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2<score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(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]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩 desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) asagefrom studentwhere CONVERT(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的`学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score<60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e<60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B whereA.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。
--update phoneinfo set cityname = '克孜勒苏柯尔克孜' where cityname = '克孜勒苏柯尔克孜州'--update phoneinfo set cityname = '湘西' where pad1 = '湖南 吉首'select * from dbo.PhoneInfo--update dbo.PhoneInfo set provincename=b.provincename,cityname=b.cityname from dbo.PhoneInfo a,PhoneInfo_hl b--where a.phonebound=b.phonebound--select * from dbo.UnknowPhoneBound--select * from dbo.Area--select * from phoneinfo a, phoneinfo_old b, phoneinfo_hl c where a.phonebound = b.phonebound and a.phonebound = c.phonebound and (a.cityname <> b.cityname or a.cityname <> c.cityname)--select * from phoneinfo a, phoneinfo_hl b where a.phonebound = b.phonebound and a.cityname <> b.citynameselect * from phoneinfo a, phoneinfo_old b where a.phonebound = b.phonebound and a.cityname <> b.cityname--select * into phoneinfo_bak from phoneinfo--select * from phoneinfo_bakselect * from phoneinfo a, phoneinfo_old b where a.phonebound = b.phonebound and a.cityname <> b.cityname--select * from dbo.PhoneInfo_Telecom--update PhoneInfo_Telecom set provincename = '内蒙古' where pad1 = '内蒙兴安盟'update PhoneInfo set cityname = '酒泉' where pad1 = '甘肃 酒泉嘉峪关'--update dbo.PhoneInfo_old set provincename=b.provincename,cityname=b.cityname from dbo.PhoneInfo_old a,PhoneInfo_Telecom b--where a.phonebound=b.phoneboundcreate table client_allasselect t2.mobilephone,t2.clientName,t2.sex,t2.birthdayyear,t2.birthdaymonth,t2.birthdaydate,t2.cardtype,t2.FundPurchaseTotalFee,t2.InsurePurchaseTotalFee,t2.FundSource,t2.InsureSource,t2.BankSourcefrom (select mobilephone,clientName,Sex,birthdayyear,birthdaymonth,birthdaydate,cardtype,fund_sum_fee FundPurchaseTotalFee,insure_sum_fee InsurePurchaseTotalFee,case when sourceindustry = '±£ÏÕ'then'±£ÏÕ'end as FundSource,case when sourceindustry = '»ù½ð'then'»ù½ð'end as InsureSource,case when sourceindustry = 'ÒøÐÐ'then'ÒøÐÐ'end as BankSource from (select c.*, f.fund_sum_fee, insure_sum_feefrom client_55 cleft join (select sum(cast(fee as float)) fund_sum_fee,mobilephonefrom fund_client_behavior_55group by mobilephone) f on c.mobilephone =f.mobilephoneleft join (select sum(cast(fee as float)) insure_sum_fee,mobilephonefrom client_purchase_55group by mobilephone) i on i.mobilephone =c.mobilephone) t) t2。
Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2))前面加一列序号:ifexists(select table_name from information_schema.tableswhere table_name='Temp_Table')drop table Temp_Tablegoselect 排名=identity(int,1,1),* INTO Temp_Table from Studentgoselect * from Temp_Tablegodrop database [ ] --删除空的没有名字的数据库问题:1、查询“”课程比“”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“”并且也学过编号“”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC whereStudent.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher whereTeacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“”的成绩比课程编号“”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002') group by S# having count(*)=(select count(*) from SC whereS#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(),马克思(),OO&UML (),数据库()SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第名到第名的学生成绩单:企业管理(),马克思(),UML (),数据库()[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(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]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname havingcount(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname havingavg(score)>85;34、查询课程名称为“数据库”,且分数低于的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为且课程成绩在分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC whereC#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过人的课程才统计)。
sql简单语句
SQL(StructuredQueryLanguage)是一种用于数据库管理的编程语言,它可以用于创建、读取、更新和删除数据库中的数据。
以下是一些常用的 SQL 简单语句:
1. SELECT:用于从数据库中读取数据。
例如:SELECT * FROM 表名;
2. INSERT:用于向数据库中插入数据。
例如:INSERT INTO 表名(字段1, 字段2, ...) VALUES (值1, 值2, ...);
3. UPDATE:用于更新数据库中的数据。
例如:UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;
4. DELETE:用于删除数据库中的数据。
例如:DELETE FROM 表名 WHERE 条件;
5. CREATE:用于创建数据库或表。
例如:CREATE DATABASE 数据库名;
CREATE TABLE 表名 (字段1 数据类型1, 字段2 数据类型
2, ...);
6. DROP:用于删除数据库或表。
例如:DROP DATABASE 数据库名;
DROP TABLE 表名;
以上是 SQL 简单语句中的一部分,它们是使用 SQL 进行数据库
管理时必须掌握的基础知识。
简单基本的sql语句(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名[desc]"sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名=字段值 order by 字段名 [desc]"sql="select top 10 * from 数据表 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"sql="select * from 数据表 where 字段名 between 值1 and 值2"(2) 更新数据记录:sql="update 数据表 set 字段名=字段值 where 条件表达式"sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表 where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:AVG(字段名) 得出一个表格栏平均值COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方法:sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"set rs=conn.excute(sql)用 rs("别名") 获取统计的值,其它函数运用同上。
sql的基础语句SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库管理系统的标准计算机语言。
下面是一些 SQL 的基础语句:1. **SELECT 语句**:用于从数据库中获取数据。
```sqlSELECT column1, column2 FROM table_name;```2. **INSERT INTO 语句**:用于将新数据插入到数据库表中。
```sqlINSERT INTO table_name (column1, column2) VALUES (value1, value2);```3. **UPDATE 语句**:用于更新数据库表中的现有数据。
```sqlUPDATE table_name SET column1 = value1 WHERE conditions;```4. **DELETE 语句**:用于从数据库表中删除数据。
```sqlDELETE FROM table_name WHERE conditions;```5. **CREATE TABLE 语句**:用于创建新的数据库表。
```sqlCREATE TABLE table_name (column1 datatype, column2 datatype);```6. **ALTER TABLE 语句**:用于修改数据库表的结构。
```sqlALTER TABLE table_name ADD column_name datatype;```7. **DROP TABLE 语句**:用于删除数据库表。
```sqlDROP TABLE table_name;```8. **CREATE INDEX 语句**:用于创建数据库表的索引。
```sqlCREATE INDEX index_name ON table_name (column1);```9. **ALTER INDEX 语句**:用于修改数据库表的索引。
sql 语言最常用的语句SQL语言是一种用于管理和操作关系型数据库的标准化语言。
它提供了一系列的命令和语句,用于查询、插入、更新和删除数据。
以下是SQL语言中最常用的十个语句:1. SELECT语句:用于从数据库中查询数据。
可以选择特定的列或所有的列,并可以设置条件来过滤数据。
示例:SELECT * FROM table_name WHERE condition;2. INSERT语句:用于向数据库表中插入新的数据记录。
示例:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);3. UPDATE语句:用于更新数据库表中的数据记录。
可以更新特定的列或所有的列,并可以设置条件来过滤要更新的数据。
示例:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;4. DELETE语句:用于从数据库表中删除数据记录。
可以设置条件来过滤要删除的数据。
示例:DELETE FROM table_name WHERE condition;5. CREATE TABLE语句:用于创建新的数据库表。
示例:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);6. ALTER TABLE语句:用于修改数据库表的结构,例如添加或删除列。
示例:ALTER TABLE table_name ADD column_name datatype;7. DROP TABLE语句:用于删除数据库表。
示例:DROP TABLE table_name;8. JOIN语句:用于在多个表之间建立关联,并基于关联条件查询数据。
示例:SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;9. GROUP BY语句:用于对查询结果进行分组,并对每个组进行聚合操作。
常用sql命令SQL是一种结构化查询语言,用于管理和操作关系型数据库。
SQL命令是SQL语言的基本组成部分,用于执行各种数据库操作。
以下是常用的SQL命令:1. SELECT:用于从数据库中选择数据,并返回结果集。
2. INSERT INTO:用于向表中插入新行。
3. UPDATE:用于更新表中现有行的数据。
4. DELETE FROM:用于从表中删除行。
5. CREATE DATABASE:用于创建新数据库。
6. CREATE TABLE:用于创建新表格。
7. ALTER TABLE:用于修改现有表格的结构。
8. DROP TABLE:用于删除现有表格。
9. INDEXES:用于创建索引以提高查询效率。
10. JOIN:将两个或多个表格连接在一起以获取更全面的信息。
11. GROUP BY:将结果集按照指定列进行分组,并对每个组进行聚合计算。
12. ORDER BY:按照指定列对结果集进行排序,可以使用ASC(升序)或DESC(降序)排序方式。
13. DISTINCT:从结果集中选择唯一的值并返回它们。
14. WHERE:筛选满足指定条件的行并返回它们,可以使用AND和OR运算符来组合多个条件。
15. IN:在WHERE子句中使用,选择匹配给定值列表中任何一个值的行并返回它们。
16. LIKE: 在WHERE子句中使用,选择与给定模式匹配的行并返回它们。
17. BETWEEN:在WHERE子句中使用,选择在指定范围内的值的行并返回它们。
18. NULL:在WHERE子句中使用,选择包含NULL值的行并返回它们。
19. COUNT:用于计算结果集中行的数量。
20. AVG:用于计算结果集中数值列的平均值。
21. SUM:用于计算结果集中数值列的总和。
22. MAX:用于计算结果集中数值列的最大值。
23. MIN:用于计算结果集中数值列的最小值。
24. HAVING:与GROUP BY一起使用,筛选满足指定条件的分组并返回它们。
update g_goods set goodsname = goodssimnamewhere LEFT(goodsname,1) = '0'左边全部变成和右边一样的名字首先把UG 给装上一星期练习画一套模具(拷贝各类模具5套左右,标准件,以及标准画法的资料)吧SQL 基础语法全部掌握运用娴熟新电脑买来学会自己制作U盘装系统,实践一次装系统,以及备份和还原系统。
给旧电脑模拟装一个连锁药店服务器掌握连锁模式的软件装法(此为重点)目标:明年能基本上单独出差做任何事情。
工作计划:2013 9 13 改天主要任务就是学sql server 基本语法至少掌握5个语法的运用】复习类容:select * from table1select distinct 栏位名from 表格名select 栏位名from 表格名where 条件select 栏位名from 表格名where 条件(and , or)条件select 栏位名from 表格名where 栏位名in(值1,值2)select 栏位名from 表格名where 栏位名between 值1 and 值2select 栏位名from 表格名where 栏位名like(模式)select 栏位名from 表格名【where 条件】order by 栏位名desc/ascselect 函数名(栏位名)from 表格名A VG (平均)select 栏位 1 sum(栏位2) from 表格名where 条件group by 栏位 1 COUNT (计数)查询函数条件where语句用having替代MAX (最大值)select 栏位1 sum(栏位2) from 表格名group by 栏位1 having 函数条件MIN (最小值)如果被SELECT 的只有函数栏,那就不需要GROUP BY 子句。
SUM (总合)SELECT 栏位1 栏位别名1, SUM(栏位2) '栏位别名2'FROM 表格名GROUP BY 栏位1( 三表内连接查询)select a.栏位1,b.栏位2,c.栏位3 from 表格1 as a inner join 表格2 as bon a.栏位名=b.栏位名inner join 表格3 as c on a.栏位名=c.栏位名两表普通链接:select a.栏位1,a.栏位2,b.栏位1from 表格a,表格bwhere a.栏位=b.栏位外部链接select a.栏位1,sum(b.栏位1)from 表格a full join 表格bon a.栏位=b.栏位group by a.栏位1创建表格create table 表格名(栏位1,栏位1数据类型,栏位2,栏位2数据类型....)举例:CREATE TABLE customer(First_Name char(50) unique not null check(First_Name>0), --------CHECK 限制目前尚未被执行于MySQL 数据库上Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date date)主键外键的设置create table 表格名(栏位1,primary key,栏位2,数据类型REFERENCES 另一个表格(另一表格的主键名).....)添加主键:确认被用来当做主键的栏位是设定为『NOT NULL』alert table 表格名add primary key (主键栏位名)添加外键:ALTER TABLE 表格名ADD FOREIGN KEY(栏位名) REFERENCES 另一个表格(另一主键栏位名)create view 视图名as select 栏位名from表格名create index 索引名on 表格名(栏位名)添加栏位名:ALTER table 表格名add 新栏位名(数据类型)删除栏位名:alter table 表格名drop column 删除的栏位名exec sp_rename '表格名.[栏位名]','新栏位名','column'2013 9 14 星期六继续复习熟悉的语法知识熟悉经常用的全部语法。
删除表格:drop table 表格名2013 9 15union语句:SELECT Date FROM Store_InformationUNIONSELECT Date FROM Internet_Salesunion all语句:SELECT Date FROM Store_InformationUNION allSELECT Date FROM Internet_Sales显示的结果union取两表之间的合集不显示同一数据只显示一个。
union all 也是去两表之间的合集所有的结果都给显示不限制重复。
UNION 是联集,而INTERSECT 是交集。
SELECT Date FROM Store_InformationINTERSECTSELECT Date FROM Internet_Sales结果显示两表之间都有的数据minus 语句:如果第二个SQL 语句所产生的结果并没有存在于第一个SQL 语句所产生的结果内,那这笔资料就被抛弃。
子查询语法如下:SELECT "栏位1"FROM "表格"WHERE "栏位2" [比较运算素](SELECT "栏位1"FROM "表格"WHERE [条件])EXISTS 的语法:SELECT "栏位1"FROM "表格1"WHERE EXISTS(SELECT *FROM "表格2"WHERE [条件])EXISTS 是用来测试内查询有没有产生任何结果。
如果有的话,系统就会执行外查询中的SQL。
若是没有的话,那整个SQL 语句就不会产生任何结果。
case语句:SELECT CASE ("栏位名")WHEN "条件1" THEN "结果1"WHEN "条件2" THEN "结果2"...[ELSE "结果N"]ENDFROM "表格名"select goodscode, case goodscodewhen '111' then sumqty*1.5ELSE sumqtyEND"new_maxqty",*from g_store_m2013 9 21 星期6alter table g_store_c add what char(50) 添加列名alter table g_store_c drop column names 删除列名EXEC sp_rename 'g_store_c.[what]','Addr','column' 修改列名称ALTER TABLE customer ALTER COLUMN Addr char(30) 修改列数据类型DROP TABLE customer 删除customer这个表格名truncate table woaini 删除woaini 这个表格名的所有类容表格名和列名依然存在insert into student (性别,姓名,年龄)values ('男','李欣','21')insert into student (性别,姓名,年龄)select '男','李欣',21 unionselect '女','李丽',23 unionselect '男','周璨',19 unionselect '男','朱德',22 unionselect '女','秦尼',21 unionselect '男','吴悠',19insert into student (性别,姓名,年龄)select 性别,姓名,年龄from 学生信息表update studentset 姓名='易彬',性别='女'where 姓名='朱德'and 年龄='22'delete from studentwhere 姓名='易彬'select top 10 percent* from 学生信息表order by 学号:查询前百分之10的数据按学号排序select *into #biaofrom 学生信息表创建临时表select 年龄from student unionselect 年龄from 学生信息表:查看student表格和学生信息表合并之后的年龄排名select 年龄from student union allselect 年龄from 学生信息表:查看student表格和学生信息表合并之后的年龄有多少项(重复的不隐藏)select 年龄from student intersectselect 年龄from 学生信息表:查看student表格和学生信息表合并之后有哪几种年龄是相同的select * from studentwhere 年龄not in (select 年龄from 学生信息表) 查看student表格有的而学生信息表没有的年龄数据update 表格名set 栏位名=replace(栏位名,“要替换的”,"替换后")declare @q int set @q=20 :设置一个变量数据类型int 变量值为20select *from 成绩信息where 课程编码=2 order by 考试编号compute sum(分数),avg(分数),max(分数),min(分数) by 考试编号:对课程编码=2的考试编号进行一个汇总:左外连接select a.栏位,b.栏位from表格aleft(outer)join表格bon a.栏位=b.栏位group by a.栏位: 右外连接select a.栏位,b.栏位from表格aright(outer)join表格bon a.栏位=b.栏位group by a.栏位: 全连接select a.栏位,b.栏位from表格afull (outer)join表格bon a.栏位=b.栏位group by a.栏位交叉连接select a.栏位,b.栏位from表格across join表格b=select a.栏位,b.栏位from表格a,,表格b同一表格使用多表连接语法称为自连接:select a.班级名,a.班级人数,b.班级名from班级信息a,班级信息where a.班级人数=b.班级人数and a.班级编号<>b.班级编号将多个查询的结果集中到一个结果集中叫做联合查询select a.课程编号,a.成绩,b.姓名from chengji ajoin学生信息表bon a.学号=b.学号where课程编号='110'unionselect'',SUM(成绩),'总计'from chengji ajoin学生信息表bon a.学号=b.学号where课程编号='110'union all :(加上all 下面连接的数据和上面合集后重复的不隐藏掉)select a.课程编号,a.成绩,b.姓名from chengji ajoin学生信息表bon a.学号=b.学号and b.姓名='孙俪'子查询select a.课程编号,a.成绩,b.姓名from chengji ajoin学生信息表bon a.学号=b.学号where课程编号='110'and a.成绩<(select avg(成绩)from chengji ajoin学生信息表bon a.学号=b.学号where课程编号='110')嵌套子查询select a.课程编号,a.成绩,b.姓名from chengji ajoin学生信息表bon a.学号=b.学号where课程编号='110'and a.成绩<(select avg(成绩)from chengji ajoin学生信息表bon a.学号=b.学号where课程编号in(select课程编码from课程信息表where课程编码='110') )常量与变量declare@name nvarchar(55)select@name='周瑜'select@namedeclare@str varchar(50)select@str='姓名:'+姓名+'民族:'+民族from学生信息表where学号='2001'select@str.IF...ELSE语句declare@iii intselect@iii=AVG(成绩)from chengjiwhere课程编号='120'if@iii>90beginprint'优秀希望再接再厉'endelseprint'需努力学习'IF...ELSE语句嵌套declare@iii intselect@iii=AVG(成绩)from chengjiwhere课程编号='100'if@iii>=60beginif@iii<70print'成绩刚及格需努力'else if@iii<80print'成绩中等需努力'else if@iii<90print'成绩良好,往更上一层楼' else print'成绩优异希望再接再厉' endelseprint'需努力学习'case语句示例select username,uid,职位级别= case deptwhen'02'then'董事长'when'01'then'总经办'when'14'then'员工'else'其他职位'endfrom x_userwhile循环语句declare@q int,@w intset@q=1set@w=1while@q<=10beginset@w=@w+@qset@q=@q+1endprint@wwhile语句中试用其他语句declare@q int,@w int,@e int set@q=3while@q<=100beginset@w=2set@e=1while@w<=SQRT(@q)beginif@q%@w=0beginset@e=0breakendset@w=@w+1endif@e=1 print@qset@q=@q+1endwaitfor延迟语句waitfor delay'00:00:05' exec sp_helpwaitfor time'15:21:10' select*from工龄表select GETDATE() 查询现在时间是多少goto语句try catch错误处理语句begin trydeclare@q intset@q=4/0select@qend trybegin catchselect ERROR_LINE()as'错误行数',ERROR_MESSAGE()'错误消息' end catch数学函数declare@q float,@w int set@q=13.56789 set@w=100print ceiling(abs(@q))declare@q float,@w intset@q=13.56789 set@w=100print power(@w,3)print sqrt(@w)print square(@w)字符串函数declare @q1 nvarchar (20),@q2 nvarchar (20),@q3 nvarchar (20),@q4 nvarchar (20),@q5 nvarchar (20)set @q1='上海分公司经理'set @q2='北京分公司经理'set @q3='天津分公司经理'set @q4='上海分公司财务经理'set @q5='天津分公司财务经理'print patindex('%分公司%经理',@q4)print charindex('分公司',@q4)print right(@q4,(len(@q4)-patindex('%分公司%经理',@q4)+1)) print right(@q4,(len(@q4)-charindex('分公司',@q4)+1))聚合函数时间和日期函数print getdate()print getutcdate()print year(getdate())print month(getdate())print day(getdate())print datepart(yy,getdate())print dateadd(yy,4,getdate())标量值函数create function adc(@q varchar(10))returns intasbegindeclare@w intselect@w=AVG(成绩)from chengjiwhere课程编号=@qreturn@wendgoselect dbo.adc('110')SQLServer中进行sql除法运算结果为小数时显示0的解决方案SELECT field1/field2 FROM TB;当field1的数值> field2的数值时,除法得出的结果是<1的,即0.xxxxxx这个时候在DB2的环境下SELECT出来的值是0解決方法:先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxxSELECT CAST(field1 AS FLOAT)/field2 FROM TB;ps.網上搜的資料,寫的是double,但在SQL Server2008中一直報錯,改成FLOAT就沒問題了。