还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一.数据库简介和创立•系统数据库1在安装好SQL SERVER后,系统会自动安装5个用于维护系统正常运行的系统数据库1master记录了SQL SERVER实例的所有系统级消息,包括实例范围的元数据如登录帐号、端点、链接服务器和系统配置设置2msdb供SQL SERVER代理服务调度报警和作业以及记录操作员的使用,保留有关调度报警、作业、操作员等信息备份还原时3modelSQL SERVER实例上创立的所有数据库的模板4tempdb临时数据库,用于保留临时对象或中间成果集,为数据库的排列等操作提供一种临时工作空间每次启动都会重新创立5Resource一种只读数据库,包括了SQL SERVER的所有系统对象隐藏的数据库数据库的构成
2.
2.1数据文献1重要数据文献扩展名为.mdf,每个数据库有且只能有一种2次要数据文献扩展名为.ndf,可以没有或有多种
2.2日志文献扩展名为』df,用于寄存恢复数据库的所有日志信息
2.3数据的存储分派1数据文献和日志文献的默认寄存位置为:\Programe Files\Microsoft SQLServer\MSSQL.l\MSSQL\Data文献夹2数据的存储分派单位是数据页一页表是一块8KB的持续磁盘空间3页是存储数据的最小空间分派单位,页的大小决定了数据库表中一行数据的最大大小聚合函数含义COUNT(*)登记表中元祖的个数COUNT([DISTINCT]v列名,)记录本列的非空列值个数SUM(〈列名〉)计算列值的和值(必须是数值型列)AVG(v列名〉)计算列值的平均值(必须是数值型列)MAX(〈列名〉)计算列值的最大值MIN(〈列名〉)计算列值的最小值()上述函数除COUNT*外,其他函数在计算过程中均忽视NULL值(记录学生总人数)()SELECT COUNT*FROM Student(记录“001”学号学生的考试平均成绩)SELECT AVG(Grade)FROM SC WHERE Sno=OOI1(查询“C001”号课程考试成绩的最高分和最低分)SELECTMAX(Grade)最高分,MIN(Grade)最低分FROM SC WHERE Cno=聚合函数不能出目前WHERE子句中!对数据进行分组记录需要先对数据进行分组,然后再对每个组进行记录分组子句GROUPBY在一种查询语句中,可以用多种列进行分组分组子句跟在WHERE子句的背面GROUP BY<分组根据列[HAVING<组筛选条件>]1使用GROUP BY子句记录每门课程的选课人数,列出课程号和选课人数SELECT Cnoas课程号,COUNTSno as选课人数From SCGroup BYCno记录每个学生的选课门数和平均成绩SELECT Sno学号,COUNT*选课门数,AVGGrade平均成绩From SCGroup BYSno带WHERE子句的分组记录每个系的女生人数SELECT Dept,COUNT*女生人数From Student Where Sex=,女,Group BYD ept2使用HAVING子句HAVING子句用于对分组后的记录成果再进行筛选,它的功能与WHERE子句类似,它用于组而不是单个记录在HAVING子句中可以使用聚合函数,但在WHERE子句中不能,一般与GROUP子句一起使用查询选课门数超过3门的学生的学号和选课门数SELECT Sno学号,COUNT*选课门数,AVGGrade平均成绩From SCGroup BYSno HAVING>COUNT*33WHERE、GROUP BY、HAVING的作用及执行次序•WHERE子句用于筛选FROM子句中指定的数据所产生的行数据・GROUP BY子句用于对经WHERE子句筛选后的成果数据进行分组•HAVING子句用于对分组后的记录成果再进行筛选可以分组操作之前应用的筛选条件,在WHERE子句中指定它们更有效,这样可以减少参与分组的数据行在HAVING子句中指定的筛选条件应当是那些必须在执行分组操作之后应用的筛选条件(查询计算机系和信息管理系每个系的学生人数)第一种SELECT Dept,COUNT(*)FROM StudentGROUP BY Dept HavingDept in(计算机系信息管理系’)第二种SELECT Dept,COUNT(*)FROM Student WHERE Deptin(计算机系‘,’信息管理系’)GROUPBY Dept以上例子比较第一种是按照系分组好了之后,只采用所有系中的两个系,显然效率不高而第二种是先进行WHERE筛选条件之后,再进行GROUP BY计算,显示更好多表连接查询
1.3若一种查询同步波及到两张或以上的表,则称为连接查询内连接
1.
3.1使用内连接时,假如两个表的有关字段满足条件,则从两个表中提取数据构成新的记录FROM表工[INNER]JOIN表2ON<连接条件)•1注意连接条件中的连接字段必须是可比的,必须是语义相似的列(查询学生及选课的详细信息)SELECT*FROM Student INNER JOIN SC ON Student.Sno=SC.Sno(查询计算机系学生的选课状况,列出该学生的名字、所修课程号、成绩)------------------行选择条件SELECT Sname,Cno,Grade FROM StudentINNER JOIN SC ON Student.Sno=SC.S noWHERE(记录每个系的平均成绩)----------分组的多表查询Dept=,计算机系,SELECT Dept,AVGGrade ASAverageGrade FROM Student SINNERJOIN SC ONS.Sno=SC.Sno Group BYDept(记录计算机系每个学生的选课门数、平均成绩、最高成绩、最低成绩)-----------------分组和行选择条件的多表连接查询()()()()SELECT SnoCOUNT*,AVG Grade,MAX Grade,MIN Grade FROM Student S301,NSC ON S.Sno=SC.Sno WHERE Dept=1计算机系,GroupBYDept自连接
1.
3.2自连接是一种特殊的内连接,互相连接的表在物理上是一张表,但在逻辑上可以看做是两张表FROM表1AS T1JOIN表1AS T2•1通过为表取别名的措施,可以让物理上的一张表在逻辑上成为两张表(一定要为表取别名!)(查询与刘晨在同一种系学习的学生的姓名、所在系)SELECT Sl.Sname.Sl.Dept FROM Student SIJOIN StudentS2ON SI.Dept=S
2.Dept---同一种系的学生WHERE S
2.Sname=1刘晨,---S2表作为查询条件AND Sl.Sname!=刘晨’——S1表作为成果表,并从中去掉,刘晨,本人信息外连接在内连接操作中,只有满足条件的元祖才能出目前查询成果集中外连接是只限制一张表中的数据必须满足条件,而另一张表的数据可以不满足条件FROM表1LEFT|RIGHT[OUTER]JOIN表2ON〈连接条件〉・1LEFT[OUTER]JOIN称为左外连接,含义是限制表2中的数据必须满足条件,但不管表1中的数据与否满足条件,均输出表1中的数据LEFT[OUTER]JOIN称为右外连接,含义是限制表1中的数据必须满足条件,但不管表2中的数据与否满足条件,均输出表2中的数据内内连接表A与表B进行内连接,则成果为两个表中满足条件的记录集,即C部分O;外连接假如表A和表B进行左外连接,则成果为记录集A+记录集C假如表A和表B进行右外连接,则成果为记录集B+记录集C(查询没有人选的选修课程名)SELECT CnameFROM Course C LEFT3OINSC ON C.Cno=SC.Cno WHERESC.CnoIS NULL例子解析假如存在部分课程为被人选择,则必然在Course表中有但在SC表中没有出现,即在进行外连接时没人选的课程在与SC表构成的连接成果集中,对应的Sno、Cno Grade列必然为空,因此只需**在连接后的成果中选出**SC表中Sno或Cno为空的元祖即可(记录计算机系每个学生的选课门数,包括没选课的学生)SELECT S.Sno AS学号,COUNT(SC.Cno)AS选课门数FROM StudentS LEFTJOIN SC ONS.Sno=SC.Sno WHERE Dept=,计算机系,GROUP BYS.Sno例子解析上述例子规定记录每个学生的....,因此在GROUP BY分组时,是按照学生表中的学号()来分而对于聚合函数COUNT,上述规定记录每个学生的选课门数,若写成COUNT S.Sno或COUNT(力则对没选课的学生都返回1,由于在外连接成果中,S.Sno不会是NULL,而COUNT()*函数自身也不考虑NULL,它是直接对元祖个数进行计数注意在对外连接的成果进行分组、记录等操作时,一定要注意分组根据列和记录列的选择使用限制成果集行数
1.4TOP在使用SELECT语句进行查询时,有时只需要前几行数据()TOP expression[PERCENT][WITH TIES]•1・expression指定返回行数的数值体现式假如指定了PERCENT,expression将隐式转换成float,否则是bigint・PERCENT指定只返回成果集中前expression%行数据・WITH TIES指定从基本成果集中返回额外的数据行(只有在SELECT子句中包括了ORDER BY子句时,才能使用)TOP谓词写在SELECT单词的背面(假如有DISTINCT,则在DISTINCT背面)(查询考试成绩最高的3个成绩列出学号、课程号、成绩)SELECT TOP3Sno,Cno,Grade FROM SC ORDER BY GradeDESC若要包括并列第3名的成绩SELECT TOP3Sno,Cno,Grade WITHTIES FROM SC ORDERBY GradeDESC.数据更改功能2插入数据
2.1INSERT INTO表名[列名]VALUES值•11简朴插入语句INSERT INTOStudent VALUES0011陈东1男’J1996/6/231J信息管理系’•12多行插入语句INSERT INTOSC VALUES10011/C0011,90,10011,C0021,30,’001’JC005,NULL3不按表次序插入语句按与表列次序不一样的次序插入数据INSERT INTOStudentSno,Sname,Sex,Dept VALUES‘001‘J陈东1男1996/6/23,J信息管理系’更新数据
2.2UPDATE表名SET列名=值1无条件更新UPDATE SCSET Grade=Grade+10()2有条件更新(将“C001”号课程的学分改成5分)UPDATE CourseSET Grade=5WHERE Cno=C001(将计算机系全体学生的成绩加5分)UPDATE SCSET Grade=Grade+5FROM SCJOIN StudentS ONS.Sno=SC.SnoWHERE Dept=计算机系’删除数据
2.3()DELETE[TOP expression[PERCENT]]FROM表名()1无条件删除DELETE FROM Student()2有条件删除(删除所有考试成绩不合格的学生的选课记录)DELETE FROM SC WHERE Grade60(删除Student表中
2.5%的行数据)()DELETE TOP
2.5PERCENT FROM Student高级查询I-函数
1.CASECASE函数是一种多分支函数,它可以根据条件列表的值返回多种也许的成果体现式中的一种简朴函数
1.1CASECASE input_expressionWHEN when_expression THENresult_expression[…n][ELSE else_expression]END•input_expression所计算的体现式,可以是一种变量名、字段名、函数或子查询•when_expression要与input.expression进行比较的简朴体现式简朴体现式中不可包括比较运算法,只需给出被比较的体现式或值•else_expression比较成果均不为TRUE时返回的体现式(查询选了:课程的学生的学号、姓名、所在系、成绩,JAVA若所在系为“计算机系”,则显示“cs”;若所在系为“信息管理系”,则显示“工M”;若所在系为“通信工程系”,则显示“COM”)SELECT S.Sno学号,Sname姓名,CASE DeptWHEN1计算机系,THEN CSWHEN1信息管理系,THENUMWHEN1通信工程系,THEN,COM,END AS所在系,Grade成绩FROM StudentS JOIN SC ONS.Sno=SC.SnoJOIN CourseC ON C.Cno=SC.CnoWHERE Cname=Hava搜索函数
1.2CASE简朴CASE函数只能将input_expression与一种单值进行比较,假如需要跟一种范围内的值进行比较,就需要搜索CASE函数CASEWHEN Boolean_expression THENresult_expression[・・・n][ELSE else_expression]END•1•2•3•4•5•Boolean_expression比较体现式,可以包括比较运算符,直接将两者进行比较上述例子也可以用搜索CASE函数SELECT S.Sno学号,Sname姓名,CASEWHEN Dept=,计算机系,THEN CSWHENDept=1信息管理系,THEN UMWHENDept=,通信工程系,THEN COM语句数据库操作
3.SQL1创立数据库CREATE DATABASEdatabase_name二.基础SQLSQL StructuredQuery Language,构造化查询语言是顾客操作关系数据库的通用语言功能概述
1.SQLCreatreEND AS所在系,Grade成绩FROM StudentS JOINSC ONS.Sno=SC.SnoJOIN CourseCONC.Cno=SC.CnoWHERE Cname=JavaSELECT S.Sno学号,Sname姓名,(查询C001课程的考试状况,列出学号和成绩,然后根据成绩划分等级)WHEN Grade=90THEN优WHEN Grade BETWEEN80AND99THEN,良WHEN GradeBETWEEN70AND79THENWHEN GradeBETWEEN60AND69THEN及格CASEFROM SC ON WHERE Cno C001END AS成绩假如一种SELECT语句嵌套在另一种SELECT.INSERT.UPDATE或DELETE语句中,则称为子查询或内层查询;而包括子查询的语句称为主查询子查询一般用于满足下列需求之一.把一种查询分解成一系列的逻辑环节•提供一种列表作为WHERE子句和IN、EXISTS、ANY、ALL的目的对象•提供由外层查询中每一条记录驱动的查询子查询一般有几种形式•WHERE列名[NOT]IN(子查询)•WHERE列名比较运算符(子查询)•WHERE EXISTS(子查询)使用基于集合测试的嵌套子查询
2.1使用嵌套子查询进行基于集合的测试时,子查询返回的是一种值列表,外层查询通过运算符IN或NOT IN,对子查询返回的成果集进行比较SELECT〈查询列表》FROMWHERE〈列名〉[NOT]IN(SELECT〈列名》FROM)包括这种子查询形式的查询语句是分环节实现的,即先执行子查询,然后在子查询的成果基础上执行外层查询(先内后外)子查询返回的成果是一种集合,外层查询就是在这个集合上使用IN运算符进行比较(查询与刘晨在同一系的学生)SELECT Sno,Sname,Dept FROM Student WHEREDept INSELECTDept From StudentWhereSname=,刘晨’查询选修了JAVA课程学生的姓名SELECT SnameFROM StduentWHERE Sno INSELECT Sno FROM SC WHERE CnoIN第二个例子也可以用了连接查询来做:SELECT SnameFromStudentS JOINSC ONS.Sno=SC.Sno JOIN CourseCONC.Cno=SC.Cno WHERECname=1JAVA1上述的例子可以看出子查询和连接查询可以互通,但在某些状况下是不可以的记录选了JAVA课程的学生的姓名和所在系子查询SELECT Sno学号,COUNT*选课门数,AVGGrade平均成绩FROM SC WHERE SnoINSELECT Sno FROM SCJOIN CourseCON C.Cno=SC.CnoWHERE Cname=1JAVA1GROUP BYSno这个查询不能完全用连接查询实现,由于这个查询的语义是要先找出选了JAVA课程的学生,然后再计算这些学生的选课门数和平均成绩连接查询SELECT Sno学号,COUNT*选课门数,AVGGrade平均成绩FROMSCOINCourseCONC.Cno=SC.Cno WHERECname=1JAVA1GROUP BYSno以上查询是错误的,查出来学生的选课门数都是1!!!实际上这个1指的是JAVA这一门课程,,其平均成绩也是JAVA成绩【注意】连接查询和子查询的区别★★★★★•之因此这样,是由于在执行有连接操作的查询时,系统首先将所有被连接的表连接成一张大表,这张大表中的数据所有满足连接条件的数据之后再在这张连接后的大表上执行WHERE子句,然后是GROUP BY子句执行完WHERE子句之后,连接的大表中的数据就只剩余JAVA这一门课程的状况了,显然不符状况・对于具有嵌套的子查询的查询,是先执行子查询,然后在子查询的成果基础上再执行外层查询【注意】在子查询中否认和在外查询中否认的区另★★★★★U!IN和=的搭配相较于NOT IN和=的搭配与否相似?在子查询中否认和在外查询中否认的区别?(查询没选C001课程的学生的姓名和所在系)
1.多表连接:SELECT Sname.Dept FROM StudentSJOINSCONS.Sno=SC SnoWHERE Cno!=C
0012.嵌套子查询1在子查询中否认SELECT Sname.Dept FROM StudentWHERE SnoNOT INSELECT Sno FROMSC WHERE Cno=C0012)在外层查询中否认SELECT Sname.Dept FROM StudentWHERE SnoINSELECT Sno FROMSCWHERECno!=C001这个例子,连接查询是错误的,嵌套子查询中措施一在子查询中的否认是错误的!嵌套子查询中措施二在外查询中的否认是对的的!【连接查询】-上面已经讲过,对于连接查询,所有的条件都是在连接之后的成果表上进行的,并且是逐行进行判,断一旦发现满足规定行no!=C001则此行满足条件因此最终的成果既包括没有选C001课程的学生,也包括选了C001同步选了别的课程的学生【具有嵌套的子查询】-对于具有嵌套的子查询的查询,是先执行子查询,然后在子查询的成果基础上再执行外层查询并且在子查询中也是逐行判断的,当发既有满足条件的数据时,将此行数据作为外行查询的一种比较条件本例要查询的是某个学生所选的所有课程中均不包括C001课程,假如将否认放在子查询中,则查出的学生既包括没有选C001课程的学生,也包括选了C001同步选了别的课程的学生显然,这个否认的范围不够一般状况下,对于这种带有部分否认条件的查询都应当用子查询来实现,并且应当放在外层!使用比较测试的嵌套子查询
2.2SELECT〈查询列表》FROM...WHERE〈列名〉比较运算符(SELECT(列名〉FROM...)使用嵌套子查询进行比较测试时,规定子查询只能返回单个值外层查询一般通过比较运算符(=、<>、<=、>=),将外层查询中某个列的值与子查询返回的值进行比较查询选了C004课程且成绩高于此课程的平均成绩的学生的学号和成绩SELECT Sno,Grade FROM SCWHERE Cno=C004AND GradeSELECT AVGGrade FROMSCWHERECno=C00使用和嵌套子查询
2.2SOME ALL当子查询返回单值时,可以使用比较运算符进行比较,但返回多值时,就需要通过SOME和ALL修饰,同步必须使用比较操作符!WHERE<列名>比较运算符[SOME|ALL](子查询)•1(查询其他学期开设的课程中比第一学期开设课程的学分少的课程名、开课学期、学分)SELECT Cname^Semester.,Credit FROM CourseWHERE CreditSOMESELECT Credit FROM CourseWHERESemester=1AND Semester!=1该语句实际上等价于查询比第一学期学分最高的课程的学分小的其他学期的课程名、开课学期和学分SELECT Cname^Semester.,CreditFROMCourseWHERE CreditSELECT MAXCreditFROMCourseWHERESemester=1AND Semester!=1查询至少有一次成绩不小于或等于90分的学生的学号及选修的所有课程的课程号和考试成绩SELECT Sname^Cno^Grade FROM Student SJOINSCONS.Sno=SC.SnoWHERE S.Sno=SOME SELECT Sno FROMSCWHERE Grade=90该语句实际上是查询成绩不小于或等于90的学生的学号及选修的所有课程的课程号和考试成绩,可用子查询来做SELECT Sname,Cno,GradeFROMStudent SJOINSCONS.Sno=SC.SnoWHERE S.SnoINSELECT SnoFROMSCWHEREGrade=90字段类型描述或的整型数字bit01int从・2人312147,483,648到2人312,147,483,647的整型数字从人到的整型数字smallint-215-32,76827532,767从到的整型数字tinyint0255从人到人・的定精度与有效位数的数字decimal-103810381的同义词numeric decimal从・2人63-922,33乙203,685,
477.5808到」2人63・1922,33乙203,685,
477.5807的货币money数据,最小货币单位千分之十从到的货币数据,最小货市单位千分之十smallmoney-214,
748.3648214,
748.3647从到可变精度的数字float-
1.79E+
3081.79E+308从到可变精度的数字real-
3.04E+
383.04E+38从年月日到年日的日期和时间数据,最小时间单位为百分之三秒或
175311999912313.33datetime毫秒从年月日到年月日的日期和时间数据,最小时间单位为分钟smalldatetime190011207966时间戳,一个数据库宽度的唯一数字timestamp轨唯一标识符uniqueidentifier GUID定长非的字符型数据,最大长度为char Unicode8000变长非的字符型数据最大长度为varchar Unicode8000f变长非的字符型数据,最大长度为人text Unicode231-12G定长的字符型数据,最大长度为nchar Unicode8000变长的字符型数据,最大长度为nvarchar Unicode8000变长的字符型数据,最大长度为人・ntext Unicode23112G定长二进制数据,最大长度为binary8000变长二进制数据,最大长度为varbinary8000变长二进制数据,最大长度为人・image23112G系统提供的数据类型
2.数值数据类型
2.1存储空数据类型阐明间bit数据类型是整型,其值只能是
0、1或空值这种数据类型用于存储只有两种也许值的数据,如Yes或No、True或False、0n或Off.很省空间的一种数据类型,假如可1字bit以满足需求应当尽量多用节tinyint数据类型能存储从0到255之间的整数它在你只打算存储有限数目的数值时很1字tinyint有用节smallint数据类型可以存储从-2的15次幕-32768到2的15次幕32767之间的整数这种数据类型对存储某些常限定在特定范围内的数值型数据非常有用2字smallint假如tinyint类型太单调不能满足您的需求,您可以考虑用smallint类型,由于这个类节型相对也是比较安全的,不接受恶意脚本内容的嵌入int数据类型可以存储从-2的31次幕卜到2的31次幕2147483647之间的整数4个int存储到数据库的几乎所有数值型的数据都可以用这种数据类型数据类型能用来存储从-10的38次塞-1到10的38次幕-1的固定精度和范围的数值型numeric最多p s或数据使用这种数据类型时,必须指定范围和精度范围是小数点左右所能存储的数字的17个3decimalp,s总位数精度是小数点右边存储的数字的位数一般编码字符串类型
2.2数据类型阐明数据类型阐明char数据类型用来存储指定长度的定长非统一编码型的数据,n表达字符串的最大长度,取值范围为1charn〜8000若实际字符串控件不不小于n,系统自动在背面补空格varcharn可变长度的字符串类型,n表达字符串的最大长度,取值范围为1~8000text数据类型用来存储大量的非统一编码型字符数据这种数据类型最多可以有231-1或20亿个字text符.char和varchar的区别若某列数据类型为varchar20,存字符串“Jone”时,只占用4个字节,而char20会在为填满的空间中填写空格因此,varchar类型比char■类型更节省空间,但它的开销会大某些,处理速度也慢某些因此,n值比较小不不小于4,用char类型更好些统一编码字符串类型
2.3Unicode数据类型阐明nchar数据类型用来存储定长统一编码字符型数据统一编码用双字节构造来存储每个字符,ncharn而不是用单字节一般文本中的状况它容许大量的扩展字符此数据类型能存储4000种字符,使用的字节空间上增长了一倍.nvarchar数据类型用作变长的统一编码字符型数据此数据类型能存储4000种字符,使用的nvarcharn厂力一字节空间增长了一倍.ntext最多可存储2的30次方-1将近10亿个字符三.数据操作语言SQL.数据查询语句1查询语句的基本构造
1.1SELECT〈目的列名序列)--需要哪些列From<表名)--来自哪张表[WHERE<行选择条件>][GROUP BY〈分组根据列>][HAVING<组)][ORDERBY〈排序根据列>]SELECT子句用于指句用于指句用定的字段;FROM子子于指定子句用于对检定的来源;选择条件;录WHERE BY数进行分组;GROUP索子HAVING句用于指定组的选择条件;BYORDER子句用于对查询的成果进行排序;以上子句中,SELECT子句和FROM子句是必需的,其他是可选的单表查询
1.2选择表中若干列
1.
2.1()1查询指定的列SELECT列名FROM表名•1例子SELECT Sname.SnoFROMStudent2查询所有列SELECT*FROM表名•1例子:SELECT*FROMStudent3查询通过计算的列SELECT列名FROM表名•1例子SELECT Snameyeargetdata-yearBirthdate FROMStudentJ选择表中的若干元祖
1.
2.21消除取值相似的行DISTINCTSELECT DISTINCTSnoFROM表名•1例子SELECT DISTINCTSnoFROMStudent2查询满足条件的元祖查询条件谓词比较=、、=、=v、!=、!!确定范围BETWEEN...AND NOTBETWEEN...AND确定集合IN、NOT IN查询条件谓词字符匹配LIKE、NOT LIKE空值IS NULL、IS NOTNULL多重条件(逻辑谓词)AND、ORa.比较大小例子SELECT SnameFROMStudentWHERE year(getdata())-year(Birthdate)20b.确定范围BETWEEN...AND和NOT BETWEEN...AND可用于查找属性值在或不在指定范围列名|体现式|[NOT]BETWEEN下限值AND上限值•1BETWEEN…AND代表的范围是在上限值和下限值之间(包括边界值),即为trueoNOT BETWEEN…AND代表的范围是不在上限值和下限值之间(不包括边界值),即为true(若判断值为边界)值时,为false例子SELECT Sno.Cno FROMSCWHEREGradeBETWEEN80AND90此查询等价于SELECT Sno.Cno FROMSCWHEREGrade=80AND Grade=90例子SELECT Sno.Cno FROMSCWHEREGrade NOTBETWEEN80AND90此查询等价于SELECT Sno.Cno FROMSCWHEREGrade80OR Grade90确定集合C.IN运算符的含义当列中的值和集合中的某个常量值相等时,成果为True NOTIN运算符的含义当列中的值和集o合中的所有常量值都不相等时,成果为True例子SELECT SnoFROMStudentWHEREDeptIN(信息管理系’J计算机系’)此查询等价于SELECT SnoFROMStudentWHEREDept=,信息管理系,OR Dept=,计算机系,)例子SELECT SnoFROMStudentWHEREDept NOTIN(信息管理系’J计算机系,)此查询等价于SELECT SnoFROMStudentWHEREDept!=1信息管理系1AND Dept!=’计算机系,)d.字符串匹配Like运算符用于查找指定列中与匹配串匹配的元祖列名[NOT]LIKE<匹配串)通配符含义_(下划线)匹配任意一种字符%(百分号)匹配0个或多种字符[]匹配口中的任意一种字符如[abed]表达匹配abed其中任何一种,若是持续的,可以用■表达[八]不匹配口中的任意一种字符如Fabcd]表达不匹配abed其中任何一种,若是持续的,可以用-例子(查询姓“张”的学生详细信息)SELECT*FROMStudentWHERE SnameLIKE张*(查询不姓“张”的学生详细信息)SELECT*FROMStudentWHERE SnameNOT LIKE张*(查询姓“张”、“李”的学生详细信息)SELECT*FROMStudentWHERE SnameLIKE[张李;]%(查询名字的第二个字为“小”或“大”的学生详细信息)SELECT*FROMStudentWHERE SnameLIKE1[小大]%,e.波及空值的查询()空值NULL在数据库中有特殊含义,表达目前不确定或未知的值判断与否为NULL时,不可用一般的比较运算符,需用IS NULL例子SELECTSnoFROMStudentWHEREGradeIS NULL对查询成果进行排序
1.
2.3将查询成果按照指定的次序显示ASC表达按列值升序排列(从上往下,值从大到小)DESC表达按列值降序排列(从上往下,值从小到大)默认为ASCOORDER BY<列名>[ASC|DESC]例子SELECTSno,GradeFROMSC ORDERBY GradeDESC使用聚合函数记录数据
1.
2.4聚合函数也称为记录函数或集合函数,作用是对一组值进行计算并返回一种记录成果聚合函数含义。
个人认证
优秀文档
获得点赞 0