6数据查询(简单)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

项目六查询和更新数据能够使用简单的SQL语句查询数据库表中的数据能够使用SQL语句进行多表数据的查询能够使用SQL中的子查询完成复杂查询能够使用SQL语句对数据库表中的数据进行插入、修改和删除一、SQL语言简介SQL语言是数据库的核心语言。全称是“结构化查询语言(StructuredQueryLanguage)”,是在关系型数据库系统中被广泛采用的一种语言形式。微软公司在SQL语言的基础上对其进行了大幅度的扩充,并将其应用于SQLServer服务器技术中,从而将SQLServer所采用的SQL语言称为Transact-SQL语言。二、SQL语言的组成SQL语言组成数据操纵语言DML数据定义语言DDL数据控制语言DCLSELECTINSERTUPDATEDELETECREATEALTERDROPGRANTREVOKE三、Transact-SQL语法规则语法规则功能描述大写Transact-SQL关键字斜体或小写字母Transact-SQL语法中用户提供的参数|(竖线)分隔括号或大括号内的语法项目。只能选择一个项目[](方括号)可选语法项目。不必键入方括号{}(大括号)必选语法项目。不要键入大括号[,...n]表示前面的项可重复n次。每一项由逗号分隔实例演示查询学生表中林斌同学的密码。UsexkgoSELECTpwdFROMstudentWHEREstuname=‘林斌’Go需检索的字段字段所在表名查询条件相关知识:SELECT语句SELECT语句是SQL语言中最基本的查询语句主要用来从数据库中检索出符合条件的记录。语法格式:SELECTselect_listFROMtable_list[WHEREsearch_coditons]需检索的字段的列表字段所在表名的列表查询条件1、SELECT子句和FROM子句SELECT子句是SELECT语句中的核心语句,用于指定选择列。FROM子句指定查询数据,来源于哪个表或哪几个表。(1)选择所有列(*的使用)【例】显示学生表中所有信息Select*fromstudent分析方法:题中给出了哪些信息?要查询的是哪些字段?这些字段在哪个表中?1、SELECT子句和FROM子句(2)选取部分字段【例】从学生表中检索学生所在班的班级编码和学生姓名selectclassno,stunamefromstudent查询课程表中的课程名称和任课教师查询班级表的所有信息1、SELECT子句和FROM子句(3)对数据列进行算术运算【例】查询课程表(course)中的课程名称、学分,并在原学分上增加2个学分。Selectcouname,credit+2fromcourse(4)使用TOPn[PERCENT]关键字功能:用来限制返回到结果集中的记录的数目,可以使用下面两种表达方式(1)topn(2)topnpercent【例】从学生表中检索所有的信息,要求只显示前6行数据selecttop6*fromstudent问题:数据表中学分字段的值发生变化了吗?1、SELECT子句和FROM子句(5)修改检索结果中列的标题【问题】检索学生表中的学号、班级编码和姓名信息,并修改列标题selectstuno‘学号’,classno‘班级编号’,stuname‘姓名’fromstudent方法有三:(1)’显示的列标题’=要检索的列名(2)要检索的列名’显示的列标题’(3)要检索的列名AS’显示的列标题’1、SELECT子句和FROM子句(6)使用DISTINCT关键字功能:用来从SELECT语句的结果集中去掉重复的记录【例】从学生表中检索学生所在班的班级编码,要求清除值相同的那些行selectdistinctclassnofromstudent姓名民族甲汉乙回丙汉丁汉1、SELECT子句和FROM子句Select子句和From子句完整的格式:SELECT[DISTINCT][TOPN[PERCENT]]字段列表FROM表名使用聚合函数:AVG()、MAX()、MIN()、SUM()、Count()查询课程表中最小的报名人数、最大报名人数以及平均报名人数查询共有多少系部练习一:查询course表所有记录查询student表中前20名学生的学号(stuno),姓名(stuname),并将列名以中文输出查询course表所有信息,并显示报名人数和限选人数之比查询stucou表中有哪些学生进行了选课,要求显示出学生学号答案①Select*fromcourse②Selecttop20stuno‘学号’,stuname‘姓名’fromstudent③Select*,willnum/limitnum‘报名人数和限选人数之比’fromcourse④Selectdistinctstunofromstucou2、WHERE子句用WHERE来指定查询条件,只有满足条件的记录才可以用来构造结果集。WHERE子句中的查询条件形式有以下六种:比较运算符(如=,,,等)逻辑运算符(AND,OR,NOT)范围运算符(BETWEEN…AND…)列表运算符(IN)模糊查询条件(LIKE)空值判断符(ISNULL)2、WHERE子句(1)比较运算符=(等于)、!=(不等于)(大于)=(大于等于)(小于)=(小于等于)!(不大于)!(不小于)【例】查询course表中限选人数小于10的课程名称Selectcounamefromcoursewherelimitnum10go2、WHERE子句(2)逻辑运算符AND(与),OR(或),NOT(非)【例】查询course表中系部编码(departno)为“02”,课程分类是“工程技术”的课程名称。Selectcounamefromcoursewheredepartno=‘02’andkind=‘工程技术’2、WHERE子句(3)使用IN(NOTIN)关键字【例】检索课程编码为‘001’‘004’‘013’的课程名称方法一:使用逻辑运算符OR方法二:使用IN关键字(比用逻辑运算符更为简单)Selectcounamefromcoursewherecouno=‘001’orcouno=‘004’orcouno=‘013’Selectcounamefromcoursewherecounoin(‘001’,‘004’,‘013’)Selectcounamefromcoursewherecounonotin(‘001’,‘004’,‘013’)练习二:在course表中检索“Linux操作系统”课程的主讲教师查询student表中班级编号(classno)是20000002的学生信息查询course表中课程分类是“工程技术”,并且报名人数未达到限制选课人数的课程名称检索课程编码为001’‘004’‘013’的课程名称答案①Selectteacherfromcoursewherecouname=‘Linux操作系统’②Select*fromstudentwhereclassno=‘20000002’③Selectcounamefromcoursewherekind=‘工程技术’andwillnumlimitnum④Selectcounamefromcoursewherecounoin(‘001’,‘004’,‘013’)2、WHERE子句(4)使用LIKE(NOTLIKE)关键字【通配符】%匹配包括0个或多个字符的字符串_匹配任何一个字符[]匹配任何在范围内的单个字符,例如:[m-p][^]匹配任何不在范围内的单个字符,例如:[^m-p]、[^mnop]【注】通配符和字符串要括在单引号中[[]——如果要查找通配符本身,需要将它们用方括号括起来【练习】解释下面的通配符表示的意义%D%abDACB,aaaaads,Djkl,D_[^a]ab,aabb,bdc,d2[CK]ars[eo]n表示要搜索哪几种字符串?2、WHERE子句【例】查询课程名以字母D开始的课程信息select*fromcoursewherecounamelike‘D%’问题1:检索姓“刘”的学生信息问题2:检索不姓“刘”的学生信息【例】检索姓名的第二个字为“宝”的学生信息,要求显示学生学号和姓名selectstuno,stunamefromstudentwherestunamelike'_宝%'2、WHERE子句(5)使用BETWEEN…AND(NOTBETWEEN…AND)关键字——用于检索在某一特定范围内的信息【问题】检索报名人数大于等于30并且小于等于40的课程信息,要求显示课程名称和报名人数Selectcouname,willnumfromcoursewherewillnum=30andwillnum=40Selectcouname,willnumfromcoursewherewillnumbetween30and402、WHERE子句(6)使用ISNULL关键字——用于检索列中没有赋值的行【问题】检索课程表中教师未定的课程名称和教师名Selectcouname,teacherfromcoursewhereteacherisnull练习三:检索以“制作”两字结尾的课程名检索姓名的第二个字为“丽”的学生信息,要求显示学生学号和姓名检索不姓“刘”的学生信息检索报名人数在20和40之间的课程信息,要求显示课程名称和报名人数3、ORDERBY子句使用ORDERBY子句重新排列检索结果【升序】ASC【降序】DESC可以在ORDERBY子句中指定多个列【例】检索课程表的教师名、课程号、课程名,要求检索结果首先按教师名降序排列,教师名相同时,则按课程号的升序排列Selectteacher,couno,counamefromcourseOrderbyteacherdesc,couno3、ORDERBY子句2、检索报名人数多于限制选课人数的课程信息,要求显示课程名称、报名人数和限制选课人数之比,并按该比例的降序排列selectcouname,willnum/limitnumas‘二者之比'fromcoursewherewillnumlimitnumorderbywillnum/limitnumdesc总结SELECT语句格式、功能SELECT[DISTINCT][TOPN[PERCENT]]字段列表FROM表名WHERE子句中的查询条件比较运算符(如=,,,等)逻辑运算符(AND,OR,NOT)范围运算符(BETWEEN…AND…)列表运算符(IN)模糊查询条件(LIKE)空值判断符(ISNULL)•所有列(*)•列名•表达式•聚合函数作业:P80实训1-6

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功