百度
360搜索
搜狗搜索

数据库基础语句,数据库常用sql语句有哪些详细介绍

本文目录一览: 数据库常用sql语句有哪些

数据库常用sql语句有哪些
  SQL语句有哪些?SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,下文我为大家分享的就是SQL的常用语句,仅供参考!
  50个常用的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#,score
  from SC where C#='002') b
  where a.score>b.score and a.s#=b.s#;
  2、查询平均成绩大于60分的同学的学号和平均成绩;
  select S#,avg(score)
  from sc
  group 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#,Sname
  4、查询姓“李”的老师的个数;
  select count(distinct(Tname))
  from Teacher
  where Tname like '李%';
  5、查询没学过“叶平”老师课的同学的学号、姓名;
  select Student.S#,Student.Sname
  from Student
  where 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#,Sname
  from Student
  where 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#,Sname

  from Student

  where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

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

  select Student.S#,Student.Sname

  from Student,SC

  where 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#,Sname

  from Student,SC

  where 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_2

  where 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 SC

  from course ,Teacher

  where 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 t

  GROUP 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 R

  WHERE L.C# = R.C# and

  L.score = (SELECT MAX(IL.score)

  FROM SC AS IL,Student AS IM

  WHERE L.C# = IL.C# and IM.S#=IL.S#

  GROUP BY IL.C#)

  AND

  R.Score = (SELECT MIN(IR.score)

  FROM SC AS IR

  WHERE R.C# = IR.C#

  GROUP BY IR.C#

  );

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

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

  ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数

  FROM SC T,Course

  where t.C#=course.C#

  GROUP BY t.C#

  ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC

  20、查询如下课程平均成绩和及格率的百分数(用"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 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 SC

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

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

  FROM SC AS T,Course AS C ,Teacher AS Z

  where T.C#=C.C# and C.T#=Z.T#

  GROUP BY C.C#

  ORDER BY AVG(Score) DESC

  22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)

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

  SELECT DISTINCT top 3

  SC.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 T1

  ON SC.S# = T1.S# AND T1.C# = '001'

  LEFT JOIN SC AS T2

  ON SC.S# = T2.S# AND T2.C# = '002'

  LEFT JOIN SC AS T3

  ON SC.S# = T3.S# AND T3.C# = '003'

  LEFT JOIN SC AS T4

  ON SC.S# = T4.S# AND T4.C# = '004'

  WHERE student.S#=SC.S# and

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

  NOT IN

  (SELECT

  DISTINCT

  TOP 15 WITH TIES

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

  FROM sc

  LEFT JOIN sc AS T1

  ON sc.S# = T1.S# AND T1.C# = 'k1'

  LEFT JOIN sc AS T2

  ON sc.S# = T2.S# AND T2.C# = 'k2'

  LEFT JOIN sc AS T3

  ON sc.S# = T3.S# AND T3.C# = 'k3'

  LEFT JOIN sc AS T4

  ON 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,Course

  where SC.C#=Course.C#

  GROUP BY SC.C#,Cname;

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

  SELECT 1+(SELECT COUNT( distinct 平均成绩)

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

  FROM SC

  GROUP BY S#

  ) AS T1

  WHERE 平均成绩 > T2.平均成绩) as 名次,

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

  FROM (SELECT S#,AVG(score) 平均成绩

  FROM SC

  GROUP BY S#

  ) AS T2

  ORDER BY 平均成绩 desc;

  25、查询各科成绩前三名的记录:(不考虑成绩并列情况)

  SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

  FROM SC t1

  WHERE score IN (SELECT TOP 3 score

  FROM SC

  WHERE 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 ,Student

  where 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)) as age

  from student

  where CONVERT(char(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,SC

  where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;

  34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数

  Select Sname,isnull(score,0)

  from Student,SC,Course

  where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='数据库'and score <60;

  35、查询所有学生的选课情况;

  SELECT SC.S#,SC.C#,Sname,Cname

  FROM SC,Student,Course

  where SC.S#=Student.S# and SC.C#=Course.C# ;

  36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;

  SELECT distinct student.S#,student.Sname,SC.C#,SC.score

  FROM student,Sc

  WHERE 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,score

  from Student,SC,Course C,Teacher

  where 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 where A.Score=B.Score and A.C# <>B.C# ;

  43、查询每门功成绩最好的前两名

  SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

  FROM SC t1

  WHERE score IN (SELECT TOP 2 score

  FROM SC

  WHERE t1.C#= C#

  ORDER BY score DESC

  )

  ORDER BY t1.C#;

  44、统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列

  select C# as 课程号,count(*) as 人数

  from sc

  group by C#

  order by count(*) desc,c#

  45、检索至少选修两门课程的学生学号

  select S#

  from sc

  group by s#

  having count(*) > = 2

  46、查询全部学生都选修的课程的课程号和课程名

  select C#,Cname

  from Course

  where C# in (select c# from sc group by c#)

  47、查询没学过“叶平”老师讲授的任一门课程的学生姓名

  select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');

  48、查询两门以上不及格课程的同学的学号及其平均成绩

  select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;

  49、检索“004”课程分数小于60,按分数降序排列的同学学号

  select S# from SC where C#='004'and score <60 order by score desc;

  50、删除“002”同学的“001”课程的成绩

  delete from Sc where S#='001'and C#='001';

;
</score;

阅读更多 >>>  零基础自学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#,score
  from SC where C#='002') b
  where a.score>b.score and a.s#=b.s#;
  2、查询平均成绩大于60分的同学的学号和平均成绩;
  select S#,avg(score)
  from sc
  group 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#,Sname
  4、查询姓“李”的老师的个数;
  select count(distinct(Tname))
  from Teacher
  where Tname like '李%';
  5、查询没学过“叶平”老师课的同学的学号、姓名;
  select Student.S#,Student.Sname
  from Student
  where 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#,Sname
  from Student
  where 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#,Sname

  from Student

  where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

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

  select Student.S#,Student.Sname

  from Student,SC

  where 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#,Sname

  from Student,SC

  where 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_2

  where 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 SC

  from course ,Teacher

  where 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 t

  GROUP 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 R

  WHERE L.C# = R.C# and

  L.score = (SELECT MAX(IL.score)

  FROM SC AS IL,Student AS IM

  WHERE L.C# = IL.C# and IM.S#=IL.S#

  GROUP BY IL.C#)

  AND

  R.Score = (SELECT MIN(IR.score)

  FROM SC AS IR

  WHERE R.C# = IR.C#

  GROUP BY IR.C#

  );

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

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

  ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数

  FROM SC T,Course

  where t.C#=course.C#

  GROUP BY t.C#

  ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC

  20、查询如下课程平均成绩和及格率的百分数(用"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 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 SC

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

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

  FROM SC AS T,Course AS C ,Teacher AS Z

  where T.C#=C.C# and C.T#=Z.T#

  GROUP BY C.C#

  ORDER BY AVG(Score) DESC

  22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)

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

  SELECT DISTINCT top 3

  SC.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 T1

  ON SC.S# = T1.S# AND T1.C# = '001'

  LEFT JOIN SC AS T2

  ON SC.S# = T2.S# AND T2.C# = '002'

  LEFT JOIN SC AS T3

  ON SC.S# = T3.S# AND T3.C# = '003'

  LEFT JOIN SC AS T4

  ON SC.S# = T4.S# AND T4.C# = '004'

  WHERE student.S#=SC.S# and

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

  NOT IN

  (SELECT

  DISTINCT

  TOP 15 WITH TIES

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

  FROM sc

  LEFT JOIN sc AS T1

  ON sc.S# = T1.S# AND T1.C# = 'k1'

  LEFT JOIN sc AS T2

  ON sc.S# = T2.S# AND T2.C# = 'k2'

  LEFT JOIN sc AS T3

  ON sc.S# = T3.S# AND T3.C# = 'k3'

  LEFT JOIN sc AS T4

  ON 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,Course

  where SC.C#=Course.C#

  GROUP BY SC.C#,Cname;

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

  SELECT 1+(SELECT COUNT( distinct 平均成绩)

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

  FROM SC

  GROUP BY S#

  ) AS T1

  WHERE 平均成绩 > T2.平均成绩) as 名次,

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

  FROM (SELECT S#,AVG(score) 平均成绩

  FROM SC

  GROUP BY S#

  ) AS T2

  ORDER BY 平均成绩 desc;

  25、查询各科成绩前三名的记录:(不考虑成绩并列情况)

  SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

  FROM SC t1

  WHERE score IN (SELECT TOP 3 score

  FROM SC

  WHERE 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 ,Student

  where 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)) as age

  from student

  where 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,SC

  where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;

  34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数

  Select Sname,isnull(score,0)

  from Student,SC,Course

  where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='数据库'and score<60;

  35、查询所有学生的选课情况;

  SELECT SC.S#,SC.C#,Sname,Cname

  FROM SC,Student,Course

  where SC.S#=Student.S# and SC.C#=Course.C# ;

  36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;

  SELECT distinct student.S#,student.Sname,SC.C#,SC.score

  FROM student,Sc

  WHERE 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,score

  from Student,SC,Course C,Teacher

  where 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 where A.Score=B.Score and A.C# <>B.C# ;

  43、查询每门功成绩最好的前两名

  SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

  FROM SC t1

  WHERE score IN (SELECT TOP 2 score

  FROM SC

  WHERE t1.C#= C#

  ORDER BY score DESC

  )

  ORDER BY t1.C#;

  44、统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列

  select C# as 课程号,count(*) as 人数

  from sc

  group by C#

  order by count(*) desc,c#

  45、检索至少选修两门课程的学生学号

  select S#

  from sc

  group by s#

  having count(*) > = 2

  46、查询全部学生都选修的课程的'课程号和课程名

  select C#,Cname

  from Course

  where C# in (select c# from sc group by c#)

  47、查询没学过“叶平”老师讲授的任一门课程的学生姓名

  select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');

  48、查询两门以上不及格课程的同学的学号及其平均成绩

  select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score<60 group="" by="" having="">2)group by S#;

  49、检索“004”课程分数小于60,按分数降序排列的同学学号

  select S# from SC where C#='004'and score<60 order by score desc;

  50、删除“002”同学的“001”课程的成绩

  from Sc where S#='001'and C#='001';

  一、SQL语言简介

  1、SQL语言简介

  SQL是结构化查询语言(Structured Query Language),是用于访问和处理数据库的标准的计算机语言。

  SQL语言的功能如下:

  A、SQL面向数据库执行查询

  B、SQL可从数据库取回数据

  C、SQL可在数据库中插入新的记录

  D、SQL可更新数据库中的数据

  E、SQL可从数据库删除记录

  F、SQL可创建新数据库

  G、SQL可在数据库中创建新表

  H、SQL可在数据库中创建存储过程

  I、SQL可在数据库中创建视图

  J、SQL可以设置表、存储过程和视图的权限

  SQL是一门ANSI的标准计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、MySQL、Sybase以及其他数据库系统。

  每一种数据库有自己版本的SQL语言,但是为了与ANSI标准相兼容,SQL必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE等等)。

  除了SQL标准之外,大部分SQL数据库程序都拥有自己的私有扩展。

  2、SQL语言分类

  SQL语言分为数据定义语言、数据控制语言、数据操作语言、数据查询语言,分别实现对数据库数据操作。

  二、SQL语言基础

  1、数据定义语言(DDL)

  DDL:Data Definition Language

  用于定义和管理数据对象,包括数据库、数据表、函数、视图、索引、触发器等。例如:CREATE、DROP、ALTER等语句。

  create table student

  (

  sid INT,

  sname var20)

  );

  alter table student add age int default 20;

   student;

  drop database student;

  2、数据控制语言(DCL)

  DCL:Data Control Language

  用来管理数据库的语言,包含授权用户访问、拒绝用户访问、撤销授予的权限。例如:GRANT、DENY、REVOKE、COMMIT、ROLLBACK等语句。

  创建用户

  create user ‘wang’@‘localhost’ identified by ‘a1!’;

  权限设置

  grant select on db.student to ‘wang’@‘localhost’;

  撤销权限

  revoke select on db.student from ‘wang’@‘localhost’;

  3、数据操作语言(DML)

  DML:Data Manipulation Language

  用于操作数据库对象中所包含的数据,增、删、改。例如:INSERT、DELETE、UPDATE语句。

  4、数据查询语言(DQL)

  DQL:Data Query Language

  用于查询数据库对象中所包含的数据,能够进行单表查询、连接查询、嵌套查询,以及集合查询等各种复杂程度不同的数据库查询,并将数据返回到客户机中显示。例如:SELECT语句。

  三、常量和变量

  1、常量

  A、字符常量

  字符串常量使用单引号或双引号,数值常量不用加引号。

  如果字符串常量中需要换行、有单引号、双引号 % _

  前面需要加转义字符

   换行

  ’ 一个单引号

  ” 一个双引号

   一个 如果没有转义字符 就认为是一个转义字符

  % 一个% 如果没有转义字符就认为这是一个通配符

  _ 一个_ 如果没有转移字符 就认为是一个通配符

  select ‘hanli’gang001’

  select ‘han ligang001’

  select ‘han ligang001’

  select “han"ligang001”

  select “韩立刚001”

  B、数值常量

  数值常量不用添加引号,

  select 100+100+200

  C、布尔常量

  布尔型常量取值 true 和 false

  在SQL中使用1和0表示

  select true,false

  在表达式中

  select 100>200

  select 100<200

  2、变量

  用户自定义变量使用@开始,使用set给变量赋值。

  set @name=‘孙悟空’;

  select @name;

  select * from student;

   into student values (6,‘孙悟空’,20);

   into student values (8,@name,20);

  set @sid=9,@nid=10

   into student values (@sid,@name,20);

  select @sid+@nid;

  set @sid=@sid+1;

  select @sid;

  set @sname3=(select sname from student where sid=9);

  select @sname3;

  3、系统变量

  系统变量分为全局系统变量和会话系统变量。

  全局系统变量:针对所有默认设置

  会话系统变量:针对当前用户生效,用户登录MySQL会使用全局系统变量,如果会话中更改了变量值,使用更改后的值,不过只针对当前用户生效。

  show variables 显示会话系统变量

  show global variables 显示全局系统变量

  show session variables 显示会话系统变量

  show global variables like ‘sql_select_limit’;使用通配符显示匹配的变量设置

  show session variables like ‘sql_select_limit’;系统变量使用@@标识

  select @@global.sql_select_limit 查看某个全局系统变量设置

  select @@session.sql_select_limit 查看某个会话系统变量设置

  set @@session.sql_select_limit=2 设置会话系统变量

  全局系统变量需要在/etc/my.cnf配置文件中修改。
</score;

阅读更多 >>>  倒角c1什么意思

sql语句大全基础汇总sql语句大全基础汇总表

在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQLServer等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。在MySQL中,数据库称为database,数据表称为table,一个数据库软件中有多个数据库,每个数据库中又可以有多个数据表,最终,数据是存储在数据表中。数据库和数据表之间的关系可以用下面这个图来表示,对于一个数据库来说,有多个数据表。在正式开始写SQL语句之前,需要说明两点。SQL语句不区分大小写。每条SQL语句以分号结尾。这里通过MySQLWorkbench来写SQL代码,在Workbench中,执行一条SQL语句的方式有两种。一种是通过上方快捷菜单中的按钮。另一种是通过快捷键Ctrl+Enter。了解了这之后,接下来介绍一些常见的命令,分两部分:数据库常用命令和数据表常用命令。一、数据库常用SQL语句1、查看有哪些数据库showdatabases;2、创建数据库createdatabaseTestdb;创建一个名为Testdb的数据库。3、创建数据库并指定编码格式有些时候,为了防止中文乱码,创建数据库的时候需要指定编码格式。createdatabasemydbcharactersetutf8mb4;4、使用某个数据库usemydb;使用mydb这个数据库,或者进入mydb这个数据库。5、删除数据库dropdatabaseTestdb;删除Testdb这个数据库。二、数据表常用SQL语句1、查看有哪些数据表进入某个数据库之后,想查看有哪些数据表,SQL语句为:usemydb;showtables;mydb是一个新建的数据库,所以自然是没有数据表。2、创建数据表建表SQL语句格式为:createtable;说明:每个字段以逗号分隔,最后一个字段不加逗号。例如,给定一个学员信息表,如下表所示。根据以上表格,建表SQL语句如下。createtablestuInfonotnull,gendervarchar,birthdatedate,ageint,cityvarchar);以上语句中,primarykey表示主键,意思是这个字段作为记录的唯一标识,就像每个人的身份证号,都是唯一确定的。3、查看表结构查看表结构的SQL命令为:describestuinfo;执行该命令会显示表stuinfo的基本结构,例如有哪些字段,每个字段是什么类型,谁是主键等。4、修改数据表修改数据表通过drop子句进行,比如,建完表后,想增加一个字段,SQL语句的格式为:altertableaddvarchar;想在指定位置增加一个字段,例如,在某个字段后增加一个字段,SQL语句的格式为:altertableaddvarcharafter;如果在某个字段之前增加字段,用before即可。例如,在字段age后增加一个字段major,SQL语句为:altertablestuinfoaddmajorvarcharafterage;执行这个命令,再通过describe查看表结构,会发现表中多了一个字段major。如果要删除major这个字段,通过drop子句,SQL语句为:altertablestuinfodropmajor;5、重命名表重命名表通过alter+rename来实现,SQL语句格式为:altertablerename;这里为了不影响之前创建的表,我们创建一个新表,SQL语句如下。createtablestuInfoTest);以上创建一个名为stuInfoTest的表,现在想将它的名称改成stuinfotest1,SQL语句为:altertablestuinfotestrenamestuinfotest1;6、删除数据表删除数据表通过drop进行,SQL语句格式为:droptable;例如,删除数据表stuinfotest1,SQL语句为:droptablestuinfotest1;7、插入记录此时的表stuinfo是空的,没有数据,我们要向表中插入记录。插入记录通过insertinto进行,SQL语句格式为:insertintovalues;例如,向表stuinfo插入一条记录,SQL语句为:insertintostuinfovalues;注意:上方是一条SQL语句,为了可读性换行,记住一条SQL语句默认以分号结尾。如果需要一次性插入多条记录,SQL语句格式为:insertintovalues,,;例如,向表stuinfo再插入两条记录,SQL语句为:insertintostuinfovalues,;注意:如果设置了主键,插入记录的主键字段是不能重复的,也就是不能插入重复的记录。作业:大家可以按照上述方法将上面的学员信息表中的所有记录都插入表stuinfo中。8、查询记录有了数据之后,就可以查询记录了,查询记录通过select子句进行。例如,想查询表stuinfo中的所有记录,SQL语句为:select*fromstuinfo;执行之后,就可以看到表stuinfo中的所有记录了。如果想查询符合某个条件的记录,就要用到where子句了,SQL格式为:select*fromwhere字段名=某个值;例如,想查询stuid为20161001的记录,SQL语句为:select*fromstuinfowherestuid=20161001;9、删除记录删除记录通过delete子句进行,SQL语句格式为:deletefromwhere字段名=某个值;例如,想删除stuid为20161002的记录,SQL语句为:deletefromstuinfowherestuid=20161002;10、修改记录修改记录通过update子句进行,update就是更新的意思,SQL语句格式为:updateset字段1=某个值where字段2=某个值;例如,想将学号为20161001的记录的姓名更新为Jack,SQL语句为:updatestuinfosetstuname=Jackwherestuid=20161001;以上,就是MySQL中的基本SQL语句。

SQL 数据库中常用的一些语句。。。归类下

--通配符
1.%:代表任意多个字符 name LIKE '李%'
2._(下划线):代表任意一个字符
3.[]:指定范围的一个字符 如:Sex LIKE '[男女]' StuID LIKE [0-9][0-9]
4.IN:限制范围 StuID IN(0,1,2,3,4,5,6,7,8,9)
5.[^]:不在指定范围里的一个字符
6.age>=0 and age<=100 age BETWEEN 0 AND 100
--插入一行数据
INSERT INTO 新表(列名)
VALUES (值)
比如:INSERT INTO Student(StuName,Sex,Age,Email)
VALUES ('Tom','男',20,'tom@hotmail.com','starRoad 30#')
--插入多行数据有3种方法
--第一种(相当于表复制,必须要有这个新表,仅仅复制表中的数据,允许重复)
INSERT INTO 新表(列名)
SELECT (旧表列)
FROM 旧表
比如:INSERT INTO newStu1
SELECT StuID,StuName,Sex
FROM Student
--第二种(相当于表复制,自动建表,会将旧表中的结构也一起复制,但主键不会带过来)
SELECT (旧表列名)
INTO 新表
FROM 旧表
比如:SELECT StuID,StuName,Sex
INTO newStu2
FROM Student
--特列(写入标识列)
SELECT INDENTITY(int,1,1) AS StuID,StuName,Sex
INTO newStu3
FROM Student
--第三种(相当于把多个值手写插入到表中)
INSERT INTO 新表名(列名)
SELECT 值,值,值... UNION
SELECT 值,值,值... UNION
SELECT 值,值,值...
比如:INSERT INTO Student
SELECT 'jack','男',24,'jack@126.com','starRoad 100#' UNION
SELECT 'tom','女',23,'tom@hotmail.com','starRoad 198#'
--更新
UPDATE 表名 SET 列名=值 WHERE 更新条件
--删除
DELETE FROM 表名 WHERE 删除条件
TRUNCATE TABLE 表名
--查询
SELECT 列名
FROM 表名
WHERE 查询条件表达式
ORDER BY 排序的列名(ASC或DESC)
--对列更名方式有3种
--第一种
SELECT StuID AS 学号,StuName AS 姓名, Sex AS 性别
FROM Student
--第二种
SELECT 学号=StuID,姓名=StuName,性别=Sex
FROM Student
--第三种
SELECT StuID 学号,StuName 姓名, Sex 性别
FROM Student
这些都是最基本的,稍微复杂点的像内连接查询,外连接,交叉查询,sql知识点很多,多理解就OK了,很简单的。加油!
--通配符
1.%:代表任意多个字符
name
LIKE
'李%'
2._(下划线):代表任意一个字符
3.[]:指定范围的一个字符
如:Sex
LIKE
'[男女]'
StuID
LIKE
[0-9][0-9]
4.IN:限制范围
StuID
IN(0,1,2,3,4,5,6,7,8,9)
5.[^]:不在指定范围里的一个字符
6.age>=0
and
age<=100
age
BETWEEN
0
AND
100
--插入一行数据
INSERT
INTO
新表(列名)
VALUES
(值)
比如:INSERT
INTO
Student(StuName,Sex,Age,Email)
VALUES
('Tom','男',20,'tom@hotmail.com','starRoad
30#')
--插入多行数据有3种方法
--第一种(相当于表复制,必须要有这个新表,仅仅复制表中的数据,允许重复)
INSERT
INTO
新表(列名)
SELECT
(旧表列)
FROM
旧表
比如:INSERT
INTO
newStu1
SELECT
StuID,StuName,Sex
FROM
Student
--第二种(相当于表复制,自动建表,会将旧表中的结构也一起复制,但主键不会带过来)
SELECT
(旧表列名)
INTO
新表
FROM
旧表
比如:SELECT
StuID,StuName,Sex
INTO
newStu2
FROM
Student
--特列(写入标识列)
SELECT
INDENTITY(int,1,1)
AS
StuID,StuName,Sex
INTO
newStu3
FROM
Student
--第三种(相当于把多个值手写插入到表中)
INSERT
INTO
新表名(列名)
SELECT
值,值,值...
UNION
SELECT
值,值,值...
UNION
SELECT
值,值,值...
比如:INSERT
INTO
Student
SELECT
'jack','男',24,'jack@126.com','starRoad
100#'
UNION
SELECT
'tom','女',23,'tom@hotmail.com','starRoad
198#'
--更新
UPDATE
表名
SET
列名=值
WHERE
更新条件
--删除
DELETE
FROM
表名
WHERE
删除条件
TRUNCATE
TABLE
表名
--查询
SELECT
列名
FROM
表名
WHERE
查询条件表达式
ORDER
BY
排序的列名(ASC或DESC)
--对列更名方式有3种
--第一种
SELECT
StuID
AS
学号,StuName
AS
姓名,
Sex
AS
性别
FROM
Student
--第二种
SELECT
学号=StuID,姓名=StuName,性别=Sex
FROM
Student
--第三种
SELECT
StuID
学号,StuName
姓名,
Sex
性别
FROM
Student
这些都是最基本的,稍微复杂点的像内连接查询,外连接,交叉查询,sql知识点很多,多理解就OK了,很简单的。加油!
一、基础
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2... from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col....)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like '%value1%' ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in '具体数据库' where 条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in ('值1','值2','值4','值6')
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

阅读更多 >>>  cstring类,如何从CString类型的字符串中取出数字

mysql常用语句

MySql常用操作SQL语句汇总插入记录通过insertinto进行,SQL语句格式为:例如,向表stuinfo插入一条记录,SQL语句为:注意:上方是一条SQL语句,为了可读性换行,记住一条SQL语句默认以分号结尾。
MySQL的常见操作在这里先做一下总结,已经整合到代码里面,经过检验无误。
计算年数如果您想通过生日来计算这个人的年龄,可以用以下的语句来实现:SELECTDATE_FORMAT(FROM_DAYS(TO_DAYS(now())-TO_DAYS(@dateofbirth)),%Y)+0;两个时间的差取得两个datetime值的差。
mysql数据库中最常用的几个命令1、databasename;选择数据库dropdatabasename直接删除数据库,不提醒showtables;显示表describetablename;表的详细描述select中加上distinct去除重复字段mysqladmindropdatabasename删除数据库前,有提示。
2、备份MySQL数据库的命令mysqldump-hhostname-uusername-ppassworddatabasenamebackupfile.sql备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
3、选择访问某个数据库;SHOWtables;找出当前的MySQL数据库包含什么表;DESCRIBEtablename;列出一个表的结构;SHOWINDEXFROMtablename;显示表中的索引信息。
4、您要问那些数据库的命令?是查询?操作还是管理?select,update,insert,deletealter,create,drop,locktable还有管理命令,mysql,oracle,sqlserver数据库的命令是不一样的。
mysql语句怎么写(有两个表a和b,b包含a所有的字段,想将b的某一条记录...SELECTINTO语句SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。
有两种方法,一种方法使用mysql的checktable和repairtable的sql语句,另一种方法是使用MySQL提供的多个myisamchk,isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
mysql无论如何也做不到用一条语句给两张表插入数据。理由:一个insert语句仅能在一个表中插入,这是语法的规定。
mysql删除语句mysql删除表的命令如下:在mysql中,可以利用“DORPTABLE”语句来删除数据表,通用语法格式“DROPTABLEtable_name;”;其中,“table_name”表示要被删除的数据表的名称,可以指定多个数据表名称,只要相互之间用逗号隔开即可。
可以使用UPDATE语句中的REPLACE函数来删除MySQL一列数据中的某个文字。
在MySQL中,可以使用DELETE语句来删除表的一行或者多行数据。MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。
删除数据库是将已经存在的数据库从磁盘空间中清除,数据库中的所有数据也全部被删除。基本语法格式:其中“db_name”是要删除的数据库名称,如果指定数据库名不存在,则删除出错。
如何选择合适的数据库解决方案?如果有强大的技术团队,关系型和非关系型数据库都可选择。一般来讲,非关系型数据库需要更多管理维护的时间。
(三)MySQL,Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。
虽然把上面的架构全部组合在一起可以形成一个强大的高可用,高负载的数据库系统,但是架构选择合适才是最重要的。混合架构虽然能够解决所有的场景的问题,但是也会面临更多的挑战,你以为的完美架构,背后其实有着更多的坑。
例如,如果你需要的是数据分析仓库,关系数据库可能不是一个适合的选择;如果你处理事务的应用要求严格的数据完整性和一致性,就不要考虑NoSQL了。不要重新发明轮子在过去的数十年,开源数据库技术迅速发展壮大。
本文首先讨论了基于第三范式的数据库表的基本设计,着重论述了建立主键和索引的策略和方案,然后从数据库表的扩展设计和库表对象的放置等角度概述了数据库管理系统的优化方案。
一定要对自己适用,不一定多高级,如果只是小型站,ACCESS就行了,再要求高点的,MYSQL。
15个MySQL常用基本SQL语句1、插入记录通过insertinto进行,SQL语句格式为:例如,向表stuinfo插入一条记录,SQL语句为:注意:上方是一条SQL语句,为了可读性换行,记住一条SQL语句默认以分号结尾。
2、MySQL的常见操作在这里先做一下总结,已经整合到代码里面,经过检验无误。
3、简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为张三的nickname字段和email字段。
4、ORDERBY日期;这条SQL语句使用了窗口函数(WindowFunction)中的SUM函数,通过ORDERBY子句指定按日期升序排序,然后使用窗口函数计算每日的月累计数,并在结果集中返回。最终的结果集会包含日期、日产量和月累计数三个字段。

数据库中增删改查的基本语句是什么?

常见如下:
进入mysql命令行: mysql -uroot -p;查看所有数据库: show databases;增加创建数据库: create database niu charset utf8;删除数据库: drop database niu;选择数据库: use databases。
查看所有表: show tables;查看创建数据库的语句:show create database databasename;查看创建表的语句:show create table tablename;查看表结构:desc tablenmae。
相关简介
mysql_stmt_fetch是函数名,mysql_stmt_fetch()返回结果集中的下一行。
仅能当结果集存在时调用它,也就是说,调用了能创建结果集的mysql_stmt_execute()之后,或当mysql_stmt_execute()对整个结果集即行缓冲处理后调用了mysql_stmt_store_result()。
使用mysql_stmt_bind_result()绑定的缓冲,mysql_stmt_fetch()返回行数据。对于当前列集合中的所有列,它将返回缓冲内的数据,并将长度返回到长度指针。
增:insert
删:delete
改:update
查询:select
增加
inster into 表名(字段1,字段2...) value(数据1, 数据2, .....)
数据库中增删改查基本语句:INSERT INTO,表名字段列表。
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。
当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。特别是关系型数据库已经成为目前数据库产品中最重要的一员。
80年代以来,几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,即使一些非关系数据库产品也几乎都有支持关系数据库的接口。
这主要是传统的关系型数据库可以比较好的解决管理和存储关系型数据的问题。随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理。

Oracle数据库基础知识:SELECT语句

Oracle数据库基础知识:SELECT语句
  SELECT语句是指用来查询、添加、 和删除数据库中数据的语句, 和删除数据库中数据的语句 , 它们 是 SELECT 、 INSERT 、 UPDATE 、 DELETE等. 下面是Oracle数据库基础知识——SELECT语句,希望对大家有所帮助!

  普通用户连接conn scott/tiger
  超级管理员连接 conn “sys/sys as sysdba”
  Disconnect 断开连接
  把SQL存到文件 save c:\1.txt
  Ed c:\1.txt编辑SQL语句
  @c:\1.txt运行SQL语句
  Desc emp描述EMP结构
  Select * from tab 查看该用户下大所有对象
  Show user显示当前用户
  书写SQL语句的原则
  大小写不敏感,但单引和双引内的大小写是敏感的。切记!
  关键字不能缩写
  可以分行书写,但关键字不能被跨行书写,单引内也不要跨行书写。
  一般每个子句是一行
  可以排版来增加可读性
  字符串用单引
  列的别名用双引
  SELECT语句
  1、 简单的Select语句
  Select * from table 不指定查询的字段
  Select attr1,attr2 from table指定查询某些字段
  Select attr1,attr2 from table where attr1=xxx查询符合条件的指定字段
  2、 使用算术表达式 + - / *
  表达式的运算是有优先级的,和程序中的一样,先乘除后加减,括号强制优先级.
  + - * /
  先乘除,后加减,括号强制优先级
  Select ename,12*sal+300 from emp;
  Select ename,12*(sal+300) from emp;
  3、 连接运算符 ||
  4、 使用字段别名 as
  别名的'使用原则
  1。区分同名列的名称
  2。非法的表达式合法化
  3。按照你的意愿显示列的名称
  4。特殊的别名要双引
  5。直接写列的后面
  6。使用as增加可读性
  5、 空值 is null
  Null值不等于0,也不等于空格。
  Null值是未赋值的值,不入索引。
  NULL是双刃剑,使用好了提高性能,你对它不了解,往往是错误的根源,切记!
  查询NULL值
  因为null不等于null,所以没有行被选出。未知不等于未知,无穷不等于无穷.
  6、去除重复行 distinct
  SELECT 语句显示重复的行。用DISTINCT语法来去掉重复的行。
  如果我们想去掉重复的行,我们需要distinct关键字。
  在ORACLE数据库的10G前版本,该语句需要排序才能去掉重复的行,而在10G中数据库并不需要
  排序,而是使用HASH算法来去掉重复的行,由于避免了排序,从而极大的提高了SQL语句的效率,
  因为10G的SQL内核改写了。效率更加的高。因为没有排序,所以输出也是无序的。
  7、查询结果排序 order by asc(desc)
  Where和order by 子句
  语法
  SELECT *|{[DISTINCT] column|expression [alias],...}
  FROM table
  [WHERE condition(s)]
  [order by column|expression| alias ];
  Where 一定要放在FROM 子句的后面。
  显示表的部分行和部分列,使用where子句过滤出想要的行
  Select deptno,ename from emp Where deptno=10;
  Order by 放在最后,用来排序显示结果
  不指明都是二进制排序,如果你想按照拼音,部首,笔画,法语等特殊的排序模式,请设定排序的环境
  变量,关于国家语言的支持问题我们再DBA体系结构中描述。
  默认是升序asc
  降序要指定desc
  8、比较运算符 > < (!= or <>) between and
  ? And运算
  Select ename,deptno,sal From emp Where deptno=30 and sal>1200;
  ENAME DEPTNO SAL
  ---------- ------ ----------
  ALLEN 30 1600
  WARD 30 1250
  MARTIN 30 1250
  BLAKE 30 2850
  TURNER 30 1500
  两个条件的交集,必须同时满足。
  ?in操作 not in
  含上下界
  In操作,穷举,据说穷举不能超过1000个值,我没有去验证。一般我们也不会穷举到1000个值,如
  果到1000请改写你的SQL。
  Select deptno,ename,sal from emp Where deptno in(10,20);
  9、模糊查询 like
  % 表示零或多个字符
  _ 表示一个字符
  对于特殊符号可使用ESCAPE 标识符来查找
  Like运算
  _ 通配一个,仅匹配一个字符,
  % 通配没有或多个字符
  10、逻辑运算符 or and not
  OR运算
  Select ename,deptno,sal From emp Where deptno=30 or sal>1200;
  ENAME DEPTNO SAL
  ---------- ------ ----------
  ALLEN 30 1600
  WARD 30 1250
  JONES 20 2975
  MARTIN 30 1250
  BLAKE 30 2850
  CLARK 10 2450
  KING 10 5000
  TURNER 30 1500
  JAMES 30 950
  FORD 20 3000
  MILLER 10 1300
  两个条件的并集,满足一个就可以。
  ? not运算
  Select ename,deptno,sal From emp Where ename not like 'T%';
  ENAME DEPTNO SAL
  ---------- ------ ----------
  SMITH 20 800
  ALLEN 30 1600

SQL数据库常用命令及语法举例

SQL Server数据库中的AS使用
下面是一些常用的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 * 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("别名") 获取统的计值,其它函数运用同上。
(5) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
4. 记录集对象的方法:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
参考资料
SQL常用命令.csdn[引用时间2017-12-30]

数据库中常用的sql语句有哪些

select
into
from语句
要求目标表table_4不存在,因为在插入时会自动创建表table_4,并将table_3中指定字段数据复制到table_4中。
可以考虑使用如下语句:
insert
into
dbo.table_4
(sname,
semail)
(select
sname,
semail
from
table_3);
1.检索数据
SELECT prod_nameFROM Products;
#检索单列
SELECT prod_id, prod_name, prod_priceFROMProducts;
#检索多列
SELECT * FROM Products;
#检索所有列
SELECT DISTINCTvend_id FROMProducts;
#检索不同的值
SELECTprod_name FROM Products LIMIT 5;
#返回不超过5行数据
SELECTprod_name FROM Products LIMIT 5 OFFSET 5;
#返回从第5行起的5行数据。LIMIT指定返回的行数,LIMIT带的OFFSET指定从哪儿开始。
2.排序检索数据
SELECTprod_name
FROMProducts
ORDER BYprod_name;
#排序数据
SELECT prod_id, prod_price, prod_name
FROMProducts
ORDER BY prod_price, prod_name;
#按多个列排序
SELECT prod_id, prod_price, prod_name
FROMProducts
ORDER BY 2, 3;
#按列位置排序,第三行表示先按prod_price, 再按prod_name进行排序
SELECT prod_id, prod_price, prod_name
FROMProducts
ORDER BY prod_priceDESC, prod_name;
#prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序
3.过滤数据
SELECT prod_name, prod_price
FROMProducts
WHERE prod_price< 10;
#检查单个值
SELECT prod_name, prod_price
FROMProducts
WHERE vend_id <> ‘DLL01’;
#不匹配检查
SELECT prod_name, prod_price
FROMProducts
WHERE prod_priceBETWEEN 5 AND 10;
#范围值检查
SELECT cust_name
FROMCUSTOMERS
WHERE cust_emailIS NULL;
#空值检查
4.高级数据过滤
SELECTprod_id, prod_price, prod_name
FROMProducts
WHERE vend_id = ‘DLL01’ANDprod_price <= 4;
#AND操作符
SELECTprod_name, prod_price
FROMProducts
WHEREvend_id=’DLL01’ OR vend_id=’BRS01’;
#OR操作符
SELECTprod_name, prod_price
FROMProducts
WHERE (vend_id = ’DLL01’ORvend_id=’BRS01’)
ANDprod_price >= 10;
#求值顺序 AND的优先级高于OR
SELECTprod_name, prod_price
FROMProducts
WHERE vend_idIN (‘DLL01’,’BRS01’)
ORDER BY prod_name;
#IN操作符
SELECT prod_name
FROMProducts
WHERE NOTvend_id = ‘DLL01’
ORDER BY prod_name;
#NOT 操作符
SELECT prod_name
FROMProducts
WHEREvend_id <> ‘DLL01’
ORDER BY prod_name;
#NOT 操作符

网站数据信息

"数据库基础语句,数据库常用sql语句有哪些"浏览人数已经达到17次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:数据库基础语句,数据库常用sql语句有哪些的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!