




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常用SQL语句,2007-12-4,1,查询语句,select*fromclass;查询表class中的所有列.selectclass,teacherfromclass;查询表class中的列class,teacherSelectcount(*)ascount_allfromclass;返回表class中的总行数给结果集.selectsum(studentnumber)asall_student_numberfromclass:返回class表中studentnumber的总数给结果集selectavg(studentnumber)asavg_student_numberfromclass:返回class中studentnumber的平均值给结果集Selectmax(studentnumber)asmax_studentnumberfromclass:求某个字段的最大值,最小值.min是最小值.select*fromclasswherestudentnumber=(Selectmax(studentnumber)fromclass):求的最大值可以作为条件被引用.Select*fromclasswherestudentnumber=50(50,=50,50):返回studentnumber=50(50,=50,50andteacher=li两个查询条件用and表示与,or表示或.Select*fromclasswherestudentnumberin(44,55):in表示studentnumber为括号中所列的可能值.Select*fromclasswhereclassin(selectclassfromstudent):in中的内容可以是另一个查询语句的结果.Selectdistinctclassfromstudent:查询字段的值不重复select*fromclassorderbystudentnumber(asc,desc):对查询结果排序,可以按升序,也可以按降序.,2,查询语句(续),selectclass,count(*)fromstudentgroupbyclass:查询结果根据groupby分组.selectclass,count(*)fromstudentgroupbyclasshavingcount(*)=5:对分组的结果再用条件过滤select*fromstudentwhereid19:UNION:将两个查询语句的查询结果放在一起,如果有重复的行,就删除,如果是UNIONALL:则重复的行不删除.模糊匹配查询:select*fromstudentwherenamelike%ang%整型,日期类型的字段可以指定范围.用betweenselect*fromstudentwherebornbetween1980-05-04and2983-10-18select*,12fromstudent返回结果中增加一列,且值均为12.selectRTRIM(class)+RTRIM(teacher)ASname1,studentnumberfromclass:将两个字段先删除尾部的空格,再连接起来返回.其中:连接起来的字段名称返回时为name1Selectclass.*,student.*fromclass,studentwhereclass.class=student.class:两个表的内容联合起来查询,字段也可以用JOIN子句实现:select*fromclassJOINstudentonclass.class=student.classJOIN又分为内连接,外连接,左外连接,右外连接等,具体请查看相关的数据库的手册.,3,插入,修改,删除语句,插入:指定字段名称及值的插入Insertintoclass(class,studentnumber,teacher)values(gaoer,55,abc);不指定字段名称的插入Insertintoclassvalues(chuyi,abc,55);一次插入多条记录:只能执行多条insert语句.从另一个表中读出数据插入当前的表先创建一个新表:select*intoclass_bakfromclasswhere1=2insertintoclass_bakselect*fromclasswhereclass=gaoer修改:Updateclasssetclass=gaoererwhereclass=gaoer删除:Deletefromclasswhereclass=gaoerer,4,创建新表,createtabledbo.class_bak(Namenvarchar(25)NOTNULLDEFAULTabcprimarykey,studentnumberintDEFAULT0);insertinto.class_bak(studentnumber)values(23):则插入的值col1的默认值就是abc.复制一个表的结构到一个新表.select*intoclass_bakfromclasswhere1=2:复制一个表为另一个表,如果不导数据,就将条件置为1=2即可.显示某表的建表语句:ORACLE:desctable_nameINFORMIX:dbschmeaSQLSERVER:,5,修改表结构,删除表,Altertableclass_bakaddmonitorvarchar(10);:增加一列Altertableclass_bakalterCOLUMNmontiornvarchar(10):修改一列Altertableclass_bakdropCOLUMNmonitor;:删除一列删除表:Droptableclass_bak,6,索引,用于在查询数据时,加快查询速度,createUNIQUEindexidx1_classonclass(class)在字段class上创建唯一索引,即插入时,该字段不允许重复.名称为idx_classinsertintoclass(class,teacher)values(gaoer,lisi);此插入语句执行第二次将会失败.删除索引:dropindexidx1_classonclass索引的重新生成,重新组织:当一个表经过多次修改,插入,删除后,需要重建索引,以便以后可提高查询效率.但重建的过程是较为消耗资源的.在SCP等业务繁忙的机器上,一定要选择合适的时间段才能重建索引.ALTERINDEXidx_classonclassREBUILD重新生成索引将会删除并重新创建索引。这将根据指定的或现有的填充因子设置压缩页来删除碎片、回收磁盘空间,然后对连续页中的索引行重新排序。ALTERINDEXidx_classonclassREORGANIZE使用最少系统资源重新组织索引。,7,索引使用技巧与数据库性能调优.,查询语句中,对于字符串型的字段,一定要用单引号括起来,对于整型不要用引号,对于日期型的字段,目前暂无定论,是否会对性能有影响.可进一步跟踪.尽量不要用in子句,那样的话无法使用索引,导致查询效率低下,可以改用UNION来连接多个查询.这样可以提高效率.多个查询条件,应该将过滤多的带索引的字段的条件放在前面.查询条件中尽量用等号,不要用大于,小于等,那样可能会用不上索引.在全部查询出所有结果时,要求带上条件1=1,可以避免使用索引,提高效率.,8,创建存储过程,setANSI_NULLSONsetQUOTED_IDENTIFIERONgoCREATEPROCEDUREdbo.get_avage_age-Addtheparametersforthestoredprocedurehereclass_namenchar(10),CheckDatedatetimeASBEGIN-SETNOCOUNTONaddedtopreventextraresultsetsfrom-interferingwithSELECTstatements.SETNOCOUNTON;selectavg(age)fromstudentwhereclass=class_nameandborn=0);约束是表结构的一部分内容,此例的约束是检查年龄字段不要为负值.Updatestudentsetage=-1;/将会报错.删除一个约束:altertablestudentdropconstraintage_negative;,15,主键,主键:表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键(PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义PRIMARYKEY约束来创建主键。一个表只能有一个PRIMARYKEY约束,并且PRIMARYKEY约束中的列不能接受空值。由于PRIMARYKEY约束可保证数据的唯一性,因此经常对标识列定义这种约束。createtabledbo.test6(col1nvarchar(25)NOTNULLDEFAULTabc,col2intDEFAULT23primarykey);首先将原来的主键删除,再建联合主键altertabletest6ADDCONSTRAINTconstraint_1PRIMARYKEY(col1,col2);在两个字段上建联合主键.,16,外键:,外键(FK)是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义FOREIGNKEY约束来创建外键。在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键。ALTERTABLEstudentADDCONSTRAINTFK_classFOREIGNKEY(class)REFERENCESclass(class);删除外键:altertablestudentdropCONSTRAINTFK_CLASS建立外键时,要注意几点:外键在外表中要是主键或索引.两个表的此字段名称最好一样.其他注意事项,项目参考相关数据库的联机帮助文档.例如:外键在外表中重新生成,或重新组织后,或外键的索引被删除后,引起的后果.需要仔细调试.,17,使用游标,setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERPROCEDUREdbo.get_avage_age-Addtheparametersforthestoredprocedurehereclass_namenchar(10),CheckDatedatetimeASBEGIN-SETNOCOUNTONaddedtopreventextraresultsetsfrom-interferingwithSELECTstatements.SETNOCOUNTON;selectavg(age)fromstudentwhereclass=class_nameandtimeCheckDate-Insertstatementsforprocedurehere,18,使用游标(续),DECLAREcur_ageasintDECLAREavg_ageasnumeric(8)DECLAREcountasintDECLAREcurObjectCURSORFORselectagefromstudentwhereclass=class_nameandbornCheckDateorderbyagesetavg_age=0setcount=0OPENcurObjectFETCHNEXTFROMcurObjectINTOcur_ageWHILE(FETCH_STATUS=0)BEGINsetavg_age=avg_age+cur_agesetcount=count+1FETCHNEXTFROMcurObjectINTOcur_ageENDsetavg_age=avg_age/countSELECTAVAGEAGE=avg_age,StudentSum=countclosecurObjectdeallocatecurObjectEND在此存储过程中,使用游标来读取结果集中每个记录的字段值,再求平均值,看看与avg函数的功能是否一样的.,19,使用游标逐条更新表的记录,DECLAREcur_ageasintDECLAREavg_ageasnumeric(8)DECLAREcountasintDECLAREcurObjectCURSORFORselectagefromstudentwhereclass=class_nameandbornCheckDateorderbyageFORUPDATEOFage,englishsetavg_age=0setcount=0OPENcurObjectFETCHNEXTFROMcurObjectINTOcur_ageWHILE(FETCH_STATUS=0)BEGINsetavg_age=avg_age+cur_agesetcount=count+1updatestudentsetenglish=countwherecurrentofcurObjectFETCHNEXTFROMcurObjectINTOcur_ageENDsetavg_age=avg_age/countSELECTAVAGEAGE=avg_age,StudentSum=countclosecurObjectdeallocatecurObject根据游标更新表,还有很多选项,涉及到的细节请具体参考相关数据库的联机帮助!,20,常用函数:日期,DAY(date_expression)-函数返回date_expression中的日期值selectDAY(getdate()MONTH(date_expression)-函数返回date_expression中的月份值selectmonth(getdate()YEAR(date_expression)-函数返回date_expression中的年份值selectYEAR(getdate()DATEADD(,)selectDATEADD(yy,1,getdate()-函数返回指定日期date加上指定的额外日期间隔number产生的新日期GETDATE()-函数以DATETIME的缺省格式返回系统当前的日期和时间Datepart的含义及缩写:年份yy、yyyy季度qq、q月份mm、m每年的某一日dy、y日期dd、d星期wk、ww小时hh分钟mi、n秒ss、s毫秒ms,21,函数的创建,CREATEFUNCTIONCheckFnctn()RETURNSintASBEGINDECLAREretvalintSELECTretval=COUNT(*)FROMclassRETURNretvalEND;删除一个函数:dropfunctiondbo.CheckFnctn,22,函数的修改,setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERFUNCTIONdbo.CheckFnctn()RETURNSintASBEGINDECLAREretvalintSELECTretval=COUNT(*)FROMclassRETURNretvalEND;,23,函数的使用,可以在增,删,改查,视图,触发器,存储过程,约束,等几乎所有地方使用函数.以下是在查询语句中使用函数.selectdbo.CheckFnctn();,24,事务,一个完整的事务就是其中的每个操作要么都完成,要么都不做.回到事务开始前的状态.beginTRANSACTION;ALTERINDEXidx_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考点解析-陕西延安市实验中学7年级数学下册第六章 概率初步同步训练试卷(含答案详解版)
- 难点解析自考专业(小学教育)测试卷带答案(黄金题型)
- 考点解析自考专业(行政管理)真题含完整答案【网校专用】
- 量子隐形传态协议对二零二五年远程婚恋信任教案的启示
- 难点详解冀教版8年级下册期末测试卷及参考答案详解(新)
- 2025年事业单位笔试-湖南-湖南针灸推拿(医疗招聘)历年参考题库典型考点含答案解析
- 2025年事业单位笔试-湖南-湖南中药学(医疗招聘)历年参考题库典型考点含答案解析
- 2025年事业单位笔试-湖北-湖北公共卫生管理(医疗招聘)历年参考题库典型考点含答案解析
- 架线巡检无人机技术-洞察及研究
- 2025年事业单位笔试-新疆-新疆中医五官科学(医疗招聘)历年参考题库典型考点含答案解析
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 网约车停运损失赔偿协议书范文
- 宁波市区成品住宅装修工程质量分户验收规程
- 邢者打板手法系统学习笔记版
- 正确的母乳喂养姿势
- 新北师大版高中英语选择性必修一词汇表(word精校版)
- 什么是标准化沟通
- 产前筛查规范化流程和质量控制侯巧芳 课件
- 询价投标文件范本
- 《固体物理学》全册完整教学课件
- 隧道二衬拱顶模板支架计算书
评论
0/150
提交评论