初始化数据库数据的一些例子

本文介绍了一种使用SQL存储过程自动生成机票库测试数据的方法,包括城市、机场、航空公司等基本信息,以及航班、机票和旅客信息的具体生成策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/****
生成机票库测试数据
@author zdw
*****/
ALTER proc [dbo].[init_all]
as
--城市数据 
exec dbo.init_city
--机场数据
exec dbo.init_airport
--航空公司
exec dbo.init_airline
--其他基础数据
exec dbo.init_other
--航班
exec dbo.init_flight
--机票与预订
exec dbo.init_ticket
---生成账期账单数据
exec  dbo.init_airtranhis

/**
随机生成指定位数的数字字符串的存储过程
@author ZDW
@createtime 2012-01-05
***/
ALTER PROC [dbo].[p_randomN]
@count INT=18
as
 SELECT RIGHT(20000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), @count)

ALTER  PROC [dbo].[p_randomName]
@name VARCHAR(20)='' OUTPUT
  as   
  BEGIN
		declare @firstNames varchar(max)    /* 保存名的集合 */
		declare @lastNames varchar(max)     /* 保存姓的集合 */
		set @firstNames = '梅,芳,海,亮,红,君,军,俊,江,河,湖,波,杰,山,燕,阳,洋,涛,斌,彬,宾,微,伟,威,薇,刚,倩' /* 必须只有一个字 */
		set @lastNames = '刘,方,王,李,赵,孙,钱,胡,易,黄,温,丁,周,魏,陈,曾,涂'    /* 必须只有一个字 */
		declare @lastNamesLength int
		declare @firstNamesLength int
		set @lastNamesLength = (LEN(@lastNames) - 1) / 2 + 1
		set @firstNamesLength = (LEN(@firstNames) - 1) / 2 + 1
		 
		declare @firstNameRandom int
		declare @lastNameRandom int
		 
		declare @resultFullNames varchar(max)
		set @resultFullNames = ''
		 

			set @firstNameRandom = CEILING(rand()*@firstNamesLength)
			set @lastNameRandom = CEILING(rand()*@lastNamesLength)
			/*
				产生第 1 个字,对于的 Index 为 1,注意:这里的 Index 最小值为 1。
				产生第 2 个字,对于的 Index 为 3,
				产生第 3 个字,对于的 Index 为 5,
				...
			*/
			set @resultFullNames = @resultFullNames + ( SUBSTRING(@lastNames, @lastNameRandom * 2 - 1, 1) + SUBSTRING(@firstNames, @firstNameRandom * 2 - 1, 1))
		SET @name=@resultFullNames
		--SELECT @name
  end   

/***行程单表生成测试数据开始***/
TRUNCATE TABLE Travelroute
DECLARE @i INT=1,@sn VARCHAR(50),@random INT=1,@emid varchar(50)
WHILE @i <= 2000
BEGIN
	--生成10位编号
	SELECT @sn=right('0000000000'+cast(@i as varchar),10)
	--生成1-100内的随机整数
	select @random=cast( floor(rand()*100) as int)
	select top 1 @emid=emid from expressmail order by NEWID()
	INSERT Travelroute(tlid,emid,sn,batsn,createtime,usid,fee,status)
	SELECT REPLACE(LOWER(NEWID()),'-',''),@emid,@sn,'001',GETDATE(),1,@random*100,1
	SET @i = @i +1
END
SELECT * FROM Travelroute 
/***行程单表生成测试数据结束***/

/***旅客表生成测试数据开始***/
TRUNCATE TABLE Passenger
DECLARE @name VARCHAR(10),@ic VARCHAR(50),@phone VARCHAR(20)
 set  @i =0
WHILE @i <= 1000
BEGIN
	 --生成18位身份证号码
	  select top 1 @ic=(abs(checksum(newid()))%9+1)*100000000000000000+abs(checksum(newid()))%100000000000000000
		from sysobjects
	--生成11位手机号
	select top 1 @phone=(abs(checksum(newid()))%9+1)*10000000000+abs(checksum(newid()))%10000000000
	--生产随机姓名
	EXEC p_randomName @name OUTPUT
	INSERT Passenger(psid,name,type,sn,phone,ptype,birth,psid2)
	SELECT REPLACE(LOWER(NEWID()),'-',''),@name,1,@ic,@phone,1,null,0
	SET @i = @i +1
END
SELECT * FROM Passenger 
/***旅客表生成测试数据结束***/


<think>嗯,用户问的是如何初始化数据库,我需要先确定他们指的是哪种数据库,因为不同的数据库管理系统(比如MySQL、PostgreSQL、MongoDB等)操作步骤可能会有所不同。不过可能用户是刚开始接触,所以应该先给出一个通用的流程,然后再举几个常见数据库例子。 首先,初始化数据库一般包括安装数据库软件、配置环境、创建初始数据库和用户,可能还有设置权限等步骤。需要分步骤解释清楚,避免太技术化的术语,让新手也能理解。同时要注意提醒备份数据,尤其是如果是在已有环境中操作,防止数据丢失。 可能用户是开发人员或者系统管理员,需要部署一个新项目,所以需要初始化数据库。他们可能不太清楚具体步骤,或者想确认自己的操作是否正确。因此,除了步骤之外,还应该提到注意事项,比如安全设置、密码强度、权限最小化原则等。 然后,我需要考虑举哪些数据库例子。最常见的是MySQL、PostgreSQL和SQLite,可能还有MongoDB这样的NoSQL数据库。每个例子需要简明扼要,给出关键命令,比如创建数据库、用户、赋权等。同时要指出不同数据库之间的差异,比如SQLite不需要服务,直接创建文件。 另外,是否需要提到使用命令行还是图形工具?可能用户更倾向于命令行,因为初始化通常在服务器上进行,图形界面可能不可用。所以重点放在命令行操作上。 还要注意安全性,比如避免使用弱密码,提醒删除测试数据等。可能用户在生产环境中操作,安全措施很重要。 最后,检查步骤是否正确,比如MySQL的初始化命令是否正确,是否需要sudo权限,如何启动服务等。确保示例代码准确,避免误导用户。 总结一下,回答的结构应该是先总述初始化的一般步骤,然后分点详细说明每个步骤,再给出具体数据库例子,最后注意事项。这样用户可以根据自己的情况选择合适的部分参考。</think>初始化数据库的操作步骤通常分为以下几个阶段(以常见关系型数据库为例): ### 一、通用流程 1. **安装数据库软件** - 通过包管理器安装(如`apt`/`yum`/`brew`) - 或下载官方安装包手动安装 2. **初始化数据存储** ```bash # MySQL示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值