SQL
结构化查询语言)(StructuredQueryLanguage结构化查询语言)SQL特点:特点:1、一体化;、一体化;2、高度非过程化;、高度非过程化;3、语言简洁,易学易用、语言简洁,,数据查询SELECT,数据操纵INSERT、UPDATE、DELETE,、、,数据定义CREATE、ALTER、DROP,、、,数据控制GRANT、REVOKE;、;4、两种使用方式,统一的语法结构:SQL既是交、两种使用方式,统一的语法结构:互式语言,又能嵌入式语言。互式语言,又能嵌入式语言。SQL-SELECT语法格式:语法格式:SELECT字段名FROM表WHERE条件
GROUPBY分组HAVING分组后的筛选ORDERBY排序TO/INTO查询去向一、基本查询1、查询全部字段、Select*fromstudent2、查询指定字段、Select,专业fromstudent,专业3、查询经过计算的值、查询全体学生的,和年龄:查询全体学生的,和年龄:Select,year(date())-year(出生日期,出生日期)出生日期as年龄fromstudent4、消除取值重复的行、查询学生中的所有专业:查询学生中的所有专业:Selectdistinct专业fromstudent不消除重复:不消除重复:selectall专业fromstudent二、条件查询
1、!=、<>、#不等于、、、不等于年后出生的学生的、查询1987年后出生的学生的、及出生日期:生日期:Select,出生日期fromstudent;,出生日期Where出生日期出生日期>{^1987-12-31}出生日期)>1987或:Whereyear(出生日期出生日期查询计算机应用专业的男生的全部信息:查询计算机应用专业的男生的全部信息:Select*fromstudentwhere专业="计算机应用专业计算机应用"计算机应用and性别男"性别="男2、确定范围、Select*fromstudent;where出生日期>={^1988-1-1}and出生日期<={^1988-12-31}Select*fromstudent;where出生日期between{^1988-1-1}and{^1988-12-31}3、确定集合、查询“外语”查询“外语”和“计算机”专业的学生的信息:计算机”专业的学生的信息:Select*fromstudent;
where专业外语"or专业计算机or专业专业="外语专业="计算机计算机"外语="会计会计"会计Select*fromstudent;where专业in("外语,"计算机会计外语"计算机会计")计算机","会计外语4、字符匹配、查询“查询“张”姓同学的信息:姓同学的信息:Select*fromstudentwherelike"张%"张Select*fromstudentwherelike"张__"张5、涉及空值的查询、查找没有联系电话的学生:查找没有联系电话的学生:Select*fromstudentwhere联系电话isnull三、排序查询先按专业升序,先按专业升序,再按出生日期降序输出男生的姓名,性别,专业和出生日期:性别,专业和出生日期:Select,性别专业,出生日期fromstudent;性别,专业出生日期性别专业Where性别男";性别="男Orderby专业出生日期desc专业,出生日期
或:Select专业,year(date())-year(出生日期年,专业出生日期)专业出生日期龄fromstudent;Where性别男";性别="男Orderby专业asc,3desc四、使用集函数主要有:主要有:[DISTINCT|ALL]统计记录的个数:统计记录的个数:COUNT(*)统计一列中值的个数:列名)统计一列中值的个数:COUNT(列名列名此列必须是数值型):SUM(列名列名)计算一列值的总和(此列必须是数值型此列必须是数值型列名
计算一列值的平均值此列必须是数值型此列必须是数值型):AVG(列名列名)计算一列值的平均值(此列必须是数值型列名
求一列中的最大值:列名)求一列中的最大值:MAX(列名中的最大值列名求一列中的最小值:列名)求一列中的最小值:MIN(列名列名查询学生表中的专业数:查询学生表中的专业数:Selectcount(distinct专业专业数fromstudent专业)
“”的平均分和最高分:计算成绩表中课程号为101”的平均分和最高分:
Selectavg(成绩平均分成绩)成绩)最高分;成绩平均分,max(成绩最高分成绩From成绩成绩;Where课程号课程号="101"五、对查询结果分组求每个专业的学生人数:个专业的学生人数:Select专业专业,count(as人数)人数;Fromstudent;Groupby专业求学生表中的男生数和女生数:求学生表中的男生数和女生数Select性别性别,count(as人数)人数;Fromstudent;Groupby性别个专业的男女学生人数:求每个专业的男女学生人数:Select专业专业,count(as人数)人数;Fromstudent;Where性别男"性别="男Groupby专业求女生数:求女生数:
Select专业专业,count(as人数)人数;Fromstudent;Where性别女"性别="女Groupby专业查询有学生人数不低于30的专业及学生人数:的专业及学生人数:Select专业专业,count(*)人数人数;Fromstudent;Groupby专业专业;Havingcount(*)>=30分组后的筛选:只能在结果列中进行筛选分组后的筛选只能在结果列中进行筛选六、多表查询查询所有男学生的,,专业,查询所有男学生的,,专业,所学课程和成绩信息并按课程名升序排列,信息,课程和成绩信息,并按课程名升序排列,课程名相同的按成绩降序排列:相同的按成绩降序排列:学生(,,性别,专业学生,,性别,专业)课程(课程号,课程名,任课教师课程课程号,课程名,任课教师)课程号,成绩(课程号,成绩):+课程号成绩,课程号,成绩:课程号Select学生,专业课程名成绩学生.专业,课程名成绩;,专业课程名,成绩
From学生课程,成绩学生,课程成绩课程成绩;Where学生=成绩学生.成绩;成绩.And课程课程号=成绩课程号课程.课程号成绩课程号;课程号成绩.课程号And性别男";性别="男Orderby课程名成绩desc课程名,成绩七、超联接查询Select学生,专业课程名成绩学生.专业,课程名成绩;,专业课程名,成绩From学生innerjoin成绩innerjoin课程;课程on学生=成绩学生.成绩;成绩.on成绩课程号=课程课程号成绩.课程号课程课程号;课程号课程.课程号where性别男";性别="男Orderby课程名成绩desc课程名,成绩