SQL语法教育训练.doc_第1页
SQL语法教育训练.doc_第2页
SQL语法教育训练.doc_第3页
SQL语法教育训练.doc_第4页
SQL语法教育训练.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

SQL语法教育训练目标:能够清楚说明SQL与SUNLIKE系统的连接、简单语法使用、SQL效能调整期间:二个星期(下午半天讲师培训,上午自行练习)SQL环境的一些查询指令1 Sp_help/列出目前的Database所有的Table2 Sp_columns authors/列出authors这个Table所有栏位的资讯3 Sp_Server_Info/SQLServer的设定讯息4 Sp_Who/查出SQLServer有谁在上面正在做什么事5 Sp_HelpSort/查出SQLServer的Sort Order6 Sp_HelpServer/查SQLServer Name单一Table的Select1 Select* from Accn/列出Accn这个Table所有的资料2Select Acc_No, Name, Acc_No_Up, DC, Eng_Name from Accn/列出Accn这个Table内的Acc_No, Name,Acc_No_Up,DC,Eng_Name五个栏位的所有资料3Select Acc_No, Name+Eng_Name Frme Accn/列出Accn这个Table内的Acc_No及Name,Eng_Name两个栏位字串相加后的资料4Select Acc_No, Name+Eng_Name as “Full Name” From Accn/同上,并替Name+Eng_Name两个栏位字串相加后的栏位加上表头名称“Full Name”5Select * From Accn Where Acc_No=1111/由Accn这个Table,找出Acc_No这个栏位为1111的资料。6Select * From Accn order by Acc_No/由Accn这个Table,找出Acc_No这个栏位排序由小到大7Select Acc_No, count (*) From Accn Group by Acc_No/由Accn这个Table,找出Acc_No栏位个别计算笔数8Select * From Accn Where Name like 应%/由Accn这个Table,找出Name栏位开头为“应”的资料9Select * From Accn Where Name like %款/由Accn这个Table,找出Name栏位结尾为“款”的资料10Select * From AccnWhere Name like %版%/由Accn这个Table,找出Name栏位资料中有“收”的资料11Select Distinct Mak_No from Vhed/由Vhed个Table,找出Mak_No栏位,但相同的资料只列出一笔12.Select mak_No, Mak_Dat, Voh_Id fromDB_0003.Vhed where Voh_Id=4/若不在Dn_0003的DataBase内,亦可透过指定的方式抓取Db_0003.Vhed的Table,正确的语法database Name. Owner. Table Name Owner若是自己可省略不打。13. Where可以为,in(), not in()14. Select Mak_No, Mak_Dat, Voh_Id From Vhed Where Voh_Id in (3,4)/ 由Vhed这个Table,找出Mak_No, Mak_Dat, Voh_Id栏位,Voh_Id这个栏位为3或4的资料15. Select * From Salm/ 列出Salm这个Table所有的资料16.Select Ps_No订单号码,Sum(Qty)合计From Tf_pss Where Ps_No in (SA91010001,SA97030001) Group by Ps_No/ 由Tp_Pss这个Table,依Ps_No找出Qty栏位全计,且Ps_No这个栏位为SA91010001,SA97030001的资料17.Select Ps_No“订单号码”,Sum(Qty) “合计” From TF_PSS Where Ps_No in (SA91010001,SA97030001) Group by Ps_No Having Sum(Qty) 1/ 由TF_PSS这个Table,依Ps_No找出Qty栏位合计,且PS_No这个栏位为SA91010001,SA97030001的资料,且合计需大于1才列出多个Table的select1 Select * From Mf_pss/ 列出Mf_Pss这个Table所有的资料2.Select * From TF_PSS/ 列出TF_PSS这个Table所有的资料3Select * From MF_PSS, TF_PSS/ 列出MP_PSS及TF_PSS这两个Table所有的资料,请注意这个资料不是我们所想要的,因为列出来的是指两个Table的笔数相乘之后的结果,没能任何关系性,所以请看下面列子4.Select * From MF_PSS, TF_PSS Where MF_Pss. Ps_No=TF_Pss. Ps_No/ 列出MF_PSS及TF_PSS这两个table所有的资料,但两个Table的PS_No相同的资料合并成一笔列出5Select * From Mf_Pss A, TF_Pss B Where A. PS_Id = b.PS_Id/ 同上例,可将MF_PSS取别名A,TF_Pss取别名B,如此若要使用很多栏位时,只要在栏位前面的tablename改用别名表示即可,省略打字的时间,亦不容易打错6.Select A. Ps_id, A. Ps_No,A. PS_Dd,B. Ps_Id from TF_Pss B, MF_Pss A where B. PS_id=A. PS_id and B. Qty100/ 列出MF_Pss及TF_Pss这两个Table的某些栏位,两个Table的Ps_Id相同的资料合并成一笔列出,且TF_Pss的Qty栏位需大于100才列出。7.Select A. Ps_id,A. PS_NO, A. PS_DD from MF_Pss A, TF_PSS B Where B. PS_id=A. PS_id and B. Qty 100./列出MF_PSS这个Table的某些栏位,但参考到TF_PSS这个Table的Qty栏位需大于100才列出8.Select PS_id, Ps_No, PS_DD From DB_0003.MF_PSS Where (PS_Id) in (Select PS_id From TF_PSS Where Qty=100)/ 同上,但请注意第6,7,8三个作法是否类似,但结果不同,在第6,7题会比第8题多出一笔,因为有一个MF_PSS有两笔的TF_Pss,造成第6,7题所列出的资料可能不是我们所要的,若要避免这个情形,就要使用第8题的作法,总结来说:要列出某一Table的资料,却必须参考其它Table的条件,则使用in的语法是最正确的1 Select * From MF_Pss Where Substring (Ps_No,3,4) = 9703/ MF_PSS这个Table,PS_No这个栏位从第三个byte开始四个byte为9703的记录列出来,Substring是一个字串函数2. Select * From MF_Pss Where PS_No Between PC97030001 and 97090003/ 由MF_PSS这个Table,PS_NO这个栏位为介于PC97030001and 97090003的资料,包含PC97030001及970900033. Select PS_No, PS_DD, Qty “订单数量”,Qty * 1.1 “实际出货数量” From TF_PSS/ 由TF_PSS这个Table,列出PS_No,,PS_DD,Qty三个栏位及Qty这个栏位的值乘上1.1之后一起列出4. Select * Into MPSS from MF_Pss/ 将MF_PSS这个Table所有资料写入MPSS的Table内,注意MPSS为新的Table5. Select * Into TPSS from TF_Pss/ 将TF_PSS这个Table所有资料写入TPSS的Table内,注意TPSS为新的Table6. Select * from TPSS7. Delete TPSS Where PS_No = PC97030001/将TPSS这个Table内PS_No为PC97030001的记录删除8.Select * From MPSS Where PS_NO Not in (Select PS_No From TPSS)/将MPSS这个Table内PS_No在TPSS找不到的记录列出来不,意思可以找出有表头没有表身或是有表身没有表头的资料9.Insert into TPSS (Ps_Id, Ps_No, Ps_Dd, Qty, Itm, Wh)Values (SA,SA00310099.2000/3/10, 5, 1, 0000)/ Insert into指令可新增记录到Table内,例如新增资料到TPSS这个Table内,资料值就在Values后面的资料,若Insert全部栏位则TPSS后面的栏位可以省略10Update TPSS Set Qty=6 Where PS_No=PC97030001/ update指令可将栏位值改变,例如将TPSS这个Table内PS_No为PC97030001的记录数量都改为611.BEGINTRANSACTIONSelect * From TPSS Where PS_No= PC97030001Update TPSS Set Qty=10 Where PS_No=PC97030001Select * From TPSS Where PS_No=PC97030001RollbackSelect * From TPSS Where PS_No=PC97030001/ Rollback指令可将Update的资料回复成原来的值12.BEGINTRANSACTIONSelect * From TPSS Where PS_No=PC97030001Update TPSS Set Qty=20 Where PS_No=PC97030001Select * From TPSS Where PS_No=PC97030001CommitSELECT * From TPSS Where PS_No=PC97030001BEGIN TRANSACTIONRollbackSelect * From TPSS Where PS_No=PC97030001/ Commit指令可将Update的资料真正写入资料库内13.Truncate Table TPSS/ Truncate指令可将Table的所有资料全部删除,但Table架构仍在,意即将Table清空14.Drop Table TPSS/ Drop指令可将Table删除SQL的效能调整一、清除LOG文件:1. LOG文件的日渐增大会占用海量存储器,降低SQL工作交通,因此要随时清除。2. 对于刚开始使用SQL时,进入SQL SERVER ENTERPRICE MANAGER (管理器),在指定数据库的PROPERTIES(道具)的OPTIONS(选项)中对AUTO SHRINK及TRUNCATE LOG ON CHECKPOINT两项选项打勾设置即可。3. 如果没进行以上设置,则在SQL SERVER QUERY ANALYZER (分析器)执行如下词句,之后再进行上条所述的设置:CREATE TABLE NEWTABLE (A INT)GOINSERT INTO NEWTABLE VALUES (10)INSERT INTO NEWTABLE VALUES (20)INSERT INTO NEWTABLE VALUES (30)GODECLARE COUNT=1SETCOUNT=1WHILE COUNT 100 BEGINUPDATE NWETABLE SET A=A+1BACKUP LOG 数据库名 WITH TRUNCATE)ONLYDBCC SHRINK DATA BASE (数据库名)SET COUNT=COUNT+1END4. 如果硬盘有分区(比如C盘和D盘),SQL安装在C盘。为节省空间,当LOG文件增大到一定程度,希望转增到D盘,可以进入SQL SERVER ENTERPRICE MANAGER (管理器),在指定数据库的PROPERTIES (道具)的TRANSACTION LOG中新增一个LOG在D盘即可。二、如何做REINDEX1 在SQL SERVER QUERY ANALYZER (分析器)执行如下语句:DBCC DBREINDEX (table)2 在指定数据库的ALL TASKS(任务)中建立MAINTENANCE PLAN(维护计划),按指定期间自动执行JOB即可。3 在sunlike系统中备份出资料,再新建一帐套,恢复回来,系统就会自动重新索引。三、更改CODE PAGE1 执行SP_HELPSORT查看当前的SQL的CODEPAGE。2停掉SQLSERVER。3COPY数据库( SATA*.MDF*.IDF)到指定路径。4执行REBUILDM.EXE (BI

温馨提示

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

评论

0/150

提交评论