近来有个任务要找出SQL Server 2005某个数据库里所有的外键,包括外键表/列名、引用表/列名。随手写了个脚本,放在这里备忘。
-- This script scans your database and stores all FK information,
-- including source table/column and reference table/column.
-- Then it will store this information into table fk,
-- which is created at the beginning.
--- USE [YourDatabaseNameHere];
--- GO
IF NOT EXISTS (SELECT name
FROM sys.tables
WHERE name = N'fk')
BEGIN
CREATE TABLE [dbo].[fk] (
[id] [INT] IDENTITY ( 1 , 1 ) NOT NULL,
[stable] [NVARCHAR](255) NULL,
[scolumn] [NVARCHAR](255) NULL,
[rtable] [NVARCHAR](255) NULL,
[rcolumn] [NVARCHAR](255) NULL,
CONSTRAINT [fk_pk] PRIMARY KEY CLUSTERED ( [id] ASC ) WITH ( pad_index = OFF,ignore_dup_key = OFF ) ON [primary])
ON [primary]
END
ELSE
BEGIN
TRUNCATE TABLE fk
END
GO
--- start processing FKs and store in table fk
DECLARE @tableName NVARCHAR(255);
DECLARE tables CURSOR FOR
SELECT [name]
FROM sys.tables
ORDER BY [name]
OPEN tables;
FETCH NEXT FROM tables
INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO fk
(stable,
scolumn,
rtable,
rcolumn)
SELECT @tableName AS stable,
t1.name AS scolumn,
t2.rtablename AS rtable,
t2.name AS rcolumn
FROM (SELECT col.name,
f.constid AS t
FROM syscolumns col,
sysforeignkeys f
WHERE f.fkeyid = col.id
AND f.fkey = col.colid
AND f.constid IN (SELECT DISTINCT (id)
FROM sysobjects
WHERE Object_name(parent_obj) = @tableName
AND xtype = 'F')) AS t1,
(SELECT Object_name(f.rkeyid) AS rtablename,
col.name,
f.constid AS t
FROM syscolumns col,
sysforeignkeys f
WHERE f.rkeyid = col.id
AND f.rkey = col.colid
AND f.constid IN (SELECT DISTINCT (id)
FROM sysobjects
WHERE Object_name(parent_obj) = @tableName
AND xtype = 'F')) AS t2
WHERE t1.t = t2.t
FETCH NEXT FROM tables
INTO @tableName
END
CLOSE tables
DEALLOCATE tables
GO
SELECT *
FROM fk
分享到:
相关推荐
通常,先创建没有外键约束的表,然后再创建带有外键约束的表。这可以通过查询`DBA_CONSTRAINTS`找出依赖关系并排序实现。 总之,Oracle 9i通过`DBMS_METADATA`包提供了方便的方式来获取数据库对象的DDL语句,极大地...
获取一个SCHEMA下所有对象的DDL语句需要编写更复杂的脚本,循环遍历所有表和索引。这个过程需要注意参照完整性,即表之间的外键约束。重建顺序必须正确,以避免因依赖关系导致的错误。可以查询`DBA_CONSTRAINTS`和`...
创建数据库是构建任何SQL应用的第一步,确保有地方存储后续将创建的所有对象。 创建数据库的命令遵循特定的语法结构,通常形式为: ``` CREATE DATABASE database_name; ``` 其中`database_name`应替换为你希望...
在这个教程中,你可能会学习到以下内容: 1. **基础概念**:包括数据库和表的创建,SQL语言的基本语法,如SELECT、INSERT、UPDATE和DELETE语句用于数据查询和操作。 2. **数据类型**:了解MySQL支持的各种数据类型...
在"exam2.sql"文件中,我们可以预期找到与SQL语句相关的试题,如SELECT、INSERT、UPDATE、DELETE等基本操作,以及更高级的子查询、联接、视图、索引、存储过程等内容。考生需要理解每种语句的作用和用法,并能正确...
### 学生成绩管理系统数据库设计 #### 一、需求分析 ...以上内容涵盖了学生成绩管理系统数据库设计的主要方面,包括需求分析、数据库设计、逻辑设计和实际的SQL脚本示例,为系统的实现提供了完整的指导。
2. **表的设计**: 表是数据库的基础,学习如何定义字段、数据类型、主键、外键以及索引,以确保数据的完整性和一致性。 3. **存储过程与函数**: 存储过程和函数是预编译的SQL代码集合,能提高性能并简化代码复用。...
此外,还需要建立合适的关联,如一个用户可以有多个文章,一篇文章可以有多条评论,这些关联可以通过外键实现。 在前后端交互上,ASP.NET的ADO.NET库提供了与SQL2005数据库的连接和操作能力。开发者可以使用SQL命令...
5. **关系模型**:理解数据库中的表是如何通过主键和外键建立关联的,这在处理多表之间的关系时尤为重要。 6. **查询操作**:学会使用JOIN操作连接多个表,进行复杂的查询。例如,INNER JOIN返回两个表中匹配的记录...
4. **存储引擎**:MySQL有多种存储引擎,如InnoDB(支持事务处理和外键)、MyISAM(读写速度快,不支持事务)等。 5. **安全性**:提供用户权限管理,可设置不同级别的访问控制,保障数据安全。 6. **扩展性**:...
- **创建表加入约束**:包括主键(PRIMARY KEY)、外键(FOREIGN KEY)、唯一键(UNIQUE)、非空(NOT NULL)等。 - **表结构示例**:给出具体的表创建示例,包括字段设计及其约束。 #### 20. 索引 - **建立索引**...
这涉及到字段定义、数据类型选择、主键和外键的设计等。 2. PHP基础:掌握PHP的基本语法,如变量、数组、条件语句、循环、函数等,是理解和修改源码的基础。 3. MVC模式:许多现代PHP应用遵循Model-View-...
取得大于第5条的所有数据 ```sql SELECT * FROM table_name WHERE ROWNUM > 5; ``` ##### 4. 取得薪水最高的前5名 ```sql SELECT * FROM (SELECT * FROM employees ORDER BY salary DESC) WHERE ROWNUM ; ``` ###...
- 外键(Foreign Key):用于建立表与表之间的关联,引用另一个表的主键。 2. SQL语言: - DDL(Data Definition Language):用于创建和修改数据库对象,如CREATE TABLE、ALTER TABLE等。 - DML(Data ...
理解如何定义数据类型、主键、外键以及约束(如UNIQUE、NOT NULL)对于数据完整性至关重要。你还将学习如何使用CREATE TABLE来创建新表,ALTER TABLE来修改现有表结构。 五、索引与查询优化 索引可以显著提高查询...
通过深入学习和练习这些知识点,并结合历年真题,考生可以更好地理解和掌握Access的核心功能,从而在二级Access笔试中取得优异成绩。在复习过程中,不仅要注意理论知识,还要注重实际操作,提高问题解决能力。
- **表**:掌握如何设计和创建表,理解主键、外键和索引的概念,以及`CREATE TABLE`,`ALTER TABLE`和`DROP TABLE`的用法。 4. **数据类型** SQL Server 2005提供多种数据类型,如INT、VARCHAR、DATE等。理解每种...