下面就是小编给大家带来的Listen Software解决方案 “How To” 系列4:创建数据库数据库教程,本文共11篇,希望能帮助到大家!

篇1:Listen Software解决方案 “How To” 系列4:创建数据库数据库教程
创建|解决|数据|数据库
Listen Software解决方案 “How To” 系列4:创建数据库
计划数据库文件位置
三组重演日志文件,每组有两个成员文件
创建数据文件的文件结构
手工创建数据库
1.设定唯一的实例名和数据库字符集
2.设置操作系统变量
(UNIX)
ORACLE_HOME
ORACLE_SID
ORACLE_BASE
ORA_NLS33
PATH
(NT)
ORADIM80 -NEW -SID u16
-INTPWD password -STARTMODE auto
-PFILE ORACLE_HOMEDATABASEinitu16.ora
You must decide the SID, Password, and
Create the parameter
file (initu16.ora)
SET ORACLE_SID=u16
SET LOCAL=2:u16
语句1:使u16成为当前SID
语句2: 覆盖Local环境变量
3. 准备参数文件
使用init.ora作为参数文件模板
db_name=数据库标识符(最多为8个字符)
control_files=三个控制文件的位置
DB_BLOCK_SIZE=数据库块的大小(数据库创建后不能修改)
4. 创建密码文件
5. 启动实例
STARTUP NOMOUNT pfile=initu16.ora
6. 创建数据库
从Server Manager上手工创建
CREATE DATABASE “U16”
MAXLOGFILES 6
MAXLOGMEMBERS 6
MAXDATAFILES 30
MAXLOGHISTORY 100
ARCHIVELOG
LOGFILE
GROUP 1
'E:DATAU16GROUP1log1a.rdo' SIZE 200K,
'E:DATAU16GROUP1log1b.rdo' SIZE 200K
GROUP 2
'E:DATAU16GROUP2log2a.rdo' SIZE 200K,
'E:DATAU16GROUP2log2b.rdo' SIZE 200K
GROUP 3
'E:DATAU16GROUP3log3a.rdo' SIZE 200K,
'E:DATAU16GROUP3log3b.rdo' SIZE 200K
DATAFILE
'E:DATAU16DATAFILES ystem01.dbf'
size 30M
CHARACTER SET WE8ISO8859P1;
查看数据库状态
select name,created,log_mode from v$database;
查看线程
select status, instance from v$thread;
查看数据文件
select name from v$datafile;
查看日志文件
select member from v$logfile;
查看控制文件
select name from v$controlfile;
检验系统创建状态
select file_name from dba_data_files
where tablespace_name='SYSTEM';
查看数据库用户
select username, created from dba_users;
7.运行脚本生成数据词典,完成以前创建步骤
创建数据词典
CATALOG.SQL
生成PL/SQL使用的对象
CATPROC.SQL
8.维护重演日志文件
确定归档状态
select log_mode from v$database;
确定自动归档可用
select archiver from v$instance;
添加新的日志文件组
ALTER DATABASE ADD LOGFILE
(
'c:datalog3a.rdo',
'e:datalog3b.rdo'
) size 200k;
查看日志文件信息
select * from v$log_file;
篇2:创建备份设备数据库教程
在进行备份以前首先必须创建备份设备,
创建备份设备数据库教程
。备份设备是用来存储数据库、事务日志或文件和文件组备份的存储介质。备份设备可以是硬盘、磁带或管道。SQL Server 只支持将数据库备份到本地磁带机,而不是网络上的远程磁带机。当使用磁盘时,SQL Server 允许将本地主机硬盘和远程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的。15.2.1 用SQL Server Enterprise Manager 管理备份设备
1 使用SQL Server Enterprise Manager 创建备份设备
(1)使用SQL Server Enterprise Manager, 创建备份设备的步骤为:
(2) 打开Management 文件夹,然后选择Backup 图标。
(3) 右击Backup 在弹出菜单中选择 New Backup Device 选项,然后弹出 BackupDevice Properties C New Device 对话框,
如图15-1 所示。
(4) 在Name 栏中输入设备名称该名称是备份设备的逻辑名。
(5) 选择备份设备类型,如果选择File name 表示使用硬盘做备份,只有正在创建的设备是硬盘文件时,该选项才起作用。如果选择Tape Drive name 表示使用磁带设备。只有正在创建的备份设备是与本地服务器相连的磁带设备时,该选项才起作用。
(6) 然后单击确定创建备份设备。
2 使用SQL Server Enterprise Manager 删除备份设备在创建备份设备的第二步,选中Backup 图标后,在右格对话框中右击要删除的备份设备,在弹出菜单中选择Delete 选项,则删除该备份设备。
15.2.2 使用系统过程管理备份设备
1 sp_addumpdevice
在SQL Server 中,使用sp_addumpdevice 来创建备份设备。其语法格式为:
篇3:sqlserver 如何创建分区表数据库教程
server|sqlserver|创建
该文详细介绍实现分区表的过程以及有助于完成此过程的功能,sqlserver 2005 如何创建分区表数据库教程
。逻辑流程如下:图:创建分区表或索引的步骤
确定是否应为对象分区
虽然分区可以带来众多的好处,但也增加了实现对象的管理费用和复杂性,这可能是得不偿失的。尤其是,您可能不需要为较小的表或目前满足性能和维护要求的表分区。前面提到的销售方案使用分区减轻了移动行和数据的负担,但在决定是否实现分区时,您应考虑您的方案是否存在这种负担。
确定分区键和分区数
如果您正在尝试改善大型数据子集的性能和可管理性,并且已经定义了访问模式,则可以使用范围分区减少数据争用的情况,同时减少只读数据不需要分区时的维护工作。要确定分区数,应先评估您的数据中是否存在逻辑分组和模式。如果您通常一次只处理这些已定义子集中的少数几个,则应定义范围以隔离查询,使其只处理相应的数据(即,只处理特定的分区)。
确定是否应使用多个文件组
为了有助于优化性能和维护,应使用文件组分离数据。文件组的数目一定程度上由硬件资源决定:一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。但是,这主要适用于打算对整个数据集进行分析的系统。如果您有多个 CPU,SQL Server 则可以并行处理多个分区,从而大大缩短处理大量复杂报表和分析的总体时间。这种情况下,可以获得并行处理以及在分区表中移入和移出分区的好处。
创建文件组
如果需要为多个文件放置一个分区表以获得更好的 I/O平衡,则至少需要创建一个文件组。文件组可以由一个或多个文件构成,而每个分区必须映射到一个文件组。一个文件组可以由多个分区使用,但是为了更好地管理数据(例如,为了获得更精确的备份控制),应该对分区表进行设计,以便只有相关数据或逻辑分组的数据位于同一个文件组中。使用 ALTER DATABASE,可以添加逻辑文件组名,然后添加文件。要为 AdventureWorks 数据库创建名为 Q3 的文件组,请按以下方式使用 ALTER DATABASE:
ALTER DATABASE AdventureWorks ADD FILEGROUP [2003Q3]
创建文件组后,使用 ALTER DATABASE 将文件添加到该文件组中。
ALTER DATABASE AdventureWorks
ADD FILE
(NAME = N'2003Q3',
FILENAME = N'C:AdventureWorks2003Q3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP [2003Q3]
通过在 CREATE TABLE 的 ON 子句中指定一个文件组,可以为文件创建一个表。但是,如果表未分区,则不能为多个文件组创建一个表。要为一个文件组创建表,请使用 CREATE TABLE 的 ON 子句。要创建分区表,必须先确定分区的功能机制。进行分区的标准以分区函数的形式从逻辑上与表相分离。此分区函数作为独立于表的定义存在,而这种物理分离将起到帮助作用,因为多个对象都可以使用该分区函数。因此,为表分区的第一步是创建分区函数。
为范围分区创建分区函数
范围分区必须使用边界条件进行定义。而且,即使通过 CHECK 约束对表进行了限制,也不能消除该范围任一边界的值。为了允许定期将数据移入该表,需要创建最后一个空分区。
在范围分区中,首先定义边界点:如果存在五个分区,则定义四个边界点值,并指定每个值是第一个分区的上边界 (LEFT) 还是第二个分区的下边界 (RIGHT)。根据 LEFT 或 RIGHT 指定,始终有一个空分区,因为该分区没有明确定义的边界点。
具体来讲,如果分区函数的第一个值(或边界条件)是 '1001',则边界分区中的值将是:
对于 LEFT
第一个分区是所有小于或等于 '20001001' 的数据
第二个分区是所有大于 '20001001' 的数据
对于 RIGHT
第一个分区是所有小于 '20001001' 的数据
第二个分区是所有大于或等于 '20001001' 数据
由于范围分区可能在 datetime 数据中进行定义,因此必须了解其含义。使用datetime具有某种含义:即总是同时指定日期和时间。未定义时间值的日期表示时间部分为“0”的 12:00 A.M。如果将 LEFT 与此类数据结合使用,则日期为 10 月 1 日 12:00 A.M. 的数据将位于第一个分区,而 10 月份的其他数据将位于第二个分区。从逻辑上讲,最好将开始值与 RIGHT 结合使用,而将结束值与 LEFT 结合使用。下面的三个子句将创建逻辑上相同的分区结构:
RANGE LEFT FOR VALUES ('20000930 23:59:59.997',
'20001231 23:59:59.997',
'0331 23:59:59.997',
'20010630 23:59:59.997')
或
RANGE RIGHT FOR VALUES ('20001001 00:00:00.000', '20010101 00:00:00.000', '20010401 00:00:00.000', '20010701 00:00:00.000')
或
RANGE RIGHT FOR VALUES ('20001001', '20010101', '20010401', '20010701')
注意:此处使用 datetime 数据类型确实增加了一定的复杂性,但您需要确保设置正确的边界情况。请注意使用 RIGHT 的简单性,因为默认时间为 12:00:00.000 A.M。对于 LEFT,复杂性增加是因为 datetime 数据类型具有精度。必须选择 23:59:59.997 的原因在于,datetime 数据无法保证毫秒级别的精度。相反,datetime 数据的精度在 3.33 毫秒内。使用 23:59:59.999 这个确切的时间值是不行的,因为该值将被舍入到最接近的时间值,即第二天的 12:00:00.000 A.M。由于进行了这种舍入,将无法正确定义边界,
对于 datetime 数据,必须对明确提供的毫秒值加倍小心。
注意:分区函数还允许将函数作为分区函数定义的一部分。您可以使用 DATEADD(ms,-3,'20010101'),而不是使用 '20001231 23:59:59.997' 明确定义时间。
要在四个活动分区(每个分区代表一个日历季度)中存储四分之一的 Orders 数据,并创建第五个分区以备将来使用(还是作为占位符,用于在分区表中移入和移出数据),请将 LEFT 分区函数与以下四个边界条件结合使用:
CREATE PARTITION FUNCTION OrderDateRangePFN(datetime)
AS
RANGE LEFT FOR VALUES ('20000930 23:59:59.997',
'20001231 23:59:59.997',
'20010331 23:59:59.997',
'20010630 23:59:59.997')
记住,定义四个边界点将创建五个分区。通过查看以下数据集检查此分区创建的数据集:
边界点 '20000930 23:59:59.997' 作为 LEFT(设置模式):
最左侧的分区将包含所有小于或等于 '20000930 23:59:59.997' 的值
边界点 '20001231 23:59:59.997':
第二个分区将包含所有大于 '20000930 23:59:59.997' 但小于或等于 '20001231 23:59:59.997' 的值
边界点 '20010331 23:59:59.997':
第三个分区将包含所有大于 '20001231 23:59:59.997' 但小于或等于 '20010331 23:59:59.997' 的值
边界点 '20010630 23:59:59.997':
第四个分区将包含所有大于 '20010331 23:59:59.997' 但小于或等于 '20010630 23:59:59.997' 的值
最后,第五个分区将包含所有大于 '20010630 23:59:59.997' 的值。
创建分区架构
创建分区函数后,必须将其与分区架构相关联,以便将分区定向至特定的文件组。定义分区架构时,即使多个分区位于同一个文件组中,也必须为每个分区指定一个文件组。对于前面创建的范围分区 (OrderDateRangePFN),存在五个分区;最后一个空分区将在 PRIMARY 文件组中创建。因为此分区永远不包含数据,所以不需要指定特殊的位置。
CREATE PARTITION SCHEME OrderDatePScheme
AS
PARTITION OrderDateRangePFN
TO ([2000Q3], [2000Q4], [2001Q1], [2001Q2], [PRIMARY])
注意:如果所有分区都位于同一个文件组中,则可以使用以下更简单的语法:
CREATE PARTITION SCHEME OrderDatePScheme
AS
PARTITION OrderDateRangePFN
ALL TO ([PRIMARY])
创建分区表
定义分区函数(逻辑结构)和分区架构(物理结构)后,即可创建表来利用它们。表定义应使用的架构,而架构又定义函数。要将这三者结合起来,必须指定应该应用分区函数的列。范围分区始终只映射到表中的一列,此列应与分区函数中定义的边界条件的数据类型相匹配。另外,如果表应明确限制数据集(而不是从负无穷大到正无穷大),则还应添加 CHECK 约束。
CREATE TABLE [dbo].[OrdersRange]
(
[PurchaseOrderID] [int] NOT NULL,
[EmployeeID] [int] NULL,
[VendorID] [int] NULL,
[TaxAmt] [money] NULL,
[Freight] [money] NULL,
[SubTotal] [money] NULL,
[Status] [tinyint] NOT NULL ,
[RevisionNumber] [tinyint] NULL ,
[ModifiedDate] [datetime] NULL ,
[ShipMethodID] [tinyint] NULL,
[ShipDate] [datetime] NOT NULL,
[OrderDate] [datetime] NOT NULL
CONSTRAINT OrdersRangeYear
CHECK ([OrderDate] >= '20030701'
AND [OrderDate] <= '0630 11:59:59.997'),
[TotalDue] [money] NULL
)
ON OrderDatePScheme (OrderDate)
GO
建立索引:是否分区?
默认情况下,分区表中创建的索引也使用相同的分区架构和分区列。如果属于这种情况,索引将与表对齐。尽管未作要求,但将表与其索引对齐可以使管理工作更容易进行,对于滑动窗口方案尤其如此。
例如,要创建唯一的索引,分区列必须是一个关键列;这将确保对相应的分区进行验证,以保证索引的唯一性。因此,如果需要在一列上对表进行分区,而必须在另一个列上创建唯一的索引,这些表和索引将无法对齐。在这种情况下,可以在唯一的列(如果是多列的唯一键,则可以是任一关键列)中对索引进行分区,或者根本就不进行分区。请注意,在分区表中移入和移出数据时,必须删除和创建此索引。
注意:如果您打算使用现有数据加载表并立即在其中添加索引,则通常可以通过以下方式获得更好的性能:先加载到未分区、未建立索引的表中,然后在加载数据后创建分区索引。通过为分区架构定义群集索引,可以在加载数据后更有效地为表分区。这也是为现有表分区的不错方法。要创建与未分区表相同的表并创建与已分区群集索引相同的群集索引,请用一个文件组目标位置替换创建表中的 ON 子句。然后,在加载数据之后为分区架构创建群集索引。
篇4:创建交叉报表(oracle)数据库教程
oracle|创建
创建交叉报表
create table t1(
goodid number(10) not null,
saledate date not null,
salesum number(10)
);
要求生成本年度每个月的产品销售状况表
m1 m2 m3 ... m12
g1
g2
.
.
.
gn
下面是生成报表的sql
SELECT goodid,
SUM(decode(to_char(saledate,'mm'),'01',salesum)) “01”,
SUM(decode(to_char(saledate,'mm'),'02',salesum)) “02”,
SUM(decode(to_char(saledate,'mm'),'03',salesum)) “03”,
SUM(decode(to_char(saledate,'mm'),'04',salesum)) “04”,
SUM(decode(to_char(saledate,'mm'),'05',salesum)) “05”,
SUM(decode(to_char(saledate,'mm'),'06',salesum)) “06”,
SUM(decode(to_char(saledate,'mm'),'07',salesum)) “07”,
SUM(decode(to_char(saledate,'mm'),'08',salesum)) “08”,
SUM(decode(to_char(saledate,'mm'),'09',salesum)) “09”,
SUM(decode(to_char(saledate,'mm'),'10',salesum)) “10”,
SUM(decode(to_char(saledate,'mm'),'11',salesum)) “11”,
SUM(decode(to_char(saledate,'mm'),'12',salesum)) “12”
from t1
where to_char(saledate,'yyyy') = '2004'
group by goodid
order by goodid;
篇5:[教程] 用命令创建MySQL数据库
用命令创建MySQL数据库
发布时间:-05-07 17:05:28 来源:技术部 作者:胖林 点击:42390
服务器或VPS用户如何用命令创建MYSQL数据库
一、连接MYSQL(www.studentyl.com)
格式: mysql -h主机地址 -u用户名 -p用户密码
1、 连接到本机上的MYSQL,
首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.
如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>
2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命 令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)
3、 退出MYSQL命令: exit (回车)
二、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码。 例如
1、 给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -u root -password ab12
2、 再将root的密码改为djg345。
mysqladmin -u root -p ab12 password ******
三、创建数据库
1、 CREATE DATABASE 数据库名;
2、 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';
3、 SET PASSWORD FOR
'数据库名'@'localhost' = OLD_PASSWORD('密码');
依次执行3个命令完成数据库创建。注意:中文 “密码”和“数据库”是户自己需要设置的。
―――――――――――――――――――――――――――――――――――――――――――――
现在介绍一些常用的MYSQL命令
注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。
一、操作技巧(www.xyyuedu.com)
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。
也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
2、你可以使用光标上下键调出以前的命令。
二、常用命令
1、显示当前数据库服务器中的数据库列表:
mysql> SHOW DATABASES;
2、建立数据库:
mysql> CREATE DATABASE 库名;
3、建立数据表:
mysql> USE 库名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
4、删除数据库:
mysql> DROP DATABASE 库名;
5、删除数据表:
mysql> DROP TABLE 表名;
6、将表中记录清空:
mysql> DELETE FROM 表名;
7、往表中插入记录:
mysql> INSERT INTO 表名 VALUES (“hyq”,“M”);
8、更新表中数据:
mysql-> UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';
9、用文本方式将数据装入数据表中:
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
10、导入.sql文件命令:
mysql> USE 数据库名;
mysql> SOURCE d:/mysql.sql;
11、命令行修改root密码:
mysql> UPDATE mysql.user SET password=PASSWORD('新密码') WHERE User='root';
mysql> FLUSH PRIVILEGES;
三、一个建库和建表以及插入数据的实例
drop database if exists school; //如果存在sudu则删除
create database sudu; //建立库sudu
use school; //打开库sudu
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表结束
//以下为插入字段
insert into teacher values('','allen','飞数科技1','-10-10');
insert into teacher values('','jack','飞数科技2','2005-12-23');如果你在mysql提示符键入上面的命令也可以,但不方便调试,
(1)你可以将以上命令原样写入一个文本文件中,假设为sudu.sql,然后复制到c:下,并在DOS状态进入目录mysqlbin,然后键入以下命令:
mysql -uroot -p密码 < c:sudu.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
(2)或者进入命令行后使用 mysql> source c:sudu.sql; 也可以将sudu.sql文件导入数据库中。
四、将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用n来代替.例:
3 rose 飞数科技1 1976-10-10
4 mike 飞数科技2 1975-12-23
假设你把这两组数据存为速度sudu.txt文件,放在c盘根目录下。
2、数据传入命令 load data local infile “c:sudu.txt” into table 表名;
注意:你最好将文件复制到mysqlbin目录下,并且要先用use命令打表所在的库。
五、备份数据库:(命令在DOS的mysqlbin目录下执行)
1.导出整个数据库
导出文件默认是存在mysqlbin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d --add-drop-table database_name > outfile_name.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.带语言参数导出
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt database_name > outfile_name.sql
篇6:Listen Software解决方案 “How To” 系列1:范式大纲数据库教程
解决
Listen Software解决方案 “How To” 系列1:范式大纲
总则
下面的范式大纲通常意味着以较少的列将表分成两个或更多的表,在较小的表中设计主外键关联.因此它们可以通过join操作符重新连接,分割表的优势在于减少数据冗余。
下面是标准范式的简要概述:
第一范式
对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性.
第二范式
第二范式要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键,
主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。一旦创建,主键无法改变,外键关联一个表的主键。主外键关联意味着一对多的关系.
第三范式
第三范式要求非主键列互不依赖.
第四范式
第四范式禁止主键列和非主键列一对多关系不受约束
第五范式
第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余.
(待续)
篇7:Listen Software解决方案 “How To” 系列2:存储过程数据库教程
存储过程|解决
Listen Software解决方案 “How To” 系列2:存储过程
参照:
参照定义和使用游标
参照定义和使用函数
存储过程
CREATE OR REPLACE PROCEDURE {procedure name}
( {argument} IN {datatype} ) IS v_variable {datatype};
--变量类型
VARCHAR(X);
VARCHAR2(X);
VARCHAR2;
CHAR(X);
NUMBER(P,S);
--P-数字的位数
--S-数字的精度
NUMBER(X);
NUMBER;
LONG;
--容纳32,760字节数据
DOUBLE PRECISION;
FLOAT;
INT;
REAL;
DATE;
RAW(X)
--容纳32,760字节数据
LONG RAW;
--容纳32,760字节数据
--注意数据库类型为LONG RAW
--容纳20亿字节数据
RECORD;
TABLE;
VARRAY;
LOB;
CLOB;
v_variable_c1 VARCHAR2(20);
--创建20个字符长的变量
v_variable_c2 CHAR(10);
--创建固定长度为10个字符的变量
- 最大长度255
v_variable_c3 VARCHAR2;
--变量长度不能超过个字符
v_variable_n1 table_name.field_name%TYPE;
--定义参照方案中表字段类型的变量类型
v_variable_n2 NUMBER;
v_variable_n3 NUMBER := 3;
v_variable_n4 NUMBER(10);
v_variable_n5 NUMBER(10,2);
v_variable_n6 LONG;
v_variable_n7 FLOAT;
v_variable_n8 REAL;
TYPE t_my_record IS RECORD
(
v_variable1 VARCHAR2(8)
,v_variable2 NUMBER(10)
,v_variable3 DATE
);
my_record t_my_record;
TYPE t_my_table is TABLE OF VARCHAR2(10)
--与vb中的数据结构相似
INDEX BY BINARY_INTEGER;
my_table t_my_table;
BEGIN
--这儿插入代码
v_variable_c1 := 'Hello World';
v_variable_n2 :=10;
--条件逻辑
IF v_variable_n2 = 1 THEN
v_variable_c2 := 'Exact Match';
ELSIF v_variable_n3 > 2 THEN
v_variable_c2 := 'Greater Than Match';
ELSE
v_variable_c3 := 'None of the Above';
END IF;
my_record.v_variable1:='ABC';
my_record.v_variable2:=3;
my_record.v_variable3:=TO_DATE('11-JAN-','DD-MON-YYYY');
my_table(1)='A';
my_table(2)='B';
/* v_variable_n2的值为10,因此第一个条件为false.
v_variable_n3初始为3,因此条件为true,
v_variable_c2的值就为'Greater Than Match'
循环 */
v_variable_n2:=0;
LOOP
v_variable_n2:=v_variable_n2+1;
EXIT WHEN v_variable_n2 > 10;
END LOOP;
v_variable_n2:=0;
WHILE v_variable_n2<10 LOOP
v_variable_n2:=v_variable_n2+1;
END LOOP;
FOR v_variable_n2 in 1..10 LOOP
END LOOP;
END {procedure name};
篇8:伟大的解决方案―DataWindow.Net(二)数据库教程
window|解决
下载先决的软件和配置环境1、由于安装过程太过于冗长,所以就不把它放在实验的这个部分,而是把它放在本文档后面的附件1中,当你下载安装完软件、配置好系统后,请回到下面这个步骤。
尝试一个事先创建的例子
2、为了检查您的开发环境,我们首先来完成一个完整的例子。这将让您对DataWindoe.Net的一些特征有个快速的了解。一旦您完成这个阶段,您就可以:
l 打开一个.Net解决方案
l 解释DataWindow和DataWindowInterop引用是什么
l 运行一个DataWindow销售订单的示例系统。
l 确定Form的关键部分
l 知道如何在对象浏览器中查看库
l 在菜单中找到DataWindow组件
3、找到目录“C:TempSI aleOrder”,并双击用于演示的SaleOrder解决方案文件。这将打开Visiual Studio和先前用Visual Basic.Net创建的SaleOrder解决方案。
4、选择 视图解决方案资源管理器 打开项目的解决方案窗口,展开折叠的参考,您就可以看到如下图所示的那样:
5、注意DataWindow和DataWindowInterop引用:这是在您的.Net解决方案需要的“DataWindow”的特定功能时的库,
选择其中任何一个,右键单击查看属性,您可以发现他们是安装在Sybase目录中。
6、右键单击DataWindow引用,选择对象浏览器。您可以看到类似下图的一些东西?这就是DataWindow命名空间中的对象。
7、从生成菜单,选择生成解决方案。您应该能正确编译该解决方案,否则,请您重新看看附件1,并检查您的配置是否正确。
8、运行程序,你可以看到如下所示那样。使用‘Add Items’按扭,尝试添加几条定单信息。为每条定单填写包括数量在内的各个输入域。点击‘Update’按钮创建一个新的定单。
9、假如您已经填写了如上所示所有的域,那么你会看到一个成功的消息提示告诉你新的定单已经创建。假如你在运行的时候出现异常,那么最大的可能就是您没有填写某个域。因为这只是一个最简单的、最基础的例子,并没有添加完整的错误处理代码在里面。
查询工具
10、现在就会在数据库中有条定单数据,你可以查找它。按‘Query’按扭,窗体将清除以便你可以输入你刚刚创建的定单号。点击‘Retrieve’,就会返回2655#定单的详细信息了。
你可以看到定单的细节信息了。
11、花点时间查看一下本项目中这两个窗体的代码。
12、恭喜!您已经成功测试了您的DataWindow.Net开发环境。
篇9:在VB中动态创建数据库数据库教程
在VB中动态创建数据库
新建工程.添加控件 对应写上代码
以下为引用的内容:
Private Sub Command2_Click
Dim myDB As DAO.Database
'Set myDB = DAO.OpenDatabase(“d:mydb3.mdb”)
Set myDB = DAO.OpenDatabase(App.Path + “/mydb.mdb”)
Dim d As String
d = “delete * from NewTable1”
myDB.Execute d
MsgBox “成功删除全部记录”
End Sub
Private Sub Command3_Click()
Dim myDB As DAO.Database
'Set myDB = DAO.OpenDatabase(“d:mydb3.mdb”)
Set myDB = DAO.OpenDatabase(App.Path + “/mydb.mdb”)
Dim e As String
e = “drop TABLE NewTable1”
myDB.Execute e
End Sub
Private Sub Form_Load()
Dim myDB As DAO.Database
'Set myDB = DAO.Workspaces(0).CreateDatabase(“d:mydb3.mdb”, dbLangGeneral)
Set myDB = DAO.Workspaces(0).CreateDatabase(App.Path + “/mydb.mdb”, dbLangGeneral)
Dim str_SQL As String
str_SQL = “Create Table NewTable1(Field1 Text(10),Field2 Short)”
myDB.Execute str_SQL
Dim a As String
a = “Insert INTO NewTable1 VALUES ('litao','21')”
myDB.Execute a
str_SQL = “Create Table NewTable2(Field1 Text(10),Field2 Short)”
myDB.Execute str_SQL
myDB.Close
MsgBox “成功创建mydb3.mdb数据库外加一条记录litao 21”
End Sub
Private Sub Command1_Click()
Dim myDB As DAO.Database
'Set myDB = DAO.OpenDatabase(“d:mydb3.mdb”)
Set myDB = DAO.OpenDatabase(App.Path + “/mydb.mdb”)
Dim c As String
c = “Insert INTO NewTable1 VALUES ('liqiao','20')”
myDB.Execute c
MsgBox “成功插入一条记录liqiao 20”
End Sub
篇10:创建作业的通用存储过程数据库教程
创建|存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_JobSet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_JobSet]GO
/*--定时调用存储过程
创建一个在指定时间,调用指定存储过程的作业 作业执行完成后会自动删除
--邹建 .07--*/
/*--调用示例
exec p_JobSet 'master.dbo.xp_cmdshell','2004-1-1 10:30'--*/create proc p_JobSet@prorcname sysname, --要调用定时调用的存储过程名,如果不在当前库中,则用:库名.所有者名.存储过程名@job_date datetime --存储过程的执行时间(包括时间信息)asdeclare @dbname sysname,@jobname sysname ,@date int,@time int
select @jobname='定时发送作业_'+cast(newid() as varchar(36)) ,@date=convert(varchar,@job_date,112) ,@time=replace(convert(varchar,@job_date,108),':','')
if exists(select 1 from msdb..sysjobs where name=@jobname) exec msdb..sp_delete_job @job_name=@jobname
--创建作业exec msdb..sp_add_job @job_name=@jobname,@delete_level=1
--创建作业步骤declare @sql varchar(800)select @sql='exec '+@prorcname ,@dbname=db_name()
exec msdb..sp_add_jobstep @job_name=@jobname, @step_name = '发送处理步骤', @subsystem = 'TSQL', @database_name=@dbname, @command = @sql, @retry_attempts = 5, --重试次数 @retry_interval = 5 --重试间隔
--创建调度EXEC msdb..sp_add_jobschedule @job_name = @jobname, @name = '时间安排', @enabled = 1, @freq_type = 1, @active_start_date = @date, @active_start_time = @time
-- 添加目标服务器EXEC msdb.dbo.sp_add_jobserver @job_name = @jobname , @server_name = N'(local)' go
篇11:[HOWTO]SQL Server数据库文件损坏的时候如何恢复数据库教程
server|恢复|数据|数据库
数据库文件损坏的时候如何恢复
欢迎大家同我交流:小白 enhydra_boy@tom.com
欢迎转载,请保留本声明,谢谢!
SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办,以下是笔者以前的笔记。仅适用于非master,msdb的数据库。
说明如下:
1 建一个测试数据库test(数据库类型为完全)
2 建一个表,插入点记录
create table a(c1 varchar(2))
go
insert into a values('aa')
go
insert into a values('bb')
go
3 作完全备份,到文件test_1.bak
4 在作一点修改
insert into a values('cc')
go
create table b(c1 int)
go
insert into b values(1)
go
insert into b values(2)
go
5 shutdown 数据库服务器
6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容,相当于数据库遭到致命的损坏。
7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。
8 运行isql -SLocalhost -Usa -P
1> backup log test TO DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUPt
est_2.bak' WITH NO_TRUNCATE
2>go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上),
BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。
9 进行恢复最老的完全备份
1> RESTORE DATABASE test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQL
BACKUPtest_1.bak' WITH NORECOVERY
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。
10 恢复最近的日志
1> RESTORE LOG test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKU
Ptest_2.bak' WITH RECOVERY
2> go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE LOG 操作成功地处理了 2 页,花费了 0.056 秒(0.173 MB/秒)。
数据已经完全恢复了,可以使用了。
select * from a
go
总结,DBA应该有一个完善的数据库备份计划。本例中,如果没有一个完全备份的话,数据库的恢复就不可能。
文档为doc格式