当前位置:首页 » 操作系统 » 数据库处理

数据库处理

发布时间: 2022-01-12 22:03:12

数据库表太多 怎么处理

在objects中分别选择<current_user>和my objects
tools-preferences-object browser-default user selection
中选择 <current_user>

❷ 为什么数据库规范化处理

通常情况下,可以从两个方面来判断数据库是否设计的比较规范。一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。若符合这两个条件,则可以说明这个数据库的规范化水平还是比较高的。当然这是两个泛泛而谈的指标。为了达到数据库设计规范化的要求,一般来说,需要符合以下五个要求。
要求一:表中应该避免可为空的列。
虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库在处理的时候,需要进行特殊的处理。如此的话,就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。
所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免。若确实需要的话,我们可以通过一些折中的方式,来处理这些空字段,让其对数据库性能的影响降低到最少。
一是通过设置默认值的形式,来避免空字段的产生。如在一个人事管理系统中,有时候身份证号码字段可能允许为空。因为不是每个人都可以记住自己的身份证号码。而在员工报到的时候,可能身份证没有带在身边。所以,身份证号码字段往往不能及时提供。为此,身份证号码字段可以允许为空,以满足这些特殊情况的需要。但是,在数据库设计的时候,则可以做一些处理。如当用户没有输入内容的时候,则把这个字段的默认值设置为0或者为N/A。以避免空字段的产生。
二是若一张表中,允许为空的列比较多,接近表全部列数的三分之一。而且,这些列在大部分情况下,都是可有可无的。若数据库管理员遇到这种情况,笔者建议另外建立一张副表,以保存这些列。然后通过关键字把主表跟这张副表关联起来。将数据存储在两个独立的表中使得主表的设计更为简单,同时也能够满足存储空值信息的需要。
要求二:表不应该有重复的值或者列。
为了解决这个问题,有多种实现方式。但是,若设计不合理的话在,则会导致重复的值或者列。如我们也可以这么设计,把客户信息、联系人都放入同一张表中。为了解决多个联系人的问题,可以设置第一联系人、第一联系人电话、第二联系人、第二联系人电话等等。若还有第三联系人、第四联系人等等,则往往还需要加入更多的字段。
所以,在数据库设计的时候要尽量避免这种重复的值或者列的产生。笔者建议,若数据库管理员遇到这种情况,可以改变一下策略。如把客户联系人另外设置一张表。然后通过客户ID把供应商信息表跟客户联系人信息表连接起来。也就是说,尽量将重复的值放置到一张独立的表中进行管理。然后通过视图或者其他手段把这些独立的表联系起来。
要求三:表中记录应该有一个唯一的标识符。
在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来唯一的标识行记录,而不要通过名字、编号等字段来对纪录进行区分。每个表都应该有一个ID列,任何两个记录都不可以共享同一个ID值。另外,这个ID值最好有数据库来进行自动管理,而不要把这个任务给前台应用程序。否则的话,很容易产生ID值不统一的情况。
要求四:数据库对象要有统一的前缀名。
一个比较复杂的应用系统,其对应的数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起的作用,恐怕会比较困难。而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到所需要的数据库对象而头疼。
其次,表、视图、函数等最好也有统一的前缀。如视图可以用V为前缀,而函数则可以利用F为前缀。如此数据库管理员无论是在日常管理还是对象引用的时候,都能够在最短的时间内找到自己所需要的对象。
要求五:尽量只存储单一实体类型的数据。
这里将的实体类型跟数据类型不是一回事,要注意区分。这里讲的实体类型是指所需要描述对象的本身。笔者举一个例子,估计大家就可以明白其中的内容了。如现在有一个图书馆里系统,有图书基本信息、作者信息两个实体对象。若用户要把这两个实体对象信息放在同一张表中也是可以的。如可以把表设计成图书名字、图书作者等等。可是如此设计的话,会给后续的维护带来不少的麻烦。
遇到这种情况时,笔者建议可以把上面这张表分解成三种独立的表,分别为图书基本信息表、作者基本信息表、图书与作者对应表等等。如此设计以后,以上遇到的所有问题就都引刃而解了。
以上五条是在数据库设计时达到规范化水平的基本要求。除了这些另外还有很多细节方面的要求,如数据类型、存储过程等等。而且,数据库规范往往没有技术方面的严格限制,主要依靠数据库管理员日常工作经验的累积。

❸ 数据库过大该怎么处理

问题分析:这种问题是由于服务器的数据库文件或者日志太大造成的,那么我们清理下日志或者收缩数据
库就可以了。解决方法:一
第一种解决方案,不限制数据库文件大小,当然,这是在您的服务器空间足够的情况下

第二种解决方案,直接清理数据库日志文件
我们打开数据库,然后选择分离数据库,找到日志文件并删除,然后附加,会自动产生
一个初始的很小的日志文件

第三种收缩数据库日志文件,设置数据库文件或者日志文件收缩到一定大小就可以。
以上各种解决方案,可以根据不同情况选择不同方案,为防止对数据库操作不熟悉,操
作失误,修改前请先备份好数据库。

❹ 数据库处理

DbConnection是指代连接到你指定的数据库中,DbCommand给你提供相应的操作!!
你据说的sql Server是数据库,但是在C#环境中要有东西连接才能跟你的Sql Server连接上,并进行操作!!

❺ 如何把Excel表格当做数据库处理

一、 建立数据库
方法一:使用向导,调出方法⑴可采用“文件”菜单“新建”
⑵或采用“工具”菜单“向导”
方法二:使用数据库设计器
1、 使用向导建立数据库
特点:可以方便快捷地创建数据库,但只适用于一般常用的数据库。
2、 使用数据库设计器建立数据库
特点: 最大特点就是灵活性
操作步骤:⑴“文件”菜单“新建”,显示新建对话框
⑵选择“数据库”和单击“新建文件”钮
⑶在创建对话框中输入新数据库的名称和单击“保存”钮
效果:数据库文件已经建立完成。
显示出“数据库设计器”窗口和“数据库设计工具”
打开“数据库设计器”工具方法:“显示”菜单“工具栏”
选择“数据库设计器”
三、建立表
1、 数据库与数据表
可以先建立自由表,然后再添加到数据库中
建立新的数据库表,系统会将其自动加入到数据库中。
2、 建立自由表
注意:自由表独立于任何数据库,如需要课添加到数据库中,但不能同时
将一个表添加到多个数据库。
预备知识:建立表必须首先建立表的结构
即要描述各个字段的字段名、字段类型、字段宽度、如果是数
值型还有小数位数,以及索引、是否再字段中允许空值(选择NULL)

3、 建立数据库表
有三种方法:
法一、“文件”菜单“新建”,显示新建对话框
选择“表”和单击“新建文件”钮
在创建对话框中输入新数表名称和单击“保存”钮
法二、再建立完数据库后,不关闭“数据库设计器”窗口,单击鼠标右键后
选择快捷菜单种的“新表”,单击“新表”钮,再创建对话框输入表 名
后“保存”
法三、使用数据库设计器工具栏
(“显示”菜单“工具栏”)
选择“数据库设计器”工具栏种的第一个钮“新建表”

二、使用命令建立数据库、数据库表
1、 建立数据库
CREATE DATABASE 数据库名称
2、 建立数据库表
CREATE TABLE │DBF 表名 [FREE]
(字段名1 字段类型 [(字段宽度 [,小数位数] )]
[(字段名2……]

二、使用向导建立查询
1、查询形式分类:查询向导:标准查询
交叉表向导:以电子表格形式输出查询结果
图形向导:以电子图形形式输出查询结果
2、使用查询向导建立查询步骤:
[0]使用查询向导前必须先打开用到的库表或自由表
⑴字段选取
⑵记录筛选
⑶选择排序方式
⑷查询完成(选择保存并运行)(浏览查询)
⑸打开查询设计器,修改查询
求采纳为满意回答。

❻ 求助sql数据库数据处理

update T1 set ID = convert(varchar(30),time0,112)+replace(convert(varchar(30),time0,8),':','')

❼ 传统数据库处理方式和大数据处理方式的区别

文件系统把数据组织成相互独立的数据文件,实现了记录内的结构性,但整体无结构;而数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
在文件系统中,数据冗余度大,浪费存储空间,容易造成数据的不一致;数据库系统中,数据是面向整个系统,数据可以被多个用户、多个应用共享使用,减少了数据冗余。
文件系统中的文件是为某一特定应用服务的,当要修改数据的逻辑结构时,必须修改应用程序,修改文件结构的定义,数据和程序之间缺乏独立性;数据库系统中,通过DBMS的两级映象实现了数据的物理独立性和逻辑独立性,把数据的定义从程序中分离出去,减少了应用程序的维护和修改。
文件系统和数据库系统均可以长期保存数据,由数据管理软件管理数据,数据库系统是在文件系统基础上发展而来。

❽ 数据库置疑了怎么处理

解决由于sql2000日志文件引起的“置疑”。
日志有错误--------重新附加提示日志有错误。
日志文件丢失-----丢失了.ldf文件,只有.mdf文件的数据库重建。

步骤:
一、备份“置疑”数据库的数据文件,因为日志文件.ldf出错,可以只备份.mdf文件。

二、打开企业管理器(SQL Server Enterprise Manager),删除“置疑”数据库,如果提示删除错误,可以重启数据库服务器,然后再试。

三、在企业管理器中,新建同名数据库(假如数据库为test),注意建立的数据库名称,还有数据文件名要保持和原数据库一致。

四、停止数据库服务器。

五、将刚才新建数据库生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库.mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。

六、启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。

七、设置数据库允许直接操作系统表。此操作可以在企业管理器(SQL Server Enterprise Manager)里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go

八、设置test为紧急修复模式 。
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在企业管理器(SQL Server Enterprise Manager)里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表。

九、下面执行真正的恢复操作,用dbcc rebuild_log命令来重建数据库日志文件(重建路径根据你实际的数据库路径来)。
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')

执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

说明您的其他程序正在使用该数据库,如果刚才您在八步骤中使用企业管理器打开了test库的系统表,那么退出企业管理器就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在企业管理器里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。

十、验证数据库一致性。(次步骤可省略)
dbcc checkdb('test')
一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test'中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

十一、设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

十二、最后一步,我们要将步骤七中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在企业管理器里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
对于只有.mdf文件的sql2000数据库恢复,从第三步开始做就行了。

最好的方法为先分离然后附加看下

1.我们SQL SERVER企业管理器新建立一个供恢复使用的同名数据库(注意:要跟问题数据库同名,本例中为myDb)。
2.停掉数据库服务器。
3.将刚才生成的数据库的日志文件myDb_log.ldf删除(本例中的示列数据库名,实际使用您自己的数据库名称),用刚才备份的数据库mdf文件覆盖新生成的数据库数据文件myDb_data.mdf。
4.启动数据库服务器。此时会看到数据库myDb的状态为“置疑”。这时候不能对此数据库进行任何操作。
5.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右--键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go F.设置myDb为紧急修复模式
在查询管理器里设置如下命令:

update sysdatabases set status=-32768 where dbid=DB_ID('stib')此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
6.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('stib','E:\zz\stib_log.ldf')警告: 数据库 'myDb' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
7.验证数据库一致性(可省略)
dbcc checkdb('stib')一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'myDb' 中)。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

sp_dboption 'stib','single user','true'--设置为单用户

dbcc checkdb('stib','REPAIR_ALLOW_DATA_LOSS')--这个语句可能执行几遍之后有效

sp_dboption 'stib','single user','false'--取消单用户
8.设置数据库为正常状态
sp_dboption 'stib','dbo use only','false'

9.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go

到此数据库置疑问题解决。

❾ 数据库中的数据处理方式

时时处理就是类似于触发器,只要有一点变动就触发一个事件,然后处理这个事物。
批处理就是。。。定时或定量一批一起处理。
分布处理就是不在一台服务器上,由许多客户端进行处理,然后最后结果上传到服务器。

❿ 如何处理数据库的时间

oracle为例吧:
1.分钟转成不同格式的时间
数据库里有个字段 存的分钟
① 现在想显示成HH:MM格式 假设为514分钟
SELECT to_char((to_date('00:00','HH24:MI')+514/24/60),'HH24:MI') from al
输出结果:
08:34
②如果存的是秒 同理
SELECT to_char((to_date('00:00:00','HH24:MI:SS')+514/24/60/60),'HH24:MI:SS') from al
输出结果:
00:08:34
至于显示成其他的格式,也就不成问题了
2.时分相加
至于为什么要写这个,是因为Oracle里没有两个时间相加的处理,两个to_date相减可以,相加就出错了:
数据库里有两个字段 存的都是HH:MM格式的时间
假设一个是本月上午缺勤时间合计: 08:30(8个半小时)
另外一个是本月下午缺勤时间合计: 00:30(半小时)
现在想要总缺勤时间,显示成 HH:MM格式
做法有两种
① 正常的逻辑运算(代码或者PLSQL实现的应该比这个容易的多,仅限于SQL实现):
select LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0') || ':' || LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0') from al
看起来很复杂,而实际上就是把小时相加,分钟相加,之后把分钟满60的小时进位,取余的显示:
取前两位相加得小时:(是因为不确定数据储存的格式是不是严格的HH:MM,而不能借正则分隔“:”)
(substr('08:30',1,2) + substr('00:30',1,2)
取后两位相加得分钟:
(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))
把分钟满60的小时进位得显示用的小时: (substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60
现在小时算完了,不足两位左补零:
LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0')
把分钟取余得显示用的分钟:
mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60)
现在分钟算完了,不足两位左补零: LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0')
最后连上“:”就变成上述的SQL,得到的时间用HH:MM显示了
输出结果:
09:00
②函数实现:
SELECT to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI') from al
同样看起来很复杂
首先把HH:MM的换成数值:
to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))
输出结果:.(其实是代表了一个时间,是以天为单位的)
现在*24*60 把数值换成分钟:
(to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60
输出结果:510
也就是把08:30 变成了510分
(to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60
输出结果:30(时间是.)这两个
也就是把00:30 变成了30分
然后把两个分钟相加:
((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)
输出结果:540
剩下的就是显示处理了,和1里面的做法一致:
to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI')
输出结果:
3. 不论是方法①还是方法②,这里都存在一个问题:如果时间相加之后超出23:59,系统就会报错,目前我用的涉及不到这个 就没写出来,如果有用到的直接再转成DD:HH:MM的格式就行了,也就是把小时数满24的进位取显示用的天
SELECT to_char(to_date('01 00:00','DD HH24:MI') +(((to_date('23:30','HH24:MI') - trunc(to_date('23:30','HH24:MI'))) *24*60 + (to_date('01:30','HH24:MI') - trunc(to_date('01:30','HH24:MI'))) *24*60)/24/60-1),'DD HH24:MI') from al
输出结果:01 01:00(25小时)
oracle 时间相减
select to_char((TO_DATE('1970-01-01', 'yyyy-MM-dd') +
(to_date('10:10:10', 'HH24:mi:ss') -
to_date('12:10:10', 'HH24:mi:ss'))), 'HH24:mi:ss')
from al;
对当前日期增加50分种
SQL> select sysdate, sysdate+numtodsinterval(50,’minute’) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:39:12 2010-10-14 22:29:12
对当前日期增加45秒
SQL> select sysdate, sysdate+numtodsinterval(45,’second’) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:40:06 2010-10-14 21:40:51
对当前日期增加3天
SQL> select sysdate, sysdate+3 from al ;
SYSDATE SYSDATE+3
——————- ——————-
2010-10-14 21:40:46 2010-10-17 21:40:46
对当前日期增加4个月
SQL> select sysdate, add_months(sysdate,4) from al ;
SYSDATE ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:41:43 2011-02-14 21:41:43
对当前日期增加一个小时:
SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:38:19 2010-10-14 22:38:19
对当前日期增加50分种

热点内容
狂三脚本 发布:2024-11-15 17:31:38 浏览:871
附近存储柜 发布:2024-11-15 17:15:17 浏览:451
王选解决汉字存储问题 发布:2024-11-15 17:15:11 浏览:659
球球大作战安卓为什么不能玩哪些模式 发布:2024-11-15 17:14:26 浏览:995
存储器讲课 发布:2024-11-15 17:14:12 浏览:195
安卓充电头怎么称呼 发布:2024-11-15 17:11:17 浏览:445
猎人手游源码 发布:2024-11-15 17:09:28 浏览:432
qt资源图片编译 发布:2024-11-15 16:59:26 浏览:665
编译选项保护范围最广 发布:2024-11-15 16:57:47 浏览:605
c语言中的除号 发布:2024-11-15 16:51:09 浏览:215