`

MS-SQL数据库笔记

阅读更多

1. 树(sql2005以上版本)

--通过子节点查询父节点
WITH 
TREE AS( 
    SELECT * FROM tstructure 
    WHERE id = 6  -- 要查询的子 id 
    UNION ALL 
    SELECT tstructure.* FROM tstructure, TREE 
    WHERE TREE.parent = tstructure.id
) 
SELECT * FROM TREE

--通过父节点查询子节点
WITH TREE AS 
(   
    SELECT t.*, 0 level FROM t_sys_menu t WHERE t.menu_id = 1  -- 要查询的父 id
    UNION ALL   
    SELECT m.*, Tree.level + 1 FROM t_sys_menu m, TREE WHERE m.up_menu_id = TREE.menu_id  
)   
SELECT * FROM TREE  

 

2. 从结果集更新表 

update t_health_gps 
set latitude = b.lat, longitude = b.lng 
from t_health_gps a , 
(select x.aged_id, 
y.community, y.detailed, 
z.area_name,z.position, 
u.gps_id, u.latitude,u.longitude,
SUBSTRING(z.position, 0, CHARINDEX(',', z.position)) as lng,
SUBSTRING(z.position, CHARINDEX(',', z.position) + 1, LEN(z.position)) as lat
from t_aged x, t_aged_address y, t_area_dict z, t_health_gps u
where x.aged_id = y.aged_id  and y.community = z.area_id and u.aged_id = x.aged_id 
) as b
where a.gps_id = b.gps_id

 

3. 注释

EXECUTE sp_addextendedproperty N'MS_Description', '服务商信息表',
	 N'user', N'dbo', N'table', N't_sp_company', NULL, NULL;
EXECUTE sp_addextendedproperty N'MS_Description', '服务商ID',
	 N'user', N'dbo', N'table', N't_sp_company', N'COLUMN', N'sp_id';

 

4. 修改字段

alter table t_member alter column face_url varchar(500);

 

5. 分页查询

-- sqlserver 2000不支持ROW_NUMBER()
SELECT * FROM t_table as t1 , 
( SELECT TOP 20 ROW_NUMBER() OVER (ORDER BY t1.id DESC) as n,  t1.id FROM t_table as t1 ) t2 
WHERE t1.id = t2.id and t2.n > 10 ;
-- 通用
SELECT * FROM t_table as t1
WHERE t1.id in
(
	SELECT TOP 10 t1.id FROM 
	(
		SELECT TOP 20 t1.id FROM t_table as t1 ORDER BY t1.id DESC
	) as t1 ORDER BY t1.id ASC
)
ORDER BY t1.id DESC;

 

6. 强制清空数据库所有表的数据

-- 强制清空数据库所有表的数据
CREATE PROCEDURE sp_DeleteAllData
AS
	-- sp_MSForEachTable !!注意:微软官方文档对此存储过程没有详细描述
	
	-- 禁用约束
	EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
	-- 禁用触发器
	EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'
	-- 删除所有表的数据
	EXEC sp_MSForEachTable 'DELETE FROM ?'
	-- 启用约束
	EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
	-- 启用触发器
	EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'
	-- 执行检查, 可省略
	EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'
GO


-- 执行存储过程
EXEC sp_DeleteAllData;

 

7. 删除所有表

--/第1步**********删除所有表的外键约束*************************/

DECLARE c1 cursor for
select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '
from sysobjects
where xtype = 'F'
open c1
declare @c1 varchar(8000)
fetch next from c1 into @c1
while(@@fetch_status=0)
begin
exec(@c1)
fetch next from c1 into @c1
end
close c1
deallocate c1

--/第2步**********删除所有表*************************/

 
GO
declare @sql varchar(8000)
while (select count(*) from sysobjects where type='U')>0
begin
SELECT @sql='drop table ' + name
FROM sysobjects
WHERE (type = 'U')
ORDER BY 'drop table ' + name
exec(@sql) 
end

 

 8. 表|列|索引-重命名

-- 基本语法:
-- sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'  [ , [ @objtype = ] 'object_type' ]

--eg:
-- 1. table
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr'; 

-- 2. column
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN'; 

-- 3. index
GO EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';

 9. 查找外键信息

-- 外键约束名称, 子表, 子表列, 父表
select fk.name fkname , ftable.name ftablename, cn.name fkcol, rtable.name ftablename from sysforeignkeys 
  join sysobjects fk 
    on sysforeignkeys.constid = fk.id 
  join sysobjects ftable 
    on sysforeignkeys.fkeyid = ftable.id 
  join sysobjects rtable 
    on sysforeignkeys.rkeyid = rtable.id 
  join syscolumns cn 
    on sysforeignkeys.fkeyid = cn.id and sysforeignkeys.fkey = cn.colid

 

分享到:
评论

相关推荐

    MySQL数据库笔记.doc

    * 关系型数据库是指使用关系模型来组织和存储数据的数据库,例如 MySQL、Oracle、MS SQL Server 等。 * 关系型数据库的特点是使用表来存储数据,每个表都有行和列,行表示记录,列表示字段。 MySQL 数据库的安装和...

    MS SQL SERVER学习笔记

    ### MS SQL SERVER 学习笔记知识点汇总 #### 数据库技术简介 **基本概念** - **数据库**: 计算机存储器中用于存储数据的仓库,是数据管理的基础。 - **数据库系统**: 包括数据库、数据库管理系统(DBMS)、应用...

    sql server资料收集,再也不求人 -数据库学习个人笔记

    数据库 SQL备份和还原 , 数据库资料, MS SQL SERVER数据库置疑后恢复步骤 MSSQL中如何用SQL清除所有表的数据,SQL优化,配置SQL内存,利用触发器实现标识列连续,清理过大的日志文件

    chx 学习jForum笔记十八 jForum与ms sqlserver

    《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...

    sql数据库试卷.pdf

    "SQL 数据库管理与开发教程与实训" 试卷笔记 本试卷涵盖了 SQL 数据库管理与开发的基本概念、SQL 语言基础、数据库设计、数据查询、数据操纵、数据库安全等方面的知识点。 一、单项选择题 1. 数据库特点不包括...

    MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar

    MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; SQLServer; 2008; 维护; 管理; 优化; 第二部分(共两部分)

    MySQL数据库学习笔记

    数据库(DataBase,简称DB):数据库是一个按数据结构来存储和管理数据的计算机软件系统。 存储和管理数据的仓库. 操作数据库:CRUD 数据库管理系统(DataBase Management System:DBMS)...SQL Server MS ,收费. DB2 IBM

    java笔记\Oracle里sql不能用limit的处理

    Java笔记--Oracle中SQL不能用Limit的处理 在Java开发中,我们经常需要对数据库进行分页查询,但是Oracle数据库不支持Limit关键字,那么如何在Oracle中实现分页查询呢?下面,我们将详细介绍Oracle中SQL不能用Limit...

    SQLDeveloper-forMac

    除了oracle数据库,sybase、mysql、mssqlserver、MS Access等数据库也可以访问和查看数据。同一个界面可以登录多个数据库,方便多个数据库之间的操作。 优点是由于占用更多的内存,执行几十个或者几百个sql的效率...

    Mysql数据库索引(2)- 为select设计索引- 自学笔记

    ### MySQL数据库索引设计原理与实践 #### 一、理论基础 ##### 1.1、一个例子 在MySQL中,合理的索引设计对于提高查询效率至关重要。为了更好地理解这一点,我们可以通过一个具体的例子来深入探讨。 假设有一个...

    MYSQL知识学习过程笔记

    常见的数据库管理系统有MySQL、Oracle、MS SqlServer、DB2、sybase等。 SQL是结构化查询语言,程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。...

    最最全面的SQl笔记和语法

    - Millisecond (ms) - DayOfWeek (dw) **3. 字符串函数** - **位置查询** ```sql CHARINDEX(子字符串, 字符串); ``` 返回子字符串在字符串中的起始位置。 - **长度** ```sql LEN(字符串); ``` 返回字符...

    全国计算机等级考试二级ACCESS数据库程序设计随堂笔记---查询.pdf

    - 注意大小写敏感性,某些数据库对大小写敏感,如MS Access。 - 使用表的主键进行关联,可提高查询速度。 - 对于大型数据库,合理建立索引,有助于加快查询速度。 在准备全国计算机等级考试二级ACCESS数据库程序...

    MSSQL 学习笔记.docx

    【MSSQL 学习笔记】中涵盖了多个关键知识点,主要涉及SQL Server的查询操作、存储过程、日期处理以及数据库的连接与管理。以下是对这些知识点的详细解释: 1. **DISTINCT**: 在SQL中,DISTINCT关键字用于去除查询...

    MYSQL学习笔记

    1. **MS-DOS方式**:即命令行方式,通过输入特定命令来执行数据库操作。 2. **可视化操作方式**:如使用**phpMyAdmin**等工具,用户可以通过图形界面直观地管理和操作数据库。 #### 数据库操作流程 1. 客户端连接...

    达内的课堂笔记

    - 对于SQL Server数据库: ``` "Provider=SQLOLEDB;DataSource=serverName;InitialCatalog=databaseName;UserID=MyUserID;Password=MyPassword;" ``` #### 关闭连接 - **Close方法**:关闭当前的数据库连接。 ...

    软件工程师学习笔记大全(C++ JAVA)

    JDBC.doc: JDBC(Java Database Connectivity)是Java访问数据库的标准API,笔记可能讲解如何连接数据库、执行SQL语句、处理结果集以及事务管理等。 EJB笔记.doc: EJB(Enterprise JavaBeans)是Java EE平台的一...

    Installation Guide SAP ERP 6.0 on Windows: MS SQL Server

    ### SAP ERP 6.0 安装指南:MS SQL Server 版本 #### 概述 本文档旨在为系统管理员和技术顾问提供安装 SAP ERP 6.0 (EHP4 准备就绪版 ABAP) 在 Windows 系统上配合 MS SQL Server 的详细指导。该文档基于 SAP ...

    oracle 高手笔记

    - MS SQL Server - IBM DB2/Informix - MySQL - Sybase ASE - **环境变量配置示例:** - `$PATH` 包含 `/oracle/data/oracle/product/9.2.0/bin` 表示 Oracle 安装路径。 - `$ORACLE_SID` 用于指定当前数据库...

Global site tag (gtag.js) - Google Analytics