• 常用SQL Server 语句


                常用SQL语句大全   

    1//创建数据库

    CREATE DATABASE DBName

    2//删除数据库

    DROP DATABASE DBName

    3//备份SQL SERVER

    --- 创建 备份数据的 device     
    USE master     
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
    
    
    --- 开始 备份    
    BACKUP DATABASE pubs TO testBack 

    4//创建新表

    CREATE TABLE TabName   
    (       
    ID INT NOT NULL  PRIMARY KEY IDENTITY(1,1),       
    NAME VARCHAR(50) NOT NULL,   
    )
    
    --根据已有的表创建新表:
    (1) CREATE TABLE tab_new LIKE tab_old (使用旧表创建新表)
    (2) CREATE TABLE tab_new AS SELECT col1,col2… FROM tab_old DEFINITION only

    5//删除新表

    DROP TABLE TabName

    6//增加一个列

    ALTER TABLE TabName ADD col BIT NOT NULL DEFAULT 1
    
    --删除一个列
    
    ALTER TABLE TabName DROP CONSTRAINT 默认约束名   GO  
    ALTER TABLE TabName DROP COLUMN   colName   GO

    注: 因为删除列的时候 有默认约束依赖该字段,那么你需要先删除默认约束(错误提示里会有默认约束名),再删除字段

    7//添加主键

    ALTER TABLE TabName ADD  PRIMARY KEY(col)
    
    --删除主键:
    ALTER TABLE TabName DROP  PRIMARY KEY(col)

    8//创建索引

    CREATE INDEX  IndexName ON TabName(col...)
    
    --删除索引:
    DROP  INDEX IndexName

    索引是不可更改的,想更改必须删除重新建


    9//创建视图

    CREATE VIEW ViewName
         AS
          SELECT col1,col2
          FROM TabName
      GO
    
    --删除视图:
    DROP VIEW ViewName

     

    10//创建存储过程

    CREATE PROC  Proc_Name   
    AS   
         SELECT *   
         FROM TabName     
    GO
    
    --调用、执行存储过程   
    EXEC  Proc_Name
    
    --修改存储过程  
    ALTER PROC  Proc_Name   
    AS   
        SELECT *   
        FROM TabName 
    GO
    
    --删除存储过程
    DROP PROC Proc_Name     

     
    11//多连接表

    --内连接
    
       SELECT * 
       FROM  Tab1 AS t1   INNER JOIN  Tab2 AS  t2 ON  t1.ID = t2.ID
    
    --左连接
    
       SELECT * 
       FROM  Tab1 AS t1   LEFT JOIN  Tab2 AS  t2 ON  t1.ID = t2.ID
    
    --右连接
    
       SELECT * 
       FROM  Tab1 AS t1   RIGHT JOIN  Tab2 AS t2 ON t1.ID = t2.ID

    12、//复制表(只复制结构,源表名:a 新表名:b)

    SELECT * INTO b FROM a WHERE <>1


    13//拷贝表(拷贝数据,源表名:a 目标表名:b)

    INSERT INTOb(号,姓名,龄)
    SELECT 号,姓名,龄
    FROM a

    14//跨数据库之间表的拷贝(具体数据使用绝对路径)

    INSERT INTOb(a, b, c)
    SELECT d,e,f
    FROM b  IN ‘具体数据库’
    WHERE  条件

    15//子查询(表名1:a 表名2:b)

    SELECT a,b,c
    FROM a
    WHERE a IN (
           SELECT d
           FROM b ) 

    16//显示文章、提交人和最后回复时间

    SELECT a.title,a.username,b.adddate
    FROM table a,(
          SELECT MAX(adddate) adddate
          FROM table
          where table.title=a.title ) b

     

    17//在线视图查询(表名1:a )

    SELECT *
    FROM  (
          SELECT a,b,c
          FROM a
                ) T
    WHERE  t.a > 1; 

    18//between的用法,between限制查询数据范围时包括了边界值,not between不包括

    SELECT *
    FROM table1
    WHERE time BETWEEN time1 AND time2

     

    19//in 的使用方法

    SELECT *
    FROM table1
    WHERE a NOT IN (‘值1’,’值2’,’值4’,’值6’)

    20//两张关联表,删除主表中已经在副表中没有的信息

    DELETE FROM  table1
    WHERE not exists (
        SELECT *
        FROM  table2
        WHERE  table1.field1=table2.field1 )

    21、//日程安排提前五分钟提醒

    SSELECT *
    FROM 日程安排
    WHERE DATEDIFF('minute',f开始时间,GETDATE())>5

    22//一条sql 语句搞定数据库分页

      //思想:    

    SELECT TOP 10 b.* FROM (SELECT TOP 20 主键字段,排序字段 FROM 表名 ORDER BY  排序字段 DESC ) a,表名 b WHERE b.主键字段 = a.主键字段 ORDER BY  a.排序字段

      //实现:

    DECLARE @start INT,@end INT
           @sql  NVARCHAR(600)
    
    SET @sql=SELECT TOP+str(@end-@start+1)++FROM T WHERE rid NOT IN(SELECT TOP+str(@str-1)+’Rid FROM T WHERE Rid>-1)’
    
    EXEC sp_executesql @sql

    :在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引

     

    23//前10条记录

    SELECT TOP *
    FROM TABLE
    WHERE 范围

     

    24//选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

    SELECT a,b,c 
    FROM tablename ta 
    WHERE a=(
        SELECT MAX(a) 
        FROM tablename tb 
        WHERE tb.b=ta.b)

     

    25//包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表

    (SELECT a FROM tableA ) EXCEPT 
    (SELECT a FROM tableB ) EXCEPT 
    (SELECT a FROM tableC ) 

     

    26//随机取出10条数据

    SELECT TOP 10 *
    FROM TABLENAME
    ORDER BY  NEWID()

     

    27//删除重复记录

    DELETE FROM TABLENAME
    WHERE id NOT IN (
            SELECT MAX(id)
            FROM TABLENAME
            GROUP BY col1,col2,。。。)        

     

    28//列出数据库里所有的表名

    SELECT name
    FROM SYSOBJECTS
    WHERE type=‘U’      -- U代表用户

     

    29//列出表里的所有的列名

    SELECT name
    FROM SYSCOLUMS
    WHERE id = object_id('TABLENAME')

     

    30、//简单CASE函数和CASE搜索函数

    
    
    --简单Case函数
    CASE sex
        WHEN '1' THEN ''
        WHEN '2' THEN ''
    ELSE '其他' END
    
    --Case搜索函数
    CASE   
       WHEN sex = '1' THEN ''
      WHEN sex = '2' THEN ''
    ELSE '其他' END
    
    

    31//初始化表table1

    TRUNCATE TABLE table1

    32//添加假数据

    -- 需要创建一张表 两个字段 一个用户名 一个密码
        DECLARE @username VARCHAR(50) --用户名
        DECLARE @password VARCHAR(50) --密码
        DECLARE @score int --数量
      
        SET @score = 0;
         -- 循环一百次
        WHILE(@score<100)
        BEGIN
            SET @username = 'test'+ CAST(@Score AS VARCHAR(50) )
            SET @password = '123456'+ CAST(@Score AS VARCAHR(50) )
       
            INSERT INTO TableName
            VALUES(@username,@password)
            SET @score =@score+1;
        END

    33//几个简单的基本的sql语句

    --选择
    SELECT * FROM table1 WHERE 范围
    --插入
    INSERT INTO table1(field1,field2) VALUSE(value1,value2)
    --删除
    DELETE FROM table1 WHERE 范围 
    --更新
    UPDATE table1 SET field1=value1 WHERE 范围
    --查找
    SELECT * FROM table1 WHERE field1 LIKE%value1%---like的语法很精妙,查资料!
    --排序
    SELECT * FROM table1 ORDER BY  field1,field2 DESC
    --总数
    SELECT COUNT(1) AS totalcount FROM table1
    --求和
    SELECT SUM(field1) AS sumvalue FROM table1
    --平均
    SELECT AVG(field1) AS avgvalue FROM table1    
    --最大
    SELECT MAX(field1) AS maxvalue FROM table1  
    --最小
    SELECT MIN(field1) AS minvalue FROM table1
              
    Mr_Damon
  • 相关阅读:
    2015.2.27 UltraEdit中显示XML结构
    2015.1.31 DataGridView自动滚动到某行
    2015.1.15 利用函数实现将一行记录拆分成多行记录 (多年想要的效果)
    2015.1.15 利用Oracle函数返回表结果 重大技术进步!
    2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效
    2015.1.8 Left join 左连接
    2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
    delphi 遍历窗口
    delphi 访问 protected 属性 哈哈
    clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈
  • 原文地址:https://www.cnblogs.com/yinsq/p/4425440.html
Copyright © 2020-2023  润新知