zoukankan      html  css  js  c++  java
  • SQL Server 语句整理

    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
    (
      col1 type1 [not null] [primary key],
      col2 type2 [not null],
      ..
    )
    --- 根据已有的表创建新表: 
    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only

    5. 删除表

    drop table tabname  

    6. 增加列

    Alter table tabname add column col type
    --- 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

    7. 主键操作

    --- 添加主键: 
    Alter table tabname add primary key(col)
    --- 删除主键: 
    Alter table tabname drop primary key(col) 

    8. 创建索引

    create [unique] index idxname on tabname(col….)
    -- 删除索引:
    drop index idxname
    -- 注:索引是不可更改的,想更改必须删除重新建。

    9. 创建视图

    -- 创建视图:
    create view viewname as select statement 
    -- 删除视图:
    drop view viewname

    10. 基本sql语句

    -- 选择:
    select * from table1 where 范围
    -- 插入:
    insert into table1(field1,field2) values(value1,value2)
    -- 删除:
    delete from table1 where 范围
    -- 更新:
    update table1 set field1=value1 where 范围
    -- 查找:
    select * from table1 where field1 like%value1%---like的语法很精妙,查资料!
    --分组
      一张表,一旦分组 完成后,查询后只能得到组相关的信息。
      组相关的信息:(统计信息) count,sum,max,min,avg  分组的标准
      在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
      在select统计函数中的字段,不能和普通的字段放在一起;
      group by 子句中的表达式可以包含from子句中表、派生表或视图的列。这些列不必显示在select子句<select>列表中
    <select>列表中任何非聚合表达式中的每个表列或视图列都必须包括在group by列表中:
      --允许:
      select colA,colB from tb1 group by colA,colB;
      select
    colA + colB from tb1 group by colA,colB;
      select colA + colB from tb1 group by colA + colB;
      select
    colA + colB + constant from tb1 group by colA,colB; --constant表示常量
      --不允许
      
    select colA,colB from tb1 group by colA + colB;
      select colA + constant + colB from tb1 group by colA + colB;
    
    
        - 如果 select 子句 <select list> 中包含聚合函数,则 GROUP BY 将计算每组的汇总值。这些函数称为矢量聚合。
        - 执行任何分组操作之前,不满足 where子句中条件的行将被删除。
        - having 子句与 group by 子句一起用来筛选结果集内的组。
        - 如果组合列包含 null 值,则所有的 null 值都将被视为相等,并会置入一个组中。
        - 不能使用带有别名的 GROUP BY 来替换 AS 子句中的列名,除非别名将替换 FROM 子句内派生表中的列名。
        - 将不删除 GROUPING SETS 列表中的重复分组集。在以下情况下可能会生成重复分组集:多次指定一个列表达式,或者在 GROUPING SETS 列表中列出同样由 CUBE 或 ROLLUP 生成的列表达式。
        - ROLLUP、CUBE 和 GROUPING sets 支持区分聚合,例如,avg(distinct column_name)、count(distinct column_name) 和 SUM (DISTINCT column_name)。
        - 不能在索引视图中指定 ROLLUP、CUBE 和 GROUPING SETS。
        - 不能直接针对具有 ntext、text 或 image 的列使用 GROUP BY 或 HAVING。这些列可以在返回其他数据类型的函数(如 SUBSTRING() 和 CAST())中用作参数。
        - 不能直接在 <column_expression> 中指定 xml 数据类型方法。相反,可引用内部使用 xml 数据类型方法的用户定义函数,或引用使用这些数据类型方法的计算列。
        - 对于 GROUPING SETS、ROLLUP 和 CUBE 的 GROUP BY 限制

    --
    排序: select * from tb1 order by field1,field2 [desc] -- 总数: select count 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
    -- in
    select * from tb_user where a [not] in ('v1','v2','v3','v4')
    -- between ;
    between限制查询数据范围时包括了边界值,not between不包括
    select * from tb1 where time between t1 and t2
    select a,b,c, from tb1 where a not between
    v1 and v2
    -- top
    select top 10 * from tbName where id < 5
    --注意: n到结尾数据
    select top n * from tbName order by id desc

    11. 查询运算符

    -- 1. UNION 运算符 
    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALLUNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 
    -- 2. EXCEPT 运算符 
    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALLEXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 
    -- 3. INTERSECT 运算符
    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALLINTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 
    -- 注:使用运算词的几个查询结果行必须是一致的。 

    12. 外连接

    -- 1. left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL: 
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c -- 2. right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 -- 3. full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

    13. 数据库操作

    -- 1. 分离数据库: 
    exec sp_detach_db dbName; 
    -- 2. 附加数据库:
    exec sp_attach_db --附加需要完整的路径名 @dbName = N'Test',   --要附加数据库的名字 @filename1 = N'E:xms-workvs-testTest.mdf', @filename2 = N'E:xms-workvs-testTest_log.ldf';
    -- 3. 修改数据库名称 exec sp_renamedb 'oldName','newName'

    14. 表操作

    -- 1. 复制表结构
      -- 1.1
        select * into tbNew from tbOld where 1<>1
      -- 注:"where 1=1"表示全选,"where 1=2"表示全不选
      -- 1.2     select top 0 * into tbNew from tbOld -- 2. 拷贝表数据(同数据库)     insert into tbNew(a,b,c) select d,e,f from tbOld

    15. 在线视图查询

    select* from(select id,username from tb_user)T where t.id<10

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

    delete from tb1 where not exists (
      select * from tb2 where tb1.field1=tb2.field1 )

    17. 随机取出10条数据

    select top 10 * from tablename order by newid()
    -- 随机选择记录
    select newid()

    18. 删除重复记录

    delete from tbName where id not in (
    select max(id) from tbName group by col1,col2,...)

    19. 列出数据库中所有的表名

    select name from sysobjects where type='U' // U代表用户

    20. 列出数据库中所有的列名

    1. select name from syscolumns where id=object_id('tbName')
    2. select name from syscolumns where id in (
        select id from sysobjects where type = 'u' and name = '表名')

    21. 初始化表

    truncate table tbName

    22. 查看与某一个表相关的视图、存储过程、函数

    select a.* from sysobjects a, syscomments b 
    where a.id = b.id and b.text like '%tbName%'
    -- 注: type='P',表示存储过程;type='FN',表示函数

    23. 选择10到15的记录

    1. select top 5 * from (select top 15 * from taName order by id asc) A order by id desc
    2. select top 5 * from tbName where id in(select top 15 id from tbName) order by id desc
  • 相关阅读:
    ASP.Net核心对象HttpRequest
    HTTP状态码和常用对照表
    Http协议之Get和Post的区别
    Http协议之Request和Response
    HTTP协议的几个概念
    表单内容提交到数据库案例
    关于表单提交的规则
    HttpHandler简介
    DHCP(五)
    DHCP(四)
  • 原文地址:https://www.cnblogs.com/SunXiaoLin/p/3411847.html
Copyright © 2011-2022 走看看