常用SQL Server 语句

            常用SQL语句大全   

1、//创建数据库

CREATE DATABASE DBName

2、//删除数据库

DROP DATABASE DBName

3、//备份SQL SERVER

--- 创建 备份数据的 device     
USE master     
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_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

          

 

相关文章