资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,/35,使用,DQL,命令查询数据,(,一,),线上线下,平台预习,2,/35,本课目标,学完本次课程后,你能够:,掌握,MySQL,删除数据,掌握,MySQL,查询语句,掌握模糊查询,理解连接查询原理,掌握内连接查询,掌握左外连接查询,理解自连接,3,/,35,课程项目分析,案例:,MySchool,数据库,课程表,成绩表,学生信息表,年级表,4,/,35,数据表设计,了解表之间的业务逻辑关系,5,/,35,DQL,语言,DQL(Data Query,Language,,数据,查询语言,),查询数据库数据,如,SELECT,语句,简单的单表查询或多表的复杂查询和嵌套查询,数据库语言中最核心、最重要的语句,使用频率最高的语句,6,/,35,SELECT,语法,SELECT ALL|DISTINCT,*|table.*|table.fi,eld,1 as alias1,table.fi,eld,2 as alias2,FROM table_name as table_ alias ,left|out|inner join table_name2,#,联合查询,WHERE#,指定结果需满足的条件,GROUP BY#,指定结果按照哪几个字段来分组,HAVING#,过滤分组的记录必须满足的次要条件,ORDER BY#,指定查询记录按一个或者多个条件排序,LIMIT offset,row_count|row_count,OFFSET,offset ;#,指定查询的记录从哪条至哪条,括号代表可选的;,括号代表必须的;,#,MySQL,语句中的注释符,也可以用,/*,该处为注释*,/,语法,7,/,35,SELECT student.StudentNo,StudentName,StudentResult,FROM,student ,result;,指定查询字段,查询,表中所有的数据列结果,采用“,*,”,符号,可,指定查询的结果数据,列,如只查询,student,表中的学号、姓名、,电话,如,区分连接查询时两个表有同名的字段,指定,该字段属于哪个表,效率低,不推荐,select *from student;,SELECT StudentNo,StudentName,Phone FROM student;,8,/,35,AS,子句,AS,子句作用,可给数据列取一个新别名,可给表取一个新别名,可把经计算或总结的结果用另外一个新名称来代替,AS,子句,用法,SELECT StudentNo AS“,学号,”FROM,student;,SELECT,a.StudentNo FROM,student AS a;,SELECT Phone+1,AS,Tel FROM,student;,AS,也可省略不写,注意,9,/,35,DISTINCT,关键字的使用,作用,去掉,SELECT,查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条,#,查询成绩表中的所包含的课程,ID,SELECT DISTINCT SubjectNo FROM result;,示例,SELECT,DISTINCT,字段名,1,字段名,2.,FROM,表名,语法,ALL,关键字是默认的,返回所有的记录,与之相反,注意,演示示例,1,:简单查询语句,10,/,35,使用表达式的列,2-1,表达式,一般由文本值、列值、,NULL,、函数和操作符等组成,应用,场景,SELECT,语句返回结果列中使用,SELECT,语句的,ORDER BY,、,HAVING,等子句中使用,DML,语句中的,where,条件语句中使用表达式,11,/,35,使用表达式的列,2-2,在,SQL,语句中使用表达式,返回的列中使用,,如,避免,SQL,返回结果中包含“,.,”,“,*,”和括号等干扰开发语言程序,,如,SELECT version(),100*3#,返回,MySQL,版本和计算结果,SELECT SubjectName“,课程名称,”,ClassHour+10 AS“,新学时,”,FROM subject;,#,给返回结果中的课时都加,10,个,课时,SELECT version()as MySQL_V,123.44*100 AS EXPRESSION;,#,返回结果不会与后台开发程序发生混淆,演示示例,2,:使用表达式的列,12,/,35,练习,1,:查询课程表数据,需求,说明,查询课程表(,subject,)的所有记录,,返回数据,要求,返回字段名称使用别称,返回课程名称,(SujectName),总课时,(SubjectHour),返回,10,天上完课程的均,课时,(,ClassHour/10,),13,/,35,SELECT,语法,SELECT ALL|DISTINCT,*|table.*|table.field1 as alias1,table.field2 as alias2,FROM table_name as table_ alias ,left|out|inner join table_name2#,联合查询,WHERE ,#,指定结果需满足的条件,GROUP BY#,指定结果按照哪几个字段来分组,HAVING#,过滤分组的记录必须满足的次要条件,ORDER BY#,指定查询记录按一个或者多个条件排序,LIMIT offset,row_count|row_count,OFFSET,offset ;#,指定查询的记录从哪条至哪条,括号代表可选的;,括号代表必须的;,#,MySQL,语句中的注释符,也可以用,/*,该处为注释*,/,14,/,35,语法,where,条件语句,用于检索数据表中符合条件的记录,搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假,搜索条件的组成,逻辑操作符,比较操作符,查询在,80-90,分之间的所有成绩记录,问题,演示示例,3,:,WHERE,条件检索,15,/,35,逻辑操作符,操作符名称,语法,描述,AND,或,&,a AND b,或,a&b,逻辑与,同时为,真,结果,才为真,OR,或,|,a OR b,或,a|b,逻辑或,只要一个为真,则结果为真,NOT,或!,NOT a,或,!a,逻辑,非,若,操作数为假,结果则为真,16,/,35,比较操作符,操作符名称,语法,描述,IS NULL,a IS NULL,若操作符为,NULL,,则,结果为真,IS NOT NULL,a IS NOT NULL,若操作符不为,NULL,,则,结果为真,BETWEEN,a BETWEEN b AND c,若,a,范围在,b,与,c,之间则结果为真,LIKE,a LIKE b,SQL,模式匹配,若,a,匹配,b,,则结果为真,IN,a IN(a1,a2,a3,.),若,a,等于,a1,,,a2,中的某一个,则结果为真,1,、数值数据类型的记录之间才能进行,算术运算,2,、相同数据类型的数据之间才能进行,比较,注意,17,/,35,BETWEEN AND,范围查询,根据一个范围值来检索,等同于,=,和,=110 AND ClassHour=120,;,示例,语法,演示示例,4,:,BETWEEN AND,范围查询,18,/,35,LIKE,模糊查询,在,WHERE,子句中,使用,LIKE,关键字进行模糊查询,与“,%,”一起使用,表示匹配,0,或任意多个字符,与“,_,”一起使用,表示匹配单个字符,#,查询包含“数学”的所有课程,SELECT,*FROM subject WHERE SubjectName,LIKE,%,数学,%;,#,查询所有姓名为“李,*,”三个字的学生信息,SELECT,StudentNo,StudentName FROM student,WHERE,StudentName,LIKE,李,_;,示例,演示示例,5,:,LIKE,模糊匹配,19,/,35,使用,IN,进行范围查询,在,WHERE,子句中使用,IN,进行范围查询,查询的字段,x,的值,至少与括号中的一个值相同,多个值之间用英文逗号隔开,SELECT,字段列,1,,字段,2,FROM,表名,WHERE,字段,x,IN (,值,1,值,2,值,3),SELECT *FROM subject where ClassHour=100 OR ClassHour=110 OR ClassHour =120;#,普通处理,方式,SELECT *FROM subject where ClassHour,IN,(100,110,120,);,#,使用,IN,进行查询方式,更为简洁,效率更,高,示例,语法,演示,示例,6,:,使用,IN,进行范围查询,20,/,35,NULL,空值条件查询,NULL,NULL,代表“无值”,区别于零值,0,和空符串“”,只能出现在定义允许为,NULL,的字段,须使用,IS NULL,或,IS NOT NULL,比较操作符去比较,演示,示例,7,:,查找地址不为空的学生信息,21,/,35,练习,2,:查询“李”同学成绩,需求说明,查询所有姓“李”的学生所有成绩,22,/,35,数据表分析,案例:,MySchool,数据库,课程表,成绩表,学生信息表,年级表,23,/,35,表关系,24,/,35,SELECT,语法,SELECT ALL|DISTINCT,*|table.*|table.field1 as alias1,table.field2 as alias2,FROM table_name as table_ alias ,left|out|inner join table_name2#,联合查询,WHERE#,指定结果需满足的条件,GROUP BY#,指定结果按照哪几个字段来分组,HAVING#,过滤分组的记录必须满足的次要条件,ORDER BY#,指定查询记录按一个或者多个条件排序,LIMIT offset,row_count|row_count,OFFSET,offset ;,#,指定查询的记录从哪条至哪条,括号代表,可选的,括号代表必须,的,#,MySQL,语句中的注释符,也可以用,/*,该处为注释*,/,25,/,35,连接查询(多表查询),连接查询,如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询,分类,包括,内连接,(inner join),等值和非等值的连接查询,自身连接查询,外连接,(out join,),左连接(,LEFT JOIN,),右连接,(RIGHT JOIN),26,/,35,内连接查询2,-,1,INNER JOIN,内连接,在表中至少一个匹配时,则返回记录,SELECT,字段,1,字段,2,FROM table_1,INNER JOIN table_2 ON table_1.,字段,x =table_2.,字段,y;,#INNER JOIN,与,JOIN,是相同的;,#,如,table_1,中的行在,table_2,中没有匹配,则不返回,;,#,要求:从,subject,和,grade,数据表查询课程名称和所属年级,名称,SELECT SubjectName,GradeName FROM subject INNER JOIN grade ON subject.GradeID=grade.GradeID;,示例,语法,27,/,35,内连接查询2,-,2,等值和非等值的连接查询,与单表查询类似,都是,SELECT,语句,把多个表放到,FROM,后,并用逗号隔开,可使用,AS,关键字取别名,便于引用,如无重名查询字段则可省略数据表的指定,#,要求:从,subject,和,grade,数据表查询课程名称和所属年级,名称,#,非等值连接查询,SELECT,SubjectName,GradeName,FROM,subject,grade;,#,等值查询,SELECT,SubjectName,GradeName,FROM,subject,grade,WHERE,subject.GradeID,=grade.GradeID;,返回记录数为两表记录数的乘积,等效于内连接,示例,演示,示例,8,:等值和非等值的连接查询,28,/,35,外连接,左外连接(,LEFT JOIN,),从左表(,table_1,)中返回所有的记录,即便在右(,table_2,)中没有匹配的行,右外连接,(RIGHT JOIN),从右表(,table_2,)中返回所有的记录,即便在左(,table_1,)中没有匹配的行,SELECT,字段,1,字段,2,FROM table_1,LEFT OUTER JOIN table_2 ON table_1.,字段,x =table_2.,字段,y;,SELECT,字段,1,字段,2,FROM table_1,RIGHT OUTER JOIN table_2 ON table_1.,字段,x =table_2.,字段,y;,语法,语法,演示示例,9,:外连接查询课程表,29,/,35,不同的,SQL JOIN,对比,JOIN,对比,操作符名称,描述,INNER JOIN,(,JOIN,),如果表中有至少一个匹配,则返回行,LEFT JOIN,不论右表是否有匹配,都会返回左表的所有行,RIGHT JOIN,不论左表是否有匹配,都会返回右表的所有行,30,/,35,自连接查询,数据表与自身进行连接,从一个包含栏目,ID,栏目名称和父栏目,ID,的表中,查询父栏目名称和其子栏目,名称,表结构如下:,#,表结构语句,CREATE TABLE IF NOT EXISTS category(,categoryId,int(10)auto_increment primary key,categoryName,varchar(32)not null,pid,int(10),);,示例,演示,示例,10,:自连接查询,31,/,35,练习,3,:连接查询,需求,说明,查询学生表(,student),的学号,(studentNo),姓名,(StudentName),和所在年级,(GradeName),分别,使用,左连接查询方式,右连接查询方式,内连接查询方式,Student,表插入一条数据后比较三种查询方式区别,StudentNo,StudentName,Phone,Address,Email,对应,:,2000,无名,13400000000001,上海,unname,32,/,35,总结,查询语句的基本语法是什么?,模糊查询的关键字是什么?,在什么场合下需要使用连接查询?有哪几种连接查询?,33,/,35,问题及作业,集中问题,&,课后作业,34,/35,
展开阅读全文