《使用DQL命令查询数据全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.pptx》由会员分享,可在线阅读,更多相关《使用DQL命令查询数据全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.pptx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、使用DQL命令查询数据(一)线上线下平台预习2/35本课目标学完本次课程后,你能够:掌握MySQL删除数据掌握MySQL查询语句掌握模糊查询理解连接查询原理掌握内连接查询掌握左外连接查询理解自连接3/35课程项目分析案例:MySchool数据库课程表课程表成绩表成绩表学生信息表学生信息表年级表年级表4/35数据表设计了解表之间的业务逻辑关系5/35DQL语言DQL(Data Query Language,数据查询语言)查询数据库数据,如SELECT语句简单的单表查询或多表的复杂查询和嵌套查询数据库语言中最核心、最重要的语句使用频率最高的语句6/35SELECT语法SELECT ALL|DIST
2、INCT *|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 ;#指定查询的记录从哪条至哪条 括号代表可选的;括号代表可选的
3、;括号代表必须的;括号代表必须的;#MySQL语句中的注释符,也可以用语句中的注释符,也可以用 /*该处为注释该处为注释*/语法7/35SELECT student.StudentNo,StudentName,StudentResult FROM student ,result;指定查询字段查询表中所有的数据列结果,采用“*”符号可指定查询的结果数据列如只查询student表中的学号、姓名、电话如区分连接查询时两个表有同名的字段指定指定该字段属于哪个表该字段属于哪个表效率低,不推荐效率低,不推荐select *from student;SELECT StudentNo,StudentName,
4、Phone FROM student;8/35AS子句AS子句作用可给数据列取一个新别名可给表取一个新别名可把经计算或总结的结果用另外一个新名称来代替AS子句用法SELECT StudentNo AS“学号学号”FROM student;SELECT a.StudentNo FROM student AS a;SELECT Phone+1 AS Tel FROM student;AS 也可省略不写注意9/35DISTINCT关键字的使用作用去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条#查询成绩表中的所包含的课程ID SELECT DISTINCT Subj
5、ectNo FROM result;示例SELECT DISTINCT 字段名字段名1,字段名字段名2.FROM 表表名名语法ALL 关键字是默认的,返回所有的记录,与之相反注意演示示例演示示例1 1:简单查询语句:简单查询语句10/35使用表达式的列2-1表达式一般由文本值、列值、NULL、函数和操作符等组成应用场景SELECT语句返回结果列中使用SELECT语句的ORDER BY、HAVING等子句中使用DML语句中的where条件语句中使用表达式11/35使用表达式的列2-2在SQL语句中使用表达式返回的列中使用,如 避免SQL返回结果中包含“.”,“*”和括号等干扰开发语言程序,如SE
6、LECT version(),100*3#返回返回MySQL版本和计算结果版本和计算结果SELECT SubjectName“课程名称课程名称”,ClassHour+10 AS“新学时新学时”FROM subject;#给返回结果中的课时都加给返回结果中的课时都加1010个个课时课时SELECT version()as MySQL_V,123.44*100 AS EXPRESSION;#返回结果不会与后台开发程序发生混淆返回结果不会与后台开发程序发生混淆演示示例演示示例2 2:使用表达式的列:使用表达式的列12/35练习1:查询课程表数据需求说明查询课程表(subject)的所有记录,返回数据
7、要求返回字段名称使用别称返回课程名称(SujectName)总课时(SubjectHour)返回10天上完课程的均课时(ClassHour/10)13/35SELECT语法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
8、 BY#指定查询记录按一个或者多个条件排序 LIMIT offset,row_count|row_count OFFSET offset ;#指定查询的记录从哪条至哪条 括号代表可选的;括号代表可选的;括号代表必须的;括号代表必须的;#MySQL语句中的注释符,也可以用语句中的注释符,也可以用 /*该处为注释该处为注释*/14/35语法where条件语句用于检索数据表中符合条件的记录搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假搜索条件的组成逻辑操作符比较操作符查询在80-90分之间的所有成绩记录问题演示示例演示示例3 3:WHEREWHERE条件检索条件检索15/35逻辑操作符操作符
9、名称语法描述AND或&a AND b 或 a&b逻辑与,同时为真,结果才为真OR或|a OR b 或 a|b逻辑或,只要一个为真,则结果为真NOT或!NOT a 或!a逻辑非,若操作数为假,结果则为真16/35比较操作符操作符名称操作符名称语法语法描述描述IS NULLa IS NULL若操作符为NULL,则结果为真IS NOT NULLa IS NOT NULL若操作符不为NULL,则结果为真BETWEENa BETWEEN b AND c若a范围在b与c之间则结果为真LIKEa LIKE bSQL模式匹配,若a匹配b,则结果为真INa IN(a1,a2,a3,.)若a等于a1,a2中的某一
10、个,则结果为真1、数值数据类型的记录之间才能进行、数值数据类型的记录之间才能进行算术运算算术运算2、相同数据类型的数据之间才能进行、相同数据类型的数据之间才能进行比较比较注意17/35BETWEEN AND范围查询根据一个范围值来检索等同于=和=110 AND ClassHour=120;示例语法演示示例演示示例4 4:BETWEEN ANDBETWEEN AND范围查询范围查询18/35LIKE模糊查询在WHERE子句中,使用LIKE关键字进行模糊查询与“%”一起使用,表示匹配0或任意多个字符与“_”一起使用,表示匹配单个字符#查询包含查询包含“数学数学”的所有课程的所有课程SELECT *
11、FROM subject WHERE SubjectName LIKE%数学数学%;%;#查询所有姓名为查询所有姓名为“李李*”三个字的学生信息三个字的学生信息SELECT StudentNo,StudentName FROM student WHERE StudentName LIKE 李李_;_;示例演示示例演示示例5 5:LIKELIKE模糊匹配模糊匹配19/35使用IN进行范围查询在WHERE子句中使用IN进行范围查询查询的字段x的值,至少与括号中的一个值相同多个值之间用英文逗号隔开SELECT 字段列1,字段2,FROM 表名 WHERE 字段x IN (值1,值2,值3)SELEC
12、T *FROM subject where ClassHour=100 OR ClassHour=110 OR ClassHour =120;#普通处理普通处理方式方式SELECT *FROM subject where ClassHour IN(100,110,120);#使用使用IN进行查询方式,更为简洁,效率更进行查询方式,更为简洁,效率更高高示例语法演示演示示例示例6 6:使用使用ININ进行范围查询进行范围查询20/35NULL空值条件查询NULLNULL代表“无值”区别于零值0和空符串“”只能出现在定义允许为NULL的字段须使用 IS NULL 或 IS NOT NULL 比较操作
13、符去比较演示演示示例示例7 7:查找地址不为空的学生信息查找地址不为空的学生信息21/35练习2:查询“李”同学成绩需求说明查询所有姓“李”的学生所有成绩22/35数据表分析案例:MySchool数据库课程表课程表成绩表成绩表学生信息表学生信息表年级表年级表23/35表关系24/35SELECT语法SELECT ALL|DISTINCT *|table.*|table.field1 as alias1,table.field2 as alias2,FROM table_name as table_ alias left|out|inner join table_name2#联合查询联合查询 W
14、HERE#指定结果需满足的条件 GROUP BY#指定结果按照哪几个字段来分组 HAVING#过滤分组的记录必须满足的次要条件 ORDER BY#指定查询记录按一个或者多个条件排序 LIMIT offset,row_count|row_count OFFSET offset ;#指定查询的记录从哪条至哪条 括号代表括号代表可选的可选的 括号代表必须括号代表必须的的#MySQL语句中的注释符,也可以用语句中的注释符,也可以用 /*该处为注释该处为注释*/25/35连接查询(多表查询)连接查询如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询分类包括内连接(inner join)4等值
15、和非等值的连接查询4自身连接查询外连接(out join)4左连接(LEFT JOIN)4右连接 (RIGHT JOIN)26/35内连接查询2-1INNER 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
16、 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 SubjectNa
17、me,GradeName FROM subject,grade WHERE subject.GradeID=grade.GradeID;返回记录数为两表记录数的乘积等效于内连接示例演示演示示例示例8 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
18、 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 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);示例演示演示示例示例1010:自连接查询:自连接查询31/35总结查询语句的基本语法是什么?模糊查询的关键字是什么?在什么场合下需要使用连接查询?有哪几种连接查询?33/35问题及作业集中问题&课后作业34/35