常用简单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一起使用,筛选满足指定条件的分组并返回它们。
----------------------------- 数据库的有关SQL语句-------------------------1、数据库创建create database data_nameon primary(name= ,filename= ,size= ,maxsize= ,filegrowth=),filegroup [辅助文件组名](name= ,filename= ,size= ,maxsize= ,filegrowth=)log on(name= ,filename= ,size= ,maxsize= ,filegrowth=)修改alter database 原数据库名modify name=新名字删除drop database data_name产看信息:sp_helpdb 数据库名切换数据库use 数据库名2、架构创建create schema jiagou删除drop schema jiagou3、辅助文件添加alter database data_nameadd file(name=file1,filename='d:\file1.ndf',size=10MB,filegrwth=10MB) to filegroupgroup1修改alter database data_namemodify file(name= ,filename= ,size= ,maxsize= ,filegrowth=)删除alter database data_nameremove file 文件逻辑名4、日志文件(修改的时候,逻辑名称不能修改)添加alter database data_nameadd log file (name= ,filename= ,size= ,maxsize= ,filegrowth=) 修改alter database data_namemodify file(name= ,filename= ,size= ,maxsize= )删除alter database c1204remove file 逻辑名5、文件组添加alter database data_nameadd filegroup group_name修改alter database data_namemodify filegroup 原文件组名name=新文件组名删除alter database data_nameremove filegroup 文件组名--------------------------------- 表的有关SQL语句--------------------------------1、表创建:create table table_name(id int identity(1001,3) primary key not null,st_name nvarchar(10) null,sex nvarchar(4) default('男'),gongzi money,shijian datetime)修改表名:exec sp_rename 'table', 'table33' (注意:尽量不要改表名,容易引起其它对象的错误)删除:drop table table_name2、表的列(字段)的操作添加列:alter table table_nameadd 列名列的数据类型null / not null删除列:alter table table_namedrop column 列名修改列的名称:exec sp_rename '表名.字段名', '新的字段名', 'column' (提示:尽量不要改列名,容易引起错误)修改列的数据类型:alter table table_namealter column 列名列的数据类型3、对数据的操作插入: insert into table_name(字段1,字段2,字段3) values( 值, 值, 值,)删除:delete from where stu_name='王伟' and id=3修改:update table_name set 字段名=值where id=4------------------------------------ 主键、外建(补充) -------------------------1、创建:create table class(cl_id int primary key,cl_name nvarchar(10) null)create table address(add_id int primary key,add_name nvarchar(10) null)create table student(stu_id int primary key,stu_name nvarchar(10) null,cl_id int foreign key references class(cl_id) null ,add_id int foreign key references address(add_id) null)意义:用于和加强表之间的联系,当在添加,修改和删除数据时,保持几张表中数据的一致性------------------------------ SQL查询语句--------------------------------1、排序select top(3) * from student order by cl_id desc2、分组select class_id ,sum(score) as chengji from student group by class_idhaving sum(score)>=250order by sum(score) desc提示:聚合函数不能在where中使用,所以才用到了having3、清空表truncate table table_name4、消除重复列select distinct 列名from table_name (提示:只能显示出此列,其它列显示不出来)5、select * from table_name where name in ('张三','李四','王五')select * from table_name where score in (100,90,87,89,96)------------------------------- 表联接---------------------------------1、内联接:select * from student as s inner join classas c on s.cl_id=c.cl_id where .....2、左外联接:返回第一个已命名的表中符合条件的所有行select * from student as s left join class as c on s.cl_id=c.cl_idwhere ....3、右外链接:返回第二个已命名的表中符合条件的所有行select * from student as s right join class as c on s.cl_id=c.cl_idwhere .....4、完全外联接:返回左表、右表中的所有值select * from student as s full join class as c on s.cl_id=c.cl_id5、交叉联接:将从被联接的表中返回所有可能的行组合(会生成一个笛卡尔积)select * from student as s cross join class as cwhere ....6、两个以上的表的联接:select * from student as s join class as con s.cl_id=c.cl_id join address as a on s.add_id=a.add_idwhere ='张三'7、union 结合多个表的数据select stu_id as '学生编号' , stu_name as '名字' from student1unionselect id ,name from student2unionselect s_id , s_name from student3--------------------------- 子查询----------------------1、把子查询用作派生表可用子查询产生一个派生表,用于代替where、having、from子句中的表,注意要用别名来引用这个派生表select s.stu_name,s.cl_id from (select * from student where stu_id >2) as swhere s.stu_name='王二'2、把子查询用作表达式在sql语句中,所有使用表达式的地方,都可以用子查询代替,此时子查询必须取值为单个列值的表,于是这个子查询可以代替where子句中包含in关键字的表达式select * from student where stu_id not in (select id from student where stu_id>2)3、使用子查询关联数据关联子查询可以作动态表达式,因为它随着外层查询的每一次变化而变化例1:select stu_id,stu_name,cl_id,(select count(stu_id) from student) as 记录条数from student例2:select * from student as s join class as c on s.cl_id=c.cl_idwhere not exists(select * from class where c.cl_id>3)--------------------------- 变量、条件语句、循环语句--------------------------1、变量(1)局部变量---可以select、set进行赋值例一:declare @i intselect @i=count(*) from studentprint @i例二:declare @sname varchar(4)set @sname='张三'print @sname(2)全局变量---只能用系统提供的,用户不能定义,所以只了解一下书上70页的就可以2、条件语句(1) if...else...语句declare @sex_id intdeclare @sex_name nvarchar(4)select @sex_id=sex from student (where ...)if @sex_id=1beginset @sex_name='男'endelsebeginset @sex_name='女'endprint @sex_name(2) case语句select stu_name as 姓名, (case cl_idwhen 1 then '一班'when 2 then '二班'when 3 then '三班'when 4 then '四班'else '暂无班级'end ) as 班级from student3、循环语句while 语句:declare @i intdeclare @name nvarchar(10)set @i=1while @i<13beginselect @name=stu_name from student where stu_id=@iprint @nameset @name=''set @i=@i+1end------------------------------ 事务------------------------------1、事务的概念事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。
常见sql语句SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
以下是一些常见的 SQL 语句:1.SELECT:用于从数据库中检索数据。
SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;2.INSERT INTO:用于向数据库表中插入数据。
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);3.UPDATE:用于更新数据库表中的数据。
UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;4.DELETE FROM:用于从数据库表中删除数据。
DELETE FROM 表名 WHERE 条件;5.CREATE TABLE:用于创建新的数据库表。
CREATE TABLE 表名 (列名1 数据类型1,列名2 数据类型2,...);6.ALTER TABLE:用于修改数据库表的结构。
ALTER TABLE 表名 ADD COLUMN 列名数据类型;ALTER TABLE 表名 MODIFY COLUMN 列名新数据类型;ALTER TABLE 表名 DROP COLUMN 列名;7.SELECT DISTINCT:用于获取唯一的值。
SELECT DISTINCT 列名 FROM 表名;8.ORDER BY:用于根据指定的列对结果进行排序。
SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名1 ASC/DESC;9.GROUP BY:用于对结果进行分组统计。
SELECT 列名1, COUNT(列名2) FROM 表名 GROUP BY 列名1; 10.JOIN:用于将多个表的行联接。
SELECT 列名1, 列名2 FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;11.WHERE:用于筛选满足特定条件的数据。
SQL查询语句大全集锦MYSQL查询语句大全集锦一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
复制内容到剪贴板代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:复制内容到剪贴板代码:SELECT * FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:复制内容到剪贴板代码:SELECT nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:复制内容到剪贴板代码:SELECT 昵称=nickname,电子邮件=email FROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:复制内容到剪贴板代码:SELECT TOP 2 * FROM `testtable`复制内容到剪贴板代码:SELECT TOP 20 PERCENT * FROM `testtable`(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
SQL基本语句及示例1 . SQL SELECT 语句SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法以及:2. SQL SELECT DISTINCT 语句在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT 用于返回唯一不同的值。
语法:使用DISTINCT 关键词如果要从"Company" 列中选取所有的值,我们需要使用SELECT 语句:现在,在结果集中,"W3School" 仅被列出了一次。
3. WHERE 子句如需有条件地从表中选取数据,可将WHERE 子句添加到SELECT 语句。
语法引号的使用请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值,请不要使用引号。
文本值:数值:5. ORDER BY 语句ORDER BY语句用于对结果集进行排序实例4以逆字母顺序显示公司名称,并以数字顺序显示顺序号:6. INSERT INTO 语句INSERT INTO 语句用于向表格中插入新的行。
语法我们也可以指定所要插入数据的列:SQL 语句:SQL 语句:7. DELETE 语句DELETE 语句用于删除表中的行。
语法删除某行"Fred Wilson" 会被删除:删除所有行可以在不删除表的情况下删除所有的行。
这意味着表的结构、属性和索引都是完整的:1.SQL AVG() 语法例子1现在,我们希望计算"OrderPrice" 字段的平均值。
我们使用如下SQL 语句:例子2现在,我们希望找到OrderPrice 值高于OrderPrice 平均值的客户。
我们使用如下SQL 语句:2.SQL COUNT() 函数COUNT() 函数返回匹配指定条件的行数。
SQL基本语句及示例1 . SQL SELECT 语句SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法以及:2. SQL SELECT DISTINCT 语句在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT 用于返回唯一不同的值。
语法:使用DISTINCT 关键词如果要从"Company" 列中选取所有的值,我们需要使用SELECT 语句:现在,在结果集中,"W3School" 仅被列出了一次。
3. WHERE 子句如需有条件地从表中选取数据,可将WHERE 子句添加到SELECT 语句。
语法引号的使用请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值,请不要使用引号。
文本值:数值:5. ORDER BY 语句ORDER BY语句用于对结果集进行排序实例4以逆字母顺序显示公司名称,并以数字顺序显示顺序号:6. INSERT INTO 语句INSERT INTO 语句用于向表格中插入新的行。
语法我们也可以指定所要插入数据的列:SQL 语句:SQL 语句:7. DELETE 语句DELETE 语句用于删除表中的行。
语法删除某行"Fred Wilson" 会被删除:删除所有行可以在不删除表的情况下删除所有的行。
这意味着表的结构、属性和索引都是完整的:1.SQL AVG() 语法例子1现在,我们希望计算"OrderPrice" 字段的平均值。
我们使用如下SQL 语句:例子2现在,我们希望找到OrderPrice 值高于OrderPrice 平均值的客户。
我们使用如下SQL 语句:2.SQL COUNT() 函数COUNT() 函数返回匹配指定条件的行数。
常⽤SQL语句总结⼀、检索数据1、检索单个列SELECT prod_name FROM Products;该语句利⽤ SELECT 语句从 Products 表中检索⼀个名为 prod_name的列。
所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中检索数据。
2、检索多个列要想从⼀个表中检索多个列,仍然使⽤相同的 SELECT 语句。
唯⼀的不同是必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。
在选择多个列时,⼀定要在列名之间加上逗号,但最后⼀个列名后不加。
如果在最后⼀个列名后加了逗号,将出现错误。
SELECT prod_id, prod_name, prod_price FROM Products;3、检索所有列SELECT*FROM Products;4、检索不同的值SELECT DISTINCT vend_id FROM Products;SELECT DISTINCT vend_id 告诉 DBMS 只返回不同(具有唯⼀性)的vend_id ⾏(如果此列多⾏数据⼀样,则只返回⼀⾏)。
如果使⽤DISTINCT 关键字,它必须直接放在列名的前⾯。
注意:不能部分使⽤ DISTINCTDISTINCT 关键字作⽤于所有的列,不仅仅是跟在其后的那⼀列。
例如,你指定 SELECT DISTINCT vend_id, prod_price,除⾮指定的两列完全相同,否则所有的⾏都会被检索出来。
5、限制结果各种数据库中的这⼀ SQL 实现并不相同。
(1)在 SQL Server 和 Access 中使⽤ SELECT 时,可以使⽤ TOP 关键字来限制最多返回多少⾏。
SELECT TOP5 prod_name FROM Products;上⾯代码使⽤ SELECT TOP 5 语句,只检索前 5 ⾏数据。
(2)如果你使⽤的是 DB2,很可能习惯使⽤下⾯这⼀ DBMS 特定的 SQL 语句。
sql常用语句大全以下是SQL中常用的语句:1. 查询语句:用于从数据库中检索数据。
- SELECT语句:用于从表中选择数据。
- FROM语句:用于从表中选择数据。
- WHERE语句:用于筛选数据。
- ORDER BY语句:用于排序数据。
- BY语句:用于对查询结果进行分组和排序。
2. 更新语句:用于更新数据库中的数据。
- UPDATE语句:用于在表中更新数据。
- WHERE语句:用于指定更新条件。
- SET语句:用于更新数据。
3. 删除语句:用于在数据库中删除数据。
- DELETE语句:用于从表中删除数据。
- WHERE语句:用于指定删除条件。
4. 创建语句:用于创建数据库、表、索引等。
-CREATE TABLE语句:用于创建一个表。
- AS语句:用于为表命名并提供别名。
- CONSTRAINT语句:用于为表创建约束条件。
5. 插入语句:用于向数据库中插入数据。
-INSERT INTO语句:用于向表中插入数据。
- VALUES语句:用于指定插入的数据。
6. 数据定义语句:用于定义数据库中的数据模型。
- PRIMARY KEY语句:用于为表创建主键。
- FOREIGN KEY语句:用于为表创建外键。
- KEY语句:用于为表创建索引。
7. 查询优化语句:用于优化查询性能。
- ANSI JOIN语句:用于连接两个表。
- NOT NULL语句:用于指定字段是否为非空。
- UNIQUE KEY语句:用于指定字段是否唯一。
8. 视图语句:用于简化复杂的查询。
- 视图定义语句:用于定义视图。
- 视图查询语句:用于查询视图中的数据。
9. 存储过程语句:用于执行复杂的操作并将结果存储回数据库中。
- 存储过程定义语句:用于定义存储过程。
- 存储过程执行语句:用于执行存储过程。
以上是SQL中常用的语句列表,SQL语句的使用可以极大地提高数据库的性能和灵活性。
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就沒問題了。