当前位置: 网学 > 交易代码 > SQL语法 > 正文

超实用SQL语法脚本

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/16

【网学网提醒】:网学会员鉴于大家对十分关注,论文会员在此为大家搜集整理了“超实用SQL语法脚本”一文,供大家参考学习


    ---------------------------------------------------------------------简单查询数据库中的表----------------------------------------------------------------
    select*fromsysobjects
    ----------------------------------------------------------------------查看某表的表结构----------------------------------------------------------------
    sp_columns't_gridstyleproj_web'--语法:sp_columns'表名'
    ------------------------------------------------------------------------删除存储过程---------------------------------------------------------------------
    ifexists(selectnamefromsysobjectswherename='hlzh_proc'andtype='p')
    dropprocedurehlzh_proc--如果有系统中有hlzh_proc这个存储过程则删除它
    ------------------------------------------------------------------------删除表---------------------------------------------------------------------
    ifexists(selectnamefromsysobjectswherelower(name)='aaa'andtype='u')
    begin
    droptableaaa
    end--如果系统中有aaa这个表则删除它(更多type=''可到经典SQL脚本上查找Type)
    ------------------------------------------------------------------------定义字段---------------------------------------------------------------------
    set@sql=('selecttop256*intoaaafrom()b')
    exec(@sql)---大于256行数据将无法转换
    ------------------------------------------------------------------------查用户的存储过程---------------------------------------------------------------------
    select*fromsysobjectswheretype='P'
    go
    selecttextfromsyscommentswhereid=object_id('proc_name')--查询用户的存储过程
    -----------------------------------------------------------------------数据库的导入表---------------------------------------------------------------------
    把数据库A的t1表导入数据库B中去?
    useB
    go
    select*into表名fromA.dbo.t1--表名为存放在数据库B中的表(自定义名称)
    go
    ------------------------------------------------------------------------新增修改列---------------------------------------------------------------------
    altertable表名ADD列名数据类型--修改列
    altertable表名ADD列名数据类型---新增列
    EXECsp_rename'表名','新表名'--重命名表名
    EXECsp_rename'表名.旧列名','新列名','COLUMN'--重命名列名
    ------------------------------------------------------------------------nocount---------------------------------------------------------------------
    nocount的用法
    语法
    setnocount{on|off}
    注释
    当setnocount为on时,不返回计数(表示受transact-sql语句影响的行数)。
    当setnocount为off时,返回计数。
    例:
    setnocounton--执行
    createtablelxc(FIDint,FCodevarchar(10),FNamevarchar(50))
    insertintolxcvalues(1,001,'ss')--执行
    -----------------输出-------------------
    命令已成功完成。
    set
    nocountoff--执行
    createtablelxc(FIDint,FCodevarchar(10),FNamevarchar(50))
    insertintolxcvalues(1,001,'ss')--执行
    -----------------输出-------------------
    (所影响的行数为1行)
    ------------------------------------------------------------------------cast--------------------------------------------------------------------
    cast用法
    定义
    将某种数据类型的表达式显式转换为另一种数据类型。
    语法
    CAST(expressionASdata_type)
    如果@sint把它转成字符,可以这样cast(@sasvarchar)
    -----------------------------------------------------------------------default---------------------------------------------------------------------
    default用法
    语法
    CREATEDEFAULTdefault
    ASconstant_expression
    参数
    default
    默认值的名称。默认值名称必须符合标识符的规则。可以选择是否指定默认值所有者名称。
    例:
    createtabledemo--demo译为调制解调器DEMO
    (
    idint,
    namechar(10),
    contentint,--content译为容量
    cityvarchar(10)default'beijing'--default出现,city的默认值为‘beijing’
    )
    
    select*fromdemo
    demo表如下:
    __________________________
    |id|name|content|city|
    
    
    --插入数据
    insertintodemo
    values(1,'zhangsan',110,'shanghai')
    --成功添加了一条记录
    
    insertintodemo(id,name,content)
    --要使用default值必须在表的后面指定一下要加添的列
    values(2,'lisi',119)
    --后面一列的城市并没有添加,因为设置了默认值,所以它的值会自动变成了'beijing'
    select*fromdemo--测试
    输出结果:
    idnamecontentcity
    ------------------------------------------
    1zhangsan110shanghai
    2lisi119beijing--默认自动生成的‘beijing’
    ----------------------------------------------------------------------Ltrim和Rtrim--------------------------------------------------------------------
    LTRIM和RTRIM用法
    LTRIM
    定义
    删除起始空格后返回字符表达式。
    语法
    LTRIM(character_expression)
    例:
    SELECTLTRIM('test')--test的左右边都有空格
    输出:
    ------
    test--test后面有个空格,而前面的被删了
    RTRIM
    定义
    截断所有尾随空格后返回一个字符串。
    语法
    RTRIM(character_expression)
    例:
    SELECTRTRIM('test')--test的左右边都有空格
    输出:
    ------
    test--test前面有个空格,而后面的被删了
    ---------------------------------------------------------------------space---------------------------------------------------------------------
    SPACE用法
    定义
    返回由重复的空格组成的字符串。
    语法
    SPACE(integer_expression)
    参数
    integer_expression
    是表示空格个数的正整数。如果integer_expression为负,则返回空字符串。
    例:
    显示作者的姓氏并串联一个逗号
    、两个空格和作者的名字。
    createtableauthors(au_IDint,au_lnamevarchar(20),au_fnamevarchar(20))
    insertintoauthorsvalues(1,'林','贤聪')
    SELECTRTRIM(au_lname)+','+space(2)+LTRIM(au_fname)
    FROMauthors
    ORDERBYau_lname,au_fname
    输出:
    -------------------------------------------
    林,贤聪
    -----------------------------------------------------------------------into---------------------------------------------------------------------
    SELECTINTO用法
    定义
    SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。
    SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。
    SQLSELECTINTO语法
    您可以把所有的列插入新表:
    SELECT*
    INTOnew_table_name
    FROMold_tablename
    或者
    只把希望的列插入新表:
    SELECTcolumn_name(s)
    INTOnew_table_name
    FROMold_tablename
    例:
    创建一个名为"Persons_Order_Backup"的新表,其中包含了从Persons和Orders两个表中取得的信息:
    createtablePersons(id_Pint,LastNamevarchar(20))
    createtableOrders(id_Pint,OrderNovarchar(10))
    insertintoPersonsvalues(1,'林贤聪')
    insertintoOrdersvalues(1,'01')
    SELECTPersons.LastName,Orders.OrderNo
    INTOPersons_Order_Backup
    FROMPersons
    INNERJOINOrders
    ONPersons.Id_P=Orders.Id_P
    select*fromPersons
    select*fromOrders
    select*fromPersons_Order_Backup
    --表Persons
    id_PLastName
    -------------------------------
    1林贤聪
    --表Orders
    id_POrderNo
    ---------------------
    101
    --表Persons_Order_Backup
    LastNameOrderNo
    ------------------------------
    林贤聪01
    ------------------------------------------------------------Groupby--------------------------------------------------------------------
    GROUPBY用法
    定义
    语句用于结合合计函数,根据一个或多个列对结果集进行分组。
    语法
    SELECTcolumn_name,aggregate_function(column_name)
    FROMtable_name
    WHEREcolumn_nameoperatorvalue
    GROUPBYcolumn_name
    例:
    createtablet1(IDint,FDatedatetime,FPricefloat,FCustomervarchar(20))
    insertintot1values(1,'2008/12/29',1000,'Bush')
    insertintot1values(2,'2008/11/23',1600,'Carter')
    insertintot1values(3,'2008/10/05',700,'Bush')
    insertintot1values(4,'2008/09/28',300,'Bush')
    insertintot1values(5,'2008/08/06',2000,'Adams')
    insertintot1values(6,'2008/07/21',100,'Carter')
    select*fromt1
    结果
    IDFDateFPriceFCustomer
    -----------------------------------------------------------------------------------------------
    11900-01-0600:00:00.0001000.0Bush
    22008-11-2300:00:00.0001600.0Carter
    32008-10-0500:00:00.000700.0Bush
    42008-09-2800:00:00.000300.0Bush
    5
    2008-08-0600:00:00.0002000.0Adams
    62008-07-2100:00:00.000100.0Carter
    --现在,我们希望查找每个客户的总金额(总订单)。
    --我们想要使用GROUPBY语句对客户进行组合。
    SELECTFCustomer,SUM(FPrice)as'sum(FPrice)'FROMt1
    GROUPBYFCustomer
    结果
    FCustomersum(FPrice)
    --------------------------------------
    Adams2000.0
    Bush2000.0
    Carter1700.0
    union和unionall用法
    定义
    sql语句查询结果合并
    语法
    --合并重复行
    select*fromA
    union
    select*fromB
    --不合并重复行
    select*fromA
    unionall
    select*fromB
    例:
    createtableA(FIDint,FCodevarchar(10),FNamevarchar(10),FClassvarchar(15))
    insertintoAvalues(1,'01','林','二')
    insertintoAvalues(2,'02','贤','一')
    insertintoAvalues(3,'03','聪','二')
    insertintoAvalues(4,'04','lxc','二')
    createtableB(FIDint,FCodevarchar(10),FNamevarchar(10),FSexvarchar(2))
    insertintoBvalues(1,'01','林','二')
    insertintoBvalues(2,'02','贤','一')
    insertintoBvalues(3,'03','聪','二')
    insertintoBvalues(4,'04','lxc','男')
    select*fromB
    select*fromA
    -----------返回结果---------------
    FIDFCodeFNameFSex
    -----------------------------------
    101林二
    202贤一
    303聪二
    404lxc男
    (所影响的行数为4行)
    FIDFCodeFNameFClass
    ----------------------------------------------
    101林二
    202贤一
    303聪二
    404lxc二
    (所影响的行数为4行)
    select*fromA
    union
    select*fromB
    ---------返回结果-----------
    FIDFCodeFNameFClass
    ----------------------------------------------
    101林二
    202贤一
    303聪二
    404lxc二
    404lxc男
    (所影响的行数为5行)
    ------------------------------------------------------------Identity--------------------------------------------------------------------
    IDENTITY用法
    定义
    可增加一个标识列,每个表只允许指定一个标识列
    语法
    selectIDENTITY(数据类型,seed,increment)AS列名
    参数
    seed
    标识数,该值等于上一个IDENTITY值加上increment值。如为100,下个为100+increment
    increment
    用来添加到seed值以获得表中连续行的增量。
    例:
    在Table1中增加一个以2开头且名为ID的递增列。(注:之前并无Table1)
    selectIDENTITY(int,2,1)ASid
    intotable1
    id
    -----------
    2
    (所影响的行数为1行)
    altertabletable1ADDfcodevarchar(5)---
    新增列
    altertabletable1ADDfnamevarchar(5)
    altertabletable1ADDfsexvarchar(2)
    updatetable1setfcode='01',fname='林林',fsex='男'whereid=2--更新列
    insertintotable1values('02','林林1','男')--新增数据(数据ID那列必须为空)
    insertintotable1values('03','林林2','男')
    insertintotable1values('04','林林3','男')
    结果
    idfcodefnamefsex
    --------------------------------
    302林林1男
    403林林2男
    504林林3男
    201林林男
    (所影响的行数为4行)
    例:
    创建个表,自动递增以100开头的列
    createtabletable1(
    idintnotnullidentity(100,1),codevarchar(5),namevarchar(5),sexvarchar(2)
    )
    insertintotable1values('01','林林','男')--增加数据(数据ID那列必须为空)
    insertintotable1values('02','林林1','男')
    insertintotable1values('03','林林2','男')
    insertintotable1values('04','林林3','男')
    结果
    idcodenamesex
    -----------------------------------
    10001林林男
    10102林林1男
    10203林林2男
    10304林林3男
    (所影响的行数为4行)
    
    
    
    
    
    
    
    
    
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------EXECL函数技巧----------------------------------------------------------------------------------------------
    =IF((COUNTIF(C16:C154,"=~~"))=0,"",COUNTIF(C16:C154,"=~~"))--统计C16:C154中等于~~的数量,如果统计结果等于0时,则那个单元格则为空即“”,如果不等于0则还是显示统计结果
    -----------------------------------------------------------------------------------------英文字母大小写转换-------------------------------------------------------------------------------------
    1小写转换为大写:选择A1,在B1中填入公式:=UPPER(A1),其中(A1)是指定需要转换的小写字母所在的单元格。
    2大写转换为小写:选择A1,在B1中填入公式:=LOWER(A1),其中(A1)是指定需要转换的大写字母所在的单元格。
    ----------------------------------------------------------------------------------批量一次性把字母添加到数字前面去-----------------------------------------------------------------------
    1选中该列除产权编号单元格以为的,单击鼠标右键——配置单元格格式——数字——自定义,类型处
    输进"FJK"G/通用格式
    2在D2输进="FJK"&;C2,将公式复制下去。开头可以用挑选性粘贴为数值。
    
  • 上一篇资讯: 跟我学SQL
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号