网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL技巧集

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员,鉴于大家对SQL技巧集十分关注,会员在此为大家搜集整理了“SQL技巧集”一文,供大家参考学习!


    常用SQL语句范例
    第一章
    数据库的操作
    第二章
    数据表的操作
    一、创建表createtable表名(字段名1字段名2字段名3数据类型(字段宽度)数据类型(字段宽度)数据类型(字段宽度)[约束],[约束],[约束]);
    主要两个约束:如notNULL、NULL二、删除表droptable表名三、修改表的结构(altertable)(1)add为增加列或约束的子句altertable学生add家庭住址varchar(30)notNULL(2)altercolumn为修改表列属性的子句altertable学生altercolumn家庭住址varchar(50)NULL(3)dropcolumn为删除字段
     altertable学生dropcolumn家庭住址四、设置字段自动编号(每次自动加1)(1)类型为:INT五、复制表(1)整表复制:select*into目的表名from数据源表名(2)整表结构:selecttop0*into目的表名from数据源表名六、检测表是否存在当然,在建立一个表之前,我们应该先查询一下它是否已经存在于数据库中,查询命令如下(以SPT为例):SQL_CommandStr="SELECTcount(id)ascntidFROMsysobjectsWHEREname='检测表名'andxtype='u'"=SQLEXEC(Sql_Connect,SQL_CommandStr,"SqlCurs")IFSqlCurstid>0MESSAGEBOX("要检测的表已经存在",16,"重复")ENDIF(2)标识为:是(3)标识增量为:1
    第三章
    数据类型
    一、字符型转换数值型convert(int,'1321')或cast(字段名称asint)access则为CDbl(字段)
     第四章
    数据处理
    一、显示编号有重复的记录,并且仅显示其中一个。SELECTyhbh,yhxm,yhdzFROMuser_IGROUPBYyhbh,yhxm,yhdzHAVING(COUNT(*)>=2)二、显示所有编号重复的记录SELECT*FROMuser_IWHERE((SELECTCOUNT(yhbh)FROMuser_IaWHEREa.yhbh=user_I.yhbh)>1)ORDERbyyhbh三、求文本型字段的最大值selectmax(cast(字段名称asint))fromtable四、显示某字段不重复的记录SELECT*FROMOrdersGROUPBYPartNo五、显示不重复(完全不重复)记录SELECTDISTINCT六、删除全部重复记录deletefromstudentgroupbynumhavingcount(num)>1七、删除这些重复记录中SERIAL为最大值的行selectreg_no,doc_no,max(serial)fromtest3groupbyreg_no,doc_nohavingcount(*)>1;
     八、合并结果集(UNION)SELECT*FROMuser_IWHERElen(yhbh)<7UNIONSELECT*FROMuser_IWHERElen(yhbh)>7九、从一个表将数据更新到另一个表要更新的表:sy2数据源表:sy1
    目标:将编号相同的表sy1中的sj字段数据存储到表sy2中的sj字段UPDATEsy2SETsy2.sj=sy1.sjFROMsy1sy1.yhbh)(注:set与from,where子句的顺序不要改变)十、将一表N个字段数据插到另一表的N个字段INSERTINTO插入的表(字段1,字段2,…,字段N)SELECTWHERE(sy2.yhbh=
    (字段1,字段2,…,字段N)FROM数据源表WHERE条件(注:两表的字段名不一定相同)十一、显示某字段不重复记
    录(可应用于ListBox)方法1:SELECT*FROMOrdersGROUPBYPartNo这样如果PartNo字段有重复记录(其它字段不一定重复),则返回的记录针对指定字段分组,去掉该字段重复的记录。方法2:select*fromtblExampletinnerjoin(selectmax(id)asMaxID,namefromtblExamplegroupbyname)t1ont.id=t1.maxid可是还有个怪问题。为什么我最后用orderbyid结果显示的每行记
     录都有一个副本啊!SELECTDISTINCT*FROMcn1WHERE(idIN(SELECTMAX(id)ASExpr1FROMcn1GROUPBYname))AND(name<>'')ORDERBYname这样问题就解决了!关键是你那个MAX(ID),哈哈……再次感谢谢!
    十二、将一数据库的表插入到另外一数据库
    如果是ACCESS,则如下:insertintotb1select*from[c:\路径\另一个库.mdb].tb1如果是SQLSERVER则如下:INSERTINTOTB1SELECT*FROM[库].[dbo].[tb1]如果在两数据库都在同一台机器上则可用下法:INSERTINTOdb1..TB1({Fields})SELECT{Fields}FROMdb2..tb2还可如下:InsertInto_BSELECTa.*FROMOPENROWSET
    ('SQLOLEDB','seattle1';'sa';'MyPass','SELECT*FROMpubs.dbo.authorsORDERBYau_lname,au_fname')ASa或者使用InsertInto_BSELECTa.*FROMOPENROWSET('MSDASQL','DRIVER={SQLServer};SERVER=seattle1;UID=sa;PWD=MyPass',pubs.dbo.authors)ASaORDERBYa.au_lname,a.au_fname十三、删除两个表中编号不相同的记录
     delete*FROMgrjlwherebhnotin(selectbhfromrszk)十四、列出有某字段有重复的记录selecttxmfromrkkcbgroupbytxmhavingcount(txm)>1
    十五、列出两表中某字段值相同的记录select*fromrkkcbawhereexists(select*fromrklsbbwherea.txm=b.txm)
    第五章数据导入导出
    一、从SQL-SERVER数据导出到ACCESS数据库实例一、将数据库wlgl中的pass表导入access数据A中的pass表。INSERTINTOOPENROWSET('Microsoft.Jet.OLEDB.4.0','e:\A.mdb';'admin';'',pass)SELECT*FROMwlgl..pass
    二、将ACCESS数据库数据导入到SQL-SERVER数据库实例二、将access数据库中的pass表导入wlgl数据库中的pass表。insertintopassselect*fromopenrowset('Microsoft.Jet.OLEDB.4.0','e:\A.mdb';'admin';'',pass)
    上面两项的说明:
     (1)access数据库A.mdb与其表pass是事先建立好的,并且表pass与wlgl中的表pass结构相同。(2)access数据库A.mdb是没有密码的数据库。(3)偿还操作均在SqlServer环境下操作。
    三、ACCESS数据库间数据的相互导入导出实例三、将当前数据库中的表pass导出到数据库h:\aaa\b.mdb中,且表名为pass1。select*intopass1in'h:\aaa\b.mdb'frompass
    
    
  • 下一篇资讯: SQL技巧整理
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师