zoukankan      html  css  js  c++  java
  • 常用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
  • 相关阅读:
    如何在.netcore 上实现 Rbac 权限管理
    socket编程之TCP开发中的PEEK_MSG的使用与见解
    简述单例模式的一些优缺点及其评价
    排查线上内存泄漏,RingBufferLogEvent类内存占用过高,skyWalking内存占用过高
    Centos7安装docker(报错:container-selinux >= 2:2.74)
    JSP3.4
    Java SM2加密、解密、签名、验签
    获取properties文件中的
    五种生成唯一id方式的对比
    SpringBoot 改造成 https访问
  • 原文地址:https://www.cnblogs.com/yinsq/p/4425440.html
Copyright © 2011-2022 走看看