1、sql查询代码一、创建数据库和表1 创建数据库create database Student2 创建表student,course和student_courseuse Student;gocreate table students( Student_id varchar(32) primary key, Student_name varchar(32), Student_sex char(2), Student_nation char(5), Student_birthday datetime, Student_time datetime, Student_classid varchar(32
2、), Student_home varchar(32), Student_else varchar(32);gocreate table course( Course_id varchar(32) primary key, Course_name varchar(32), Course_period int, Course_credit int, Course_kind int, Course_describe varchar(32);gocreate table student_course( ID bigint primary key, Student_id varchar(32), Co
3、urse_id varchar(32), Student_grade int, Course_year tinyint);3 在表student中插入数据insert into students values(011001,叶海平,男,汉,1989-01-23,2010-09-01,011,山西,null),(011002,景风,男,汉,1989-06-25,2010-09-01,011,重庆,null),(012001,华丽佳,女,汉,1988-05-20,2010-09-01,012,大连,null),(012002,范治华,男,汉,1989-05-20,2010-09-01,012,山东
4、,null),(013001,李佳佳,女,汉,1990-03-01,2010-09-01,013,湖南,null),(013002,史慧敏,女,汉,1988-10-11,2010-09-01,013,湖北,null),(014001,安静,女,汉,1991-03-23,2010-09-01,014,山西,null),(014002,尹强,男,汉,1987-06-02,2010-09-01,014,重庆,null),(015001,曹洪,男,汉,1989-05-16,2010-09-01,015,大连,null),(015002,杨世英,女,汉,1989-12-03,2010-09-01,015
5、,天津,null)4 在表course中插入数据insert into course values(1001,电子商务基础,72,2,1,null),(2001,英语,72,3,0,null),(2002,英语,72,3,0,null),(3001,网页设计与制作,72,2,1,null),(4001,网络数据库,72,3,1,null),(5001,电子商务安全与管理,72,2,1,null)5 在表 student_course中插入数据insert into student_course values(1,011001,1001,82,1),(2,011002,1001,86,1),(3
6、,011001,2001,78,1),(4,011002,2001,80,1),(5,011001,2002,77,2),(6,011002,2002,88,2),(7,012001,1001,90,1),(8,012002,1001,75,1),(9,012001,2001,68,1),(10,012002,2001,73,1),(11,012001,2002,80,2),(12,012002,2002,78,2),(13,012001,4001,85,2),(14,012002,4001,66,2),(15,013001,1001,76,1),(16,013002,1001,81,1),(
7、17,013001,2001,69,1),(18,013002,2001,90,1),(19,013001,2002,70,2),(20,013002,2002,89,2),(21,013001,4001,88,2),(22,013002,4001,86,2),(23,014001,4001,76,2),(24,014002,4001,80,2),(25,015001,4001,88,2),(26,015002,4001,66,2)7.2选择select查询结果集输出的列7.2.2 不能指定任何列-用select语句显示常量、函数和表达式的值select 今天是,getdate(),我的版本是
8、,version,1+27.2.3 使用通配符(*)-查询表student中的所有学生的全部信息use Studentselect * from students7.2.4 指定输出列-查询表studes中的所有学生的学号和姓名select student_id,student_name from students7.2.5 使用列表达式-在表student_course中查询学生的学号、课程号、成绩和新成绩(在原始成绩分数的基础上加分)select Student_id,Course_id,Student_grade,Student_grade+5from student_course7.2
9、.6 为查询结果指定列名-为结果集中的列分别指定中文列名:学号、课程号、原始成绩、新成绩select 学号=Student_id,Course_id as 课程号,Student_grade 原始成绩,Student_grade+5 as 新成绩from student_course7.3 控制select查询结果集输出的行7.3.1 ALL和Distinct关键字1.使用ALL参数-在表students中不带all参数查询所有学生的性别select Student_sex from students-在表students中查询所有学生的性别select all Student_sex fro
10、m students2.使用Distinct参数-在表students中查询所有学生的性别,要求消除重复数据select distinct Student_sex from students7.3.2 使用ORDER BY 子句对结果集排序-在表studens中查询所有学生的学生记录,并使显示的结果根据姓名字段(Student_name)按照不同的方式排序-对结果集不使用任何其他排序查询select * from students-使结果集按照姓名字段的默认的升序方式排序select * from students order by Student_name-使结果集按照姓名字段的升序方式排序
11、select * from students order by Student_name asc-使结果集按照姓名字段的降序方式排序select * from students order by Student_name desc-在表students中查询所有的学生记录,要求首先按照性别字段(Student_sex)的降序排序,性别相同的按照姓名(Student_name)的升序排序select *from students order by Student_sex desc,Student_name asc7.3.3使用TOP关键字输出部分记录-在表Student中查询所有的学生记录,但是
12、只显示前面的3条记录select top 3 * from students-在表Student中查询所有的学生记录,但是只显示结果集记录总数33%的记录select top 33 percent * from students-在表Student中查询所有的学生记录,结果集按性别的升序排序,但是只是显示前3条记录select top 3 * from students order by Student_sex-在表Student中查询所有学生的记录,结果集按性别字段的升序排序,除了要显示3前条记录外,还要显示出与第3条记录的性别一样的所有其他记录select top 3 with ties
13、* from students order by Student_sex -没有ORDER BY不能使用WITH TIES7.4使用WHERE子句查询常用比较运算符大 于小 于=等 于=大于或等于!=不等于不等于!不大于7.4.2 使用单一查询条件-在成绩表中查询所有学生的课程号为1001的课程的成绩select Student_id,Course_id,Student_gradefrom student_coursewhere Course_id=10017.4.3 逻辑运算符1.AND逻辑运算符-查询课程号为1001的课程且成绩在分80以上的所有学生的成绩select Student_id
14、,Course_id,Student_gradefrom student_coursewhere Course_id=1001 and Student_grade=802.OR逻辑运算符-在成绩表中查询成绩在 90分以上(含90)或成绩在70分以下(不含70)的所有学生的成绩select Student_id,Course_id,Student_gradefrom student_coursewhere Student_grade=90 or Student_grade=70 and Student_grade1)order by a.Student_name4.交叉连接-交叉连接select
15、 *from students,course7.5.3 为查询数据源指定别名-查询学生的姓名、课程名和成绩select ST.Student_name,CS.Course_name,SC.Student_gradefrom students as ST inner join student_course as SCon ST.Student_id=SC.Student_idinner join course CSon CS.Course_id=SC.Course_id7.6聚合函数7.6.1 使用SUM函数计算列的累加和-查看成绩表中的所有学生成绩并排序select Student_grade
16、 from student_course order by Student_grade-求所有成绩的总和select SUM(all Student_grade) as 总成绩 from student_course-排除成绩中的所有重复值以后求和select SUM(distinct Student_grade) as 总成绩 from student_course-查询并计算出学号为的学生的各科成绩的总成绩select SUM(Student_grade) as 总成绩 from student_coursewhere Student_id=0110017.6.2 使用AVG函数计算列的平
17、均值-查询并计算出学号为的学生的各科平均成绩select AVG(Student_grade) as 平均成绩 from student_coursewhere Student_id=0110017.6.3 使用COUNT函数统计行的数目-统计所有学生人数select COUNT(Student_id) as 学生总数 from students7.6.4 使用MAX函数计算列的最大值 -查询课程代码为的课程的最高分select MAX(Student_grade) as 最高分 from student_coursewhere Course_id=10017.6.5 使用MIN函数计算列的最
18、小值-查询课程代码为的课程的最低分select MIN(Student_grade) as 最高分 from student_coursewhere Course_id=10017.7 分组查询7.7.1 简单分组查询-查询每个同学的所有课程的总分,并按总成绩的升序排序select Student_id,SUM(Student_grade) as 总分from student_coursegroup by Student_idorder by SUM(Student_grade)7.7.2 对分组进行汇总计算1.WITH CUBE运算符-求每个同学的平均成绩,一般查询select St.Stu
19、dent_id as 学号,Student_classid as 班级,AVG(Student_grade) as平均分from students as St inner join student_course as SCon St.Student_id=SC.Student_idgroup by St.Student_id,Student_classid-求每个同学的平均成绩,使用WITH CUBEselect St.Student_id as 学号,Student_classid as 班级,AVG(Student_grade) as平均分from students as St inner
20、 join student_course as SCon St.Student_id=SC.Student_idgroup by St.Student_id,Student_classid with cube2.WITH ROLLUP运算符-查询每个学生的平均分、每个班级的平均分、所有学生的平均分select Student_classid as 班级,St.Student_id as 学号,AVG(Student_grade) as 平均分from students as St inner join student_course as SCon St.Student_id=SC.Studen
21、t_idgroup by Student_classid,St.Student_id with rollup-查询每个学生的平均分、每个班级的平均分、所有学生的平均分,分组表达式中的列的顺序交换select Student_classid as 班级,St.Student_id as 学号,AVG(Student_grade) as 平均分from students as St inner join student_course as SCon St.Student_id=SC.Student_idgroup by St.Student_id,Student_classid with rollup7.7.3 分组条件查询(HAVING子句)-求平均分高于分的所有学生select St.Student_id as 学号,Student_classid as 班级,AVG(Student_grade) as 平均分from students as St inner join student_course as SCon St.Student_id=SC.Student_idgroup by St.Student_id,Student_classidhaving AVG(Student_grade)807.8 汇总数据数据汇总数据行聚合函数结果AVG
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1