下载行政区划mysql表设计_行政区划数据数据库的设计(脚本)
/*************************************************************
Author: LzmTW(水如烟)
Create date: 20060921
Description: 行政区划数据数据库生成脚本,适用于SQLServer2005
***************************************************************/
USE [master]
GO
/****** 对象: Database [RegionalCodeWorks] 脚本日期: 09/21/2006 20:38:21 ******/
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'RegionalCodeWorks')
DROP DATABASE RegionalCodeWorks
GO
CREATE DATABASE RegionalCodeWorks
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'RegionalCodeWorks', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [RegionalCodeWorks].[dbo].[sp_fulltext_database] @action = 'disable'
end
GO
ALTER DATABASE [RegionalCodeWorks] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET ANSI_NULLS OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET ANSI_PADDING OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET ARITHABORT OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [RegionalCodeWorks] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [RegionalCodeWorks] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [RegionalCodeWorks] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET ENABLE_BROKER
GO
ALTER DATABASE [RegionalCodeWorks] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [RegionalCodeWorks] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [RegionalCodeWorks] SET READ_WRITE
GO
ALTER DATABASE [RegionalCodeWorks] SET RECOVERY SIMPLE
GO
ALTER DATABASE [RegionalCodeWorks] SET MULTI_USER
GO
ALTER DATABASE [RegionalCodeWorks] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [RegionalCodeWorks] SET DB_CHAINING OFF
USE [RegionalCodeWorks]
GO
/****** 对象: Schema [Program] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'Program')
EXEC sys.sp_executesql N'CREATE SCHEMA [Program] AUTHORIZATION [dbo]'
GO
/****** 对象: Schema [FUNCTION] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'FUNCTION')
EXEC sys.sp_executesql N'CREATE SCHEMA [FUNCTION] AUTHORIZATION [dbo]'
GO
/****** 对象: Schema [Edit] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'Edit')
EXEC sys.sp_executesql N'CREATE SCHEMA [Edit] AUTHORIZATION [dbo]'
GO
/****** 对象: Schema [Base] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'Base')
EXEC sys.sp_executesql N'CREATE SCHEMA [Base] AUTHORIZATION [dbo]'
GO
/****** 对象: Schema [Action] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'Action')
EXEC sys.sp_executesql N'CREATE SCHEMA [Action] AUTHORIZATION [dbo]'
GO
/****** 对象: Table [Base].[行政区级别] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Base].[行政区级别]') AND type in (N'U'))
BEGIN
CREATE TABLE [Base].[行政区级别](
[级别ID] [smallint] IDENTITY(0,1) NOT NULL,
[级别] [nchar](10) NOT NULL,
CONSTRAINT [PK_行政区级别] PRIMARY KEY CLUSTERED
(
[级别ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY],
CONSTRAINT [IX_行政区级别] UNIQUE NONCLUSTERED
(
[级别] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
/****** 对象: Default [Base].[RegionalDateDefault] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Base].[RegionalDateDefault]') AND OBJECTPROPERTY(id, N'IsDefault') = 1)
EXEC dbo.sp_executesql N'/****** 对象: Default [Salary].[SalaryDateDefault] 脚本日期: 09/17/2006 14:44:13 ******/
--USE EmployeeWorks
CREATE DEFAULT [Base].[RegionalDateDefault] AS N''Current'''
GO
/****** 对象: Rule [Base].[RegionalCodeRule] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Base].[RegionalCodeRule]') AND OBJECTPROPERTY(id, N'IsRule') = 1)
EXEC dbo.sp_executesql N'
CREATE RULE [Base].[RegionalCodeRule]
AS
@value LIKE ''[1-9][0-9][0-9][0-9][0-9][0-9]''
'
GO
/****** 对象: Table [Base].[行政区类型] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Base].[行政区类型]') AND type in (N'U'))
BEGIN
CREATE TABLE [Base].[行政区类型](
[类型ID] [smallint] IDENTITY(0,1) NOT NULL,
[类型] [nvarchar](50) NOT NULL,
[级别ID] [smallint] NOT NULL,
CONSTRAINT [PK_行政区类型] PRIMARY KEY CLUSTERED
(
[类型ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY],
CONSTRAINT [IX_行政区类型] UNIQUE NONCLUSTERED
(
[类型] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
/****** 对象: UserDefinedDataType [Base].[RegionalDate] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'RegionalDate' AND ss.name = N'Base')
CREATE TYPE [Base].[RegionalDate] FROM [nvarchar](8) NOT NULL
GO
EXEC sys.sp_bindefault @defname=N'[Base].[RegionalDateDefault]', @objname=N'[Base].[RegionalDate]' , @futureonly='futureonly'
GO
/****** 对象: UserDefinedDataType [Base].[RegionalCode] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'RegionalCode' AND ss.name = N'Base')
CREATE TYPE [Base].[RegionalCode] FROM [nchar](6) NOT NULL
GO
EXEC sys.sp_bindrule @rulename=N'[Base].[RegionalCodeRule]', @objname=N'[Base].[RegionalCode]' , @futureonly='futureonly'
GO
/****** 对象: Table [Base].[区划码] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Base].[区划码]') AND type in (N'U'))
BEGIN
CREATE TABLE [Base].[区划码](
[区划码ID] [smallint] IDENTITY(1,1) NOT NULL,
[区划码] [Base].[RegionalCode] NOT NULL,
[一级] AS (substring([区划码],(1),(2))),
[二级] AS (substring([区划码],(3),(2))),
[三级] AS (substring([区划码],(5),(2))),
CONSTRAINT [PK_区划码] PRIMARY KEY CLUSTERED
(
[区划码ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY],
CONSTRAINT [IX_区划码] UNIQUE NONCLUSTERED
(
[区划码] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF
/****** 对象: Index [IX_区划码_1] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Base].[区划码]') AND name = N'IX_区划码_1')
CREATE NONCLUSTERED INDEX [IX_区划码_1] ON [Base].[区划码]
(
[一级] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF
/****** 对象: Index [IX_区划码_2] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Base].[区划码]') AND name = N'IX_区划码_2')
CREATE NONCLUSTERED INDEX [IX_区划码_2] ON [Base].[区划码]
(
[二级] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF
/****** 对象: Index [IX_区划码_3] 脚本日期: 09/21/2006 20:38:24 ******/
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[Base].[区划码]') AND name = N'IX_区划码_3')
CREATE NONCLUSTERED INDEX [IX_区划码_3] ON [Base].[区划码]
(
[三级] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
GO
EXEC sys.sp_bindrule @rulename=N'[Base].[RegionalCodeRule]', @objname=N'[Base].[区划码].[区划码]' , @futureonly='futureonly'
GO
/****** 对象: Table [Edit].[区划码情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Edit].[区划码情况]') AND type in (N'U'))
BEGIN
CREATE TABLE [Edit].[区划码情况](
[ID] [int] IDENTITY(1,1) NOT NULL,
[区划码ID] [smallint] NOT NULL,
[截止日期] [Base].[RegionalDate] NOT NULL,
[名称] [nvarchar](100) NOT NULL,
[起始日期] [Base].[RegionalDate] NOT NULL,
CONSTRAINT [PK_区划码情况] PRIMARY KEY CLUSTERED
(
[区划码ID] ASC,
[截止日期] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
EXEC sys.sp_bindefault @defname=N'[Base].[RegionalDateDefault]', @objname=N'[Edit].[区划码情况].[截止日期]' , @futureonly='futureonly'
GO
EXEC sys.sp_bindefault @defname=N'[Base].[RegionalDateDefault]', @objname=N'[Edit].[区划码情况].[起始日期]' , @futureonly='futureonly'
GO
/****** 对象: Table [Edit].[行政区类型情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Edit].[行政区类型情况]') AND type in (N'U'))
BEGIN
CREATE TABLE [Edit].[行政区类型情况](
[ID] [smallint] IDENTITY(1,1) NOT NULL,
[类型ID] [smallint] NOT NULL,
[范围] [nvarchar](max) NOT NULL,
[截止日期] [Base].[RegionalDate] NOT NULL,
[起始日期] [Base].[RegionalDate] NOT NULL,
[备注] [nvarchar](max) NULL,
CONSTRAINT [PK_行政区类型情况] PRIMARY KEY CLUSTERED
(
[类型ID] ASC,
[截止日期] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
EXEC sys.sp_bindefault @defname=N'[Base].[RegionalDateDefault]', @objname=N'[Edit].[行政区类型情况].[截止日期]' , @futureonly='futureonly'
GO
EXEC sys.sp_bindefault @defname=N'[Base].[RegionalDateDefault]', @objname=N'[Edit].[行政区类型情况].[起始日期]' , @futureonly='futureonly'
GO
/****** 对象: UserDefinedFunction [FUNCTION].[行政区类型情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[FUNCTION].[行政区类型情况]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'CREATE FUNCTION [FUNCTION].[行政区类型情况]
(
@当前时间 [Base].[RegionalDate] = N''Current''
)
RETURNS TABLE
AS
RETURN
(
SELECT a.*
FROM [Edit].[行政区类型情况] a
RIGHT OUTER JOIN
(
SELECT [类型ID]
,MIN(DISTINCT [截止日期])AS 查询时间
FROM [Edit].[行政区类型情况]
WHERE @当前时间 BETWEEN [起始日期] AND [截止日期]
GROUP BY[类型ID]
) b
ON a.类型ID = b.类型ID AND a.截止日期 = b.查询时间
)
'
END
GO
/****** 对象: UserDefinedFunction [FUNCTION].[区划码情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[FUNCTION].[区划码情况]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'CREATE FUNCTION [FUNCTION].[区划码情况]
(
@当前时间 [Base].[RegionalDate] = N''Current''
)
RETURNS TABLE
AS
RETURN
(
SELECT a.*
FROM [Edit].[区划码情况] a
RIGHT OUTER JOIN
(
SELECT [区划码ID]
,MIN(DISTINCT [截止日期])AS 查询时间
FROM [Edit].[区划码情况]
WHERE @当前时间 BETWEEN [起始日期] AND [截止日期]
GROUP BY[区划码ID]
) b
ON a.区划码ID = b.区划码ID AND a.截止日期 = b.查询时间
)
'
END
GO
/****** 对象: StoredProcedure [Program].[增添记录] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Program].[增添记录]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: LzmTW
-- Create date: 20060917
-- Description: 增添记录
-- =============================================
CREATE PROCEDURE [Program].[增添记录]
@区划码 [Base].[RegionalCode]
,@名称 nvarchar(100)
,@起始日期 [Base].[RegionalDate]
AS
BEGIN
SET NOCOUNT ON;
--如果@起始日期小于表区划码情况的最新起始日期,则退出
DECLARE @最新起始日期 [Base].[RegionalDate]
SELECT @最新起始日期 = MAX(起始日期)
FROM [Edit].区划码情况
IF @起始日期 < @最新起始日期
RETURN
--如果主表区划码没有记录,则更新;取区划码ID
DECLARE @区划码ID smallint
SELECT @区划码ID = 区划码ID
FROM [Base].[区划码]
WHERE 区划码 = @区划码;
IF @区划码ID IS NULL
BEGIN
INSERT INTO [Base].[区划码](区划码)
VALUES(@区划码)
SET @区划码ID = @@IDENTITY
END
--表区划码情况的更新
DECLARE @ID int
,@原名称 nvarchar(100)
SELECT @ID = ID
,@原名称 = 名称
FROM [FUNCTION].区划码情况(@起始日期)
WHERE 区划码ID = @区划码ID
IF @ID IS NULL
BEGIN
INSERT INTO [Edit].[区划码情况]
(
区划码ID
,名称
,起始日期
)
VALUES
(
@区划码ID
,@名称
,@起始日期
)
END
ELSE
BEGIN
--忽略同名的记录,也就是保持Current有效
IF @名称 = @原名称
RETURN
ELSE
BEGIN
--将原记录的截止日期更新为当前起始日期的前一日
UPDATE [Edit].[区划码情况]
SET 截止日期 = CONVERT(nchar(8) ,DATEADD(d, -1, CAST(@起始日期 as smalldatetime)) ,112)
WHERE ID = @ID
INSERT INTO [Edit].[区划码情况]
(
区划码ID
,名称
,起始日期
)
VALUES
(
@区划码ID
,@名称
,@起始日期
)
END
END
END
'
END
GO
/****** 对象: StoredProcedure [Action].[区划码类型情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Action].[区划码类型情况]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: LzmTW
-- Create date: 20060920
-- Description: 取区划码的类型ID
-- =============================================
CREATE PROCEDURE [Action].[区划码类型情况]
@当前时间 [Base].[RegionalDate] = N''Current''
AS
BEGIN
--通过临时表来处理数据
IF EXISTS
(
SELECT 1 FROM tempdb.dbo.sysobjects
WHERE [name] = N''##区划码类型情况'' AND xtype=N''U''
)
DROP TABLE ##区划码类型情况
CREATE TABLE ##区划码类型情况
(
区划码ID smallint
,类型ID smallint
)
--取类型定义为未知的ID
DECLARE @未知ID smallint
SELECT @未知ID = 类型ID
FROM [Base].行政区类型
WHERE 类型 = N''未知''
--所有区划码的类型初始化为未知
INSERT INTO ##区划码类型情况
SELECT 区划码ID
,@未知ID as 类型ID
FROM [FUNCTION].区划码情况(@当前时间)
--以下处理的正确性取决于类型定义不存在交集!!
DECLARE @Building nvarchar(MAX)
,@SQL nvarchar(MAX)
,@类型ID smallint
,@范围 nvarchar(MAX)
SET @Building = N''
UPDATE ##区划码类型情况
SET 类型ID = b.类型ID
FROM ##区划码类型情况 a
INNER JOIN
(
SELECT 区划码ID
,{类型ID} AS 类型ID
FROM [Action].[行政区情况]('''''' + @当前时间 + N'''''')
WHERE {WHERE}
) b
ON a.区划码ID = b.区划码ID ''
--遍历类型定义表更新区划码类型
DECLARE 行政区类型_Cursor CURSOR FOR
SELECT 类型ID
,范围
FROM [FUNCTION].行政区类型情况(@当前时间)
OPEN 行政区类型_Cursor
FETCH NEXT
FROM 行政区类型_Cursor
INTO @类型ID, @范围
WHILE (@@fetch_status<>-1)
BEGIN
IF (@@fetch_status<>-2)
BEGIN
SET @SQL = REPLACE(@Building, N''{类型ID}'', @类型ID)
SET @SQL = REPLACE(@SQL, N''{WHERE}'', @范围)
EXEC (@SQL)
FETCH NEXT
FROM 行政区类型_Cursor
INTO @类型ID, @范围
END
END
CLOSE 行政区类型_Cursor
DEALLOCATE 行政区类型_Cursor
SELECT *
FROM ##区划码类型情况
END
'
END
GO
/****** 对象: UserDefinedFunction [Action].[行政区情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Action].[行政区情况]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'CREATE FUNCTION [Action].[行政区情况]
(
@当前时间 [Base].[RegionalDate] = N''Current''
)
RETURNS TABLE
AS
RETURN
(
SELECT a.区划码ID
,a.区划码
,b.名称
,a.一级
,a.二级
,a.三级
,b.截止日期
,b.起始日期
FROM [Base].[区划码] a
INNER JOIN [FUNCTION].[区划码情况](@当前时间) b
ON a.区划码ID = b.区划码ID
)
'
END
GO
/****** 对象: UserDefinedFunction [Action].[全名] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Action].[全名]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN
execute dbo.sp_executesql @statement = N'-- =============================================
-- Author: LzmTW
-- Create date: 20060921
-- Description: 取行政区的全名
-- =============================================
CREATE FUNCTION [Action].[全名]
(
@当前时间 [Base].[RegionalDate] = N''Current''
,@一级 nchar(2)
,@二级 nchar(2)
,@三级 nchar(2)
)
RETURNS nvarchar(200)
AS
BEGIN
--初始化变量
DECLARE @全名 nvarchar(200)
,@一级名称 nvarchar(100)
,@二级名称 nvarchar(100)
,@三级名称 nvarchar(100)
SET @一级名称 = N''''
SET @二级名称 = N''''
SET @三级名称 = N''''
DECLARE @一级区划码 [Base].RegionalCode
,@二级区划码 [Base].RegionalCode
,@当前区划码 [Base].RegionalCode
SET @一级区划码 = @一级 + N''00'' + N''00''
SET @二级区划码 = @一级 + @二级 + N''00''
SET @当前区划码 = @一级 + @二级 + @三级
--分三种情形取全名
IF @当前区划码 = @一级区划码
SELECT @一级名称 = 名称
FROM [Action].[行政区情况](@当前时间)
WHERE 区划码 = @当前区划码
ELSE
IF @当前区划码 = @二级区划码
BEGIN
SELECT @一级名称 = 名称
FROM [Action].[行政区情况](@当前时间)
WHERE 区划码 = @一级区划码
SELECT @二级名称 = 名称
FROM [Action].[行政区情况](@当前时间)
WHERE 区划码 = @当前区划码
END
ELSE
BEGIN
SELECT @一级名称 = 名称
FROM [Action].[行政区情况](@当前时间)
WHERE 区划码 = @一级区划码
SELECT @二级名称 = 名称
FROM [Action].[行政区情况](@当前时间)
WHERE 区划码 = @二级区划码
SELECT @三级名称 = 名称
FROM [Action].[行政区情况](@当前时间)
WHERE 区划码 = @当前区划码
END
IF @二级名称 IN(N''市辖区'', N''市'', N''县'')
SET @二级名称 = N''''
SET @全名 = @一级名称
+ @二级名称
+ @三级名称
RETURN @全名
END
'
END
GO
/****** 对象: StoredProcedure [Program].[行政区情况] 脚本日期: 09/21/2006 20:38:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Program].[行政区情况]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: LzmTW
-- Create date: 20060921
-- Description: 取行政区的全名
-- =============================================
CREATE PROCEDURE [Program].[行政区情况]
@当前时间 [Base].[RegionalDate] = N''Current''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @类型情况 TABLE
(
区划码ID smallint
,类型ID smallint
)
INSERT INTO @类型情况
EXEC [Action].[区划码类型情况] @当前时间
SELECT TOP 100 PERCENT
d.区划码ID
,d.区划码
,d.名称
,[Action].全名(@当前时间, d.一级, d.二级, d.三级) AS 全名
,a.类型
,b.级别
,d.一级
,d.二级
,d.三级
,d.截止日期
,d.起始日期
,a.类型ID
,b.级别ID
FROM Base.行政区类型 AS a
INNER JOIN Base.行政区级别 AS b
ON a.级别ID = b.级别ID
INNER JOIN @类型情况 AS c
ON a.类型ID = c.类型ID
INNER JOIN [Action].行政区情况(@当前时间) AS d
ON d.区划码ID = c.区划码ID
ORDER BY d.一级, d.二级, d.三级
END
'
END
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[Base].[FK_行政区类型_行政区级别]') AND parent_object_id = OBJECT_ID(N'[Base].[行政区类型]'))
ALTER TABLE [Base].[行政区类型] WITH CHECK ADD CONSTRAINT [FK_行政区类型_行政区级别] FOREIGN KEY([级别ID])
REFERENCES [Base].[行政区级别] ([级别ID])
GO
ALTER TABLE [Base].[行政区类型] CHECK CONSTRAINT [FK_行政区类型_行政区级别]
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[Edit].[FK_区划码情况_区划码]') AND parent_object_id = OBJECT_ID(N'[Edit].[区划码情况]'))
ALTER TABLE [Edit].[区划码情况] WITH CHECK ADD CONSTRAINT [FK_区划码情况_区划码] FOREIGN KEY([区划码ID])
REFERENCES [Base].[区划码] ([区划码ID])
GO
ALTER TABLE [Edit].[区划码情况] CHECK CONSTRAINT [FK_区划码情况_区划码]
GO
IF NOT EXISTS (SELECT * FROM sys.check_constraints WHERE object_id = OBJECT_ID(N'[Edit].[CK_区划码情况]') AND parent_object_id = OBJECT_ID(N'[Edit].[区划码情况]'))
ALTER TABLE [Edit].[区划码情况] WITH CHECK ADD CONSTRAINT [CK_区划码情况] CHECK (([截止日期]>=[起始日期]))
GO
ALTER TABLE [Edit].[区划码情况] CHECK CONSTRAINT [CK_区划码情况]
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[Edit].[FK_行政区类型情况_行政区类型]') AND parent_object_id = OBJECT_ID(N'[Edit].[行政区类型情况]'))
ALTER TABLE [Edit].[行政区类型情况] WITH CHECK ADD CONSTRAINT [FK_行政区类型情况_行政区类型] FOREIGN KEY([类型ID])
REFERENCES [Base].[行政区类型] ([类型ID])
GO
ALTER TABLE [Edit].[行政区类型情况] CHECK CONSTRAINT [FK_行政区类型情况_行政区类型]
GO
IF NOT EXISTS (SELECT * FROM sys.check_constraints WHERE object_id = OBJECT_ID(N'[Edit].[CK_行政区类型情况]') AND parent_object_id = OBJECT_ID(N'[Edit].[行政区类型情况]'))
ALTER TABLE [Edit].[行政区类型情况] WITH CHECK ADD CONSTRAINT [CK_行政区类型情况] CHECK (([截止日期]>=[起始日期]))
GO
ALTER TABLE [Edit].[行政区类型情况] CHECK CONSTRAINT [CK_行政区类型情况]
GO
INSERT INTO [Base].[行政区级别]([级别]) VALUES (N'未知')
INSERT INTO [Base].[行政区级别]([级别]) VALUES (N'一级')
INSERT INTO [Base].[行政区级别]([级别]) VALUES (N'二级')
INSERT INTO [Base].[行政区级别]([级别]) VALUES (N'三级')
GO
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'未知' ,0)
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'省' ,1)
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'省直辖市' ,2)
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'地区州盟' ,2)
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'市地辖区' ,3)
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'县旗' ,3)
INSERT INTO [Base].[行政区类型]([类型] ,[级别ID]) VALUES (N'省直辖县级市' ,3)
GO
INSERT INTO [Edit].[行政区类型情况]
([类型ID]
,[范围]
,[起始日期]
,[备注])
VALUES
(1
,N'二级 = N''00'' AND 三级 = N''00'''
,N'20000101'
,N'省')
INSERT INTO [Edit].[行政区类型情况]
([类型ID]
,[范围]
,[起始日期]
,[备注])
VALUES
(2
,N'(二级 BETWEEN N''01'' AND N''20'' OR 二级 BETWEEN N''51'' AND N''99'' ) AND 三级 = N''00'' '
,N'20000101'
,N'省直辖市')
INSERT INTO [Edit].[行政区类型情况]
([类型ID]
,[范围]
,[起始日期]
,[备注])
VALUES
(3
,N'二级 BETWEEN N''21'' AND N''50'' AND 三级 = N''00'' '
,N'20000101'
,N'地区州盟')
INSERT INTO [Edit].[行政区类型情况]
([类型ID]
,[范围]
,[起始日期]
,[备注])
VALUES
(4
,N'三级 BETWEEN N''01'' AND N''20'' '
,N'20000101'
,N'市地辖区')
INSERT INTO [Edit].[行政区类型情况]
([类型ID]
,[范围]
,[起始日期]
,[备注])
VALUES
(5
,N'三级 BETWEEN N''21'' AND N''80'' '
,N'20000101'
,N'县旗')
INSERT INTO [Edit].[行政区类型情况]
([类型ID]
,[范围]
,[起始日期]
,[备注])
VALUES
(6
,N'三级 BETWEEN N''81'' AND N''99'' '
,N'20000101'
,N'省直辖县级市')
下载行政区划mysql表设计_行政区划数据数据库的设计(脚本)相关推荐
- 职工考勤管理MySQL课程设计_考勤管理系统数据库课程设计.doc
课 程 设 计 课程名称 数据库系统概论_____ 题目名称 考勤管理系统 学生学院 计算机学院 专业班级 学 号 学生姓名 ________ 指导教师 左亚尧 2012年 1月 16日 一.需求分析 ...
- 论文中如何写mysql的介绍_论文中数据库概念设计怎么写
试论网络课程的艺术设计 [摘 要] 网络课程的设计不仅仅是一个计算机技术问题和教学问题,更是一个艺术问题,网络课程的设计水平直接体现设计者的艺术修养.网络课程设计最常用的载体是网页,网页的艺术设计,日 ...
- 随机从mysql中读取_如何实现MySQL表数据随机读取?从mysql表中读取随机数据
文章转自 http://blog.efbase.org/2006/10/16/244/ 如何实现MySQL表数据随机读取?从mysql表中读取随机数据?以前在群里讨论过这个问题,比较的有意思.mysq ...
- php 去掉无关数据,php 读取 mysql 表中的double数据,去掉多余的0
php 读取 mysql 表中的double数据,去掉多余的0 mysql 中有 ttt 表结构和数据如下 CREATE TABLE `ttt` ( `id` int(11) NOT NULL AUT ...
- mysql 游戏服务器设计_网络游戏服务器数据库设计和实现.doc
网络游戏服务器数据库设计和实现 摘 要 随着的普及,网络游戏已经成为大家耳濡目染的新生事物.现在,可以说网络游戏已经成为人们休闲.娱乐的有效方式.网络游戏必须依托于互联网可以多人同时参与游戏,通过人与 ...
- mysql表结构设计_数据库表结构设计
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...
- 怎么有效地查询MySQL表中的重复数据
在MySQL数据库中,偶尔会遇到需要查找表中出现的重复数据的情况.这种情况下,我们可以通过编写一些SQL查询语句轻松地找到并处理这些重复行.本文将介绍一些常见的方法和技巧,帮助你有效地查询MySQL表 ...
- 餐饮管理系统 mysql数据库设计分析_终稿课程设计_餐饮管理系统数据库设计.docOK版(样例3)...
<课程设计_餐饮管理系统数据库设计.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)课程设计_餐饮管理系统数据库设计.doc(OK版)>相关文档资源请在帮帮文库(www ...
- 网上订餐系统 mysql 数据库设计_网上订餐系统的设计与实现
摘要: 进入21世纪,伴随着我国的综合国力的迅速提升,科技的迅猛发展,网络信息化和电子商务已经渗透到了人类社会的各个方面与角落.网购再也不是新鲜的代名词,它已经成为我们寻常生活的一部分.人们在网上购买 ...
- 数据库设计-博客系统数据库的设计
数据库设计-博客系统数据库的设计 数据库整体设计 问题: 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的 ...
最新文章
- 姚期智云栖大会首日演讲:为什么我说现在是金融科技的“新”黄金时代
- Maven本地缓存清理小工具
- 本人对于netty框架的一些理解,怎么与网站上的websock建立连接
- GNS结合SecureCRT连接问题
- java 内部类and匿名类
- 现在最简单的赚钱套路
- hdu 5120(求两个圆环相交的面积 2014北京现场赛 I题)
- java设计模式之模板方法模式(Template Method)
- 51单片机(一)—— 51单片机简介
- 十七.降维之谱分解和奇异值分解
- 关于这个开源项目 from VIP Lab
- 《今日简史》谈到的生物技术和人工智能技术
- 东财《自我认知与职业生涯规划》单元作业一二三
- 【2020年高被引学者】 田奇 华为
- informatica 学习日记整理(转)
- 时间继电器的应用和常用型号
- signature=1e627a907c86a2ecea855afa2fce9a87,熟练掌握 openssl 证书命令说明
- 浅浅轻吟如花的芬芳,开始散漫着
- go 框架 —— beego安装
- ens33网卡没有IP地址的解决方案
热门文章
- docker容器杀不死_了解如何停止,杀死和清理Docker容器
- Virtualbox虚拟机运行加速
- Webug4.0 越权修改密码
- 三轴陀螺仪 偏置稳定性 光纤陀螺 光纤陀螺仪 光纤陀螺惯性导航系统 光纤陀螺惯性测量单元 六自由度IMU 单轴激光陀螺仪 双天线组合导航系统 双轴精确陀螺仪 导航级FOG怎么选择?
- 【蒙古文】:传统蒙古语网页显示方法
- 14 目录文件夹和根目录
- [前端工坊]第二届京东技术节-前端技术实践专场
- //过360云查杀的代码
- win10计算机的磁盘管理员权限,win10系统无法修改磁盘名称提示需要管理员权限的解决方法...
- 精心整理shell脚本100例(最新版)