关系数据库语言_第1页
关系数据库语言_第2页
关系数据库语言_第3页
关系数据库语言_第4页
关系数据库语言_第5页
免费预览已结束,剩余88页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库技术与应第4章关系数据库标准语言第四章关系数据库标准语言 、数据定义和数据控制功能于一1.综合统2.高度非过程3.用同一种语法结构提供两种使用方4.语言简洁,易学易第四章关系数据库标准语言SQL语言则集数据定义语言(DDL)、数据语言(DML)、数第四章关系数据库标准语言 第四章关系数据库标准语言第四章关系数据库标准语言分简洁,完成数据定义、数据、数据控制的功能只用了9个动词第四章关系数据库标准语言SQL第四章关系数据库标准语言使用SQLServer创建数据库中的表时,要对表中的 SQLServer提供了丰富的系统定义的数据类型,用11bigint大小8个字节,取值范围263~263-2int大小4个字节,取值范围231~231-3smallint大小2个字节,取值范围215~215-4tinyint大小1个字节,取值范围:2和decimalNumeric等价于decimal。decimal[(p[,numeric[(p[,ps:0到p之间,缺省值为0。表示范围:-1038+1~1038-12精度:decimal和numeric类型数据的 精度593 1float格式:说明 n:科学记数法尾数的位数,具体如下表尾数位数48表示范围real大小:4取值范围:-精度:7在SQLServer中,real的同义词为float(24)分为Unicode字符数据类型和非Unicode字符数据类型非Unicode字符。字符集在安装SQLServer时选择,不能更改。非Unicodechar、varchar和text Unicode字符数据类型:可 Unicode字符数据数据类型包括:nchar、nvarchar和 分为固定长度和可变长度字符数据类型 char格式:功能定义长度为n个字节的固定长度非Unicode字符数说明大小n个字节(n个字符格式功能定义长度最多为n个字节的可变长度非Unicode字说明n1~8000大小3nchar格式功能定义包含n个字符的固定长度Unicode字符说明大小2n4text格式 说明例Createtablechars-example(char_1char(5),Vchar_1varchar(5),Text_1text) 大小8 例:01/01/98 2000-5-29大小4 例:2000/05/08 2000-05-29 1money大小:8表示范围:-2smallmoney大小:4表示范围binary类格式功能:定义固定长度的n个字节二进制数据,当输说明n大小n+4个字 2varbinary格式:功能:定义n说明n: 大小为实际输入数据长度加4个字节,而 91timestamp类型(时间戳数据类型大小892uniqueidentifier SQLServer根据计算机网络适配器和CPU时钟产生的全局惟一标识符(GloballyUnique93sql_variant用 4table 5cursor 过程的OUTPUT10用户自定义数据类只是提供了一种加强数据库和基本数据类 sp_addtype[@type_name=]type,[@phystype=]system_ 10用户自定义数据类创建两个用户自定义数据类UseExecsp_addtypephonenum,’varchar(24)’,’notExecsp_addtypefax,’varchar(24)’,’删除用户自定义数据类Sp_droptype第四章关系数据库标准语言Createdatabase4.2.2SQL的数据定义语操作对表DROP1定义语句格(<列名><数据类型>[<列级完整性约束条件>][,<列名数据类型列级完整性约束条件…[,<表级完整性约束条件>]);<表名>例[例4.3]建立一个“学生”表Student,它由学号SnoSname、Ssex、Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且取值也唯一。 CHAR(5)NOTNULLSnameCHAR(20) CHAR(1), 例[例4.4]CREATETABLE CHAR(10)NOTNULLCnameCHAR(20)not TinyintCheck(ccredit>0) PrimaryKey(Cno));定义基本表(续主码约束:PRIMARY非空值约束:NOTPRIMARYKEYUNIQUE(续[例4.5]建立一个“学生选课”表SC,它由学号、课程号o,修课成绩Grade组成,其中(Sno,Cno)为主码SnoCHAR(5),CnoCHAR(3) TinyintCheck(grade>=10andgrade<=100),Primarykey(Sno,Cno),Foreignkey(sno)referencesstudent(Sno),Foreignkey(cno)referencescourseDROPTABLE表名[例4.6]删除StudentDROP StudentADD新列名数据类型[DROP<完整性约束名>]MODIFY列名数据类型[例4.7]向Student表增加“入学时间”列,其数据ALTERTABLEStudentADD eDATE;不论基本表中原来是否已有数据,新增一律为空值[例4.8] 字段长altercolumnsname修改原有的列定义有可能会破坏已有数据[例4.9]删除入学时间AlterTableStudentDropColumn 语句格SELECT[ALL|DISTINCT]目标列表达式[,<目标列表达式FROM<表名或视图名>[<表名或视图名WHERE<条件表达式GROUPBY<列名1HAVING<条件表达式[ORDERBY<列名2ASC|DESC]];WHERE子句 GROUPBY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通ORDERBY子句:对查询结果表按指定列值学生-查询仅涉及一个表,是一种最简单的查询操查询指定[例4.10]查询全体学生的学号 SELECTSno,SnameFROMStudent;[例 查询全体学生 、学号、所在系SELECTSname,Sno,SdeptFROMStudent;[例4.12]SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECTFROMSELECT子句的<目标列表达式>为表达等3[例4.13]查全体学生 及其出生年份SELECTSname,2008-SageFROMStudent; 2008-王名[例4.14]查询全体学生的、出生年份SELECTSname,‘YearofBirth:’,2008-Sage’出生年FROM例题(续 'YearofBirth:'2000- YearofYearofYearofYearof[例]使用列别名改变查询结果的列标SELECTSnameNAME,'YearofBirth:’ FROM -Yearof Yearof Yearof Yearof 消除取值重复的假设SC323ALL[例4.15]查询选修了课程的学生学号SELECTSnoFROMSC;或(默认SELECTALLSnoFROMSC;结果例题(续SELECTDISTINCTSnoFROMSC;结果例题(续FROMSELECTDISTINCTFROM查询满足条件的元WHERE子句常用的查查询条件谓词比较查询条件谓词比较NO+上述比较运算符确定范ND确定集INOT字符匹LIENOT空值ISNUISNOT多重条D比较大 =,>,<,>=,<=,!=或逻辑运算符NOT+比较运算[例4.17]查询所 在20岁以下的学 及 SELECTSname,Sage WHERESage SELECTSname,Sage WHERENOTSage>=(1)比较大 =,>,<,>=,<=,!=或逻辑运算符NOT+比较运算[例4.18]SELECTdistinctSno WHEREgrade<60;使用谓词BETWEENANDNOTBETWEEN…AND[例4.19]查 、系别 SELECT WHERESageBETWEEN20AND例题(续[例4.20]查询 SELECTSname,Sdept,Sage WHERESageNOTBETWEEN20使用谓 IN<值表>,NOTIN<值表<值表>:用逗号分隔的一组取 SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS' SELECTSname,SsexFROMStudentWHERESdeptNOTIN('IS','MA','CS'[NOT]LIKE‘<匹配串>’[ESCAPE换码字符<匹配串>LIKENOTLIKE百分号)代表任意长度(长度可以为0)串。如acb,addgb,ab等都满足该匹配串_下横线)ESCAPE当用户要查询的字符串本身就含有_时,要使用ESCAPE'<换码字>'短语对通配符进行转义[补充例]查询学号为95001的学生的详细SELECTFROMWHERESnoLIKESELECTFROMWHERESno=例题(续[例4.23]查询所有姓刘学生的 SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘例题(续匹配模板为含通配符的字符串(续[补充例]查询姓" SELECTSname WHERESnameLIKE 例题(续匹配模板为含通配符的字符串(续[例4.24]查询名字中第2个字为“大”或”小" SELECTSname,SnoFROMStudentWHERESnameLIKE [大小例题(续匹配模板为含通配符的字符串(续[例4.25]查询所有不姓刘的学生 SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE刘例题(续符[补充例]查询DB_Design课程的课程号和学分SELECTCno,CcreditFROMCourseWHERECnameLIKEESCAPE例题(续(续[补充例]查询以"DB_"开头,且倒数第3个字符i的课程的详细情况。SELECT WHERECnameLIKE'DB\_%i__'ESCAPE'\ISNULLISNOT“ISNULL”NULL”[例4.27]某些学生选修课程后没有参加考试,所以有选课SELECTSno,CnoFROMSCWHEREGradeIS[例4.28]查所有有成绩的学生学号和课SELECTSno,CnoFROMSCWHEREGradeISNOT多重条件查用逻辑运算符AND和OR来联结多个查询条AND的优先级高于[NOT][NOT]BETWEEN AND[例4.29]查询计算机 在20岁以下的学。SELECTSnameFROMStudentWHERESdept='CS'AND[补充例]查询信息系(IS)、数学系(MA)和计算机科学系(CS) SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS'SELECTSname,Ssex WHERESdept='IS'ORSdept='MA'ORSdept='CS使用ORDERBY子 升序:ASC;降序:DESC;缺省值为升ASCDESC对查询结果排序(续 SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;对查询结果排序(续[例4.31]查询全体学生情况,查询结果学生按降序排列。SELECTFROMORDERBYSdept,Sage5类主要集函COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL列名>)SUM([DISTINCT|ALL列名使用集函数(续MAX([DISTINCT|ALL列名求最小MIN([DISTINCT|ALL列名DISTINCT短语:在计算时要取消指定ALLALL(续[例4.32]查询学生总人数SELECTFROM[例4.33]SELECTCOUNT(DISTINCTFROM注:用DISTINCT以避免重复计算学生(续[例4.34]计算1号课程的学生平均成绩FROMSCWHERECno='1[例4.35]查询选修1号课程的学生最高分数SELECTMAX(Grade)FROMSCWHERCno='1使用GROUPBY细化集函数的作用对 未对查询结果分组,集函数将作用于 使用GROUPBY子句分[例4.37]SELECTCno,COUNT(Sno) GROUPBY(续GROUPBY子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论