中企动力 > 商学院 > sql数据库修改
  • ?

    分享带游标的T-Sql批量修改数据库记录

    爱与诚

    展开

    首先我们创建一个数据库为article,里面存储文章的标题,作者,内容等信息,主键为articleid。创建完成后我们通过use article来对这个数据库进行操作。

    USE article

    GO

    声明变量和游标

    declare @aa int,@ff int

    declare @@rr int

    declare CURSORNAME cursor for select articleid from article ORDER BY articleid

    open CURSORNAME

    fetch next from CURSORNAME into @ff

    通过游标随机增加一定期限的时间,然后更新整个表。

    set @aa=1

    while @@fetch_status=0

    begin

    set @@rr=rand()*59

    update article set articleAddtime=DATEADD(day,@@rr, '2010-1-1') WHERE articleid=@ff

    set @aa=@aa+1

    fetch next from CURSORNAME into @ff

    end

    close CURSORNAME

    deallocate CURSORNAME

    GO

    好了,到这里就结束了。如果你是初学者,希望这段代码能够帮助到你。如果喜欢请点赞转发给有需要的朋友。

  • ?

    SQL2000数据库置疑的修复

    走过

    展开

    一、SQL2000体积小、安装速度快,成熟稳定,至今仍有不小的用途;但是相比较于2005和2008,有时突然断电或磁盘问题可能导致出现“置疑”的情况机率要大一些,此时我们无法读取数据;如果有备份,直接还原即可;如果没有备份,那就只能修复了;置疑修复后不能完全保证数据的准确性,有可能部分数据会丢失。

    二、注意事项

    1、千万不要对数据库进行分离操作;

    2、建议停掉SQL服务,把置疑的数据库备份一份。

    三、置疑修复步骤

    1、假设原库名为DB,新建一个库名为DB1(不要和DB在一个目录下);

    2、停止SQL服务;

    3、将置疑库DB重命名为DB1,覆盖DB1;

    4、启动SQL服务,此时在企业管理器中DB1仍为置疑,先不用管;

    5、执行下面的语句,注意修改数据库名称:

    USE MASTER

    GO

    SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE

    GO

    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='DB1'

    Go

    sp_dboption 'DB1', 'single user', 'true'

    Go

    DBCC CHECKDB('DB1')

    Go

    update sysdatabases set status =28 where name='DB1'

    Go

    sp_configure 'allow updates', 0 reconfigure with override

    Go

    sp_dboption 'DB1', 'single user', 'false'

    Go

    6、此时DB1库恢复正常,但如若重启电脑,库仍为“置疑”;彻底解决的方法是再新建一个库,如DB11,将DB1库中的数据通过“导入导出工具”导到新库中。

    四、SQL2000数据库设置自动备份请参考我之前的文章,为了最大限度的确保数据不被损坏,建议设置自动备份功能。

  • ?

    同和君带你玩转数据库!详解SQL Server基础操作……(附个人黑历史+大数据分析)

    Edward

    展开

    前几天同和君被某粉丝吐槽不务正业,那今天咱们就来务一下正业,来简单讲讲有关SQL Server的基础操作(其实是为了交差)。

    有关SQL(结构化查询语言)与其对应的各类数据库管理系统(SQL Server、Access等)的功能与运用范围,在这里就不做赘述了,有兴趣的可以去搜一下,然后你就会发现一个新的世界了~

    首先下载安装SQL Server并配置其实例,这方面也不详细说明了,有点电脑基础的都会~然后就是正式的实操环节,首先连接到服务器:

    进入后第一件事当然是创建属于自己的数据库啦~

    右键「数据库」,选择新建,然后跳出右边的对话框,根据实际需求来设置「文件初始大小」、「文件增长量」、「日志初始大小」、「日志增长量」。

    增长方式和文件大小上线可以自定义。

    确定后就能看的建立好的数据库了。

    试着生成一个有关数据库信息的脚本~

    详细sql文件信息如下:

    当然你也可以选择使用Transact-SQL语言直接来创建数据库:

    先点「新建查询」调出查询分析编译器:

    然后输入以下语句:

    createdatabase HKSDBonprimary(name=HKSDB_data,filename='d:\File\TEMP\HKSDB_data.mdf',size=20MB,maxsize=500MB,filegrowth=5MB)log on(name=HKSDB_log,filename='d:\File\TEMP\HKSDB_log.mdf',size=20MB,maxsize=100MB,filegrowth=1MB)

    右键相应的数据库属性会跳出很多选项:

    如果你把数据库的初始值设高了,可以通过收缩来减小:

    接着是通过代码来查看&修改数据库属性:

    --查看数据库属性sp_dboption HKSDB--查看数据库信息sp_helpdb HKSDB--修改日志文件的最大值和初始值use HKSDBgoalterdatabase HKSDB modifyfile(name=HKSDB_log,maxsize=200MB)alterdatabase HKSDB modifyfile(name=HKSDB_log,size=40MB)--更改数据库use HKSDBalterdatabase HKSDBaddfile(name=HKSDBFZ,filename='D:\File\TEMP\HKSDBFZ.ndf',size=2mb,maxsize=10mb,filegrowth=1mb)alterdatabase HKSDBadd log file(name=HKSDBLOG1,filename='D:\File\TEMP\HKSDBLOG1.ldf',size=2mb,maxsize=10mb,filegrowth=1mb)use HKSDBalterdatabase HKSDBremove file SYDBFZalterdatabase HKSDBremove file HKSDBLOG1如果你对某个数据库不爽,想把它打入冷宫,可以直接右键数据库删除,也可以手动输入代码:

    use HKSDBdropdatabase HKSDB似乎碰上了钉子户:

    试试大神的代码:

    USE MASTER GO DECLARE@dbname SYSNAME SET@dbname='同和君的的数据库'--这个是要删除的数据库库名 DECLARE@s NVARCHAR(1000)DECLARE tb CURSORLOCALFORSELECT s ='kill '+ CAST(spid ASVARCHAR)FROM MASTER..sysprocesses WHERE dbid = DB_ID(@dbname)OPEN tb FETCHNEXTFROM tb INTO@sWHILE @@fetch_status=0BEGINEXEC(@s)FETCHNEXTFROM tb INTO@sENDCLOSE tb DEALLOCATE tb EXEC('drop database ['+@dbname+']')

    完美~

    好的,那么到这里大家已经大致了解了数据库的定义与管理,接下来带大家起飞了~

    手动一个个创建数据表是一件很苦逼的事情,再加上我们还没学到JAVA和SQL Server链接的JDBC技术,所以同和君选择一种取巧的方式:从Excel表格直接导入数据~

    选好数据源类型:

    选好目标文件后下一步:

    然后对目标表的各项数据分别选好类型(其中大多都系统默认好了,局部地区稍微修改下就好,比如学号之类的):

    我们来预览一下~

    成功~

    然后我们可以开始骚操作了~

    不过在此之前,还是先教大家如何备份&还原吧~

    接下来是还原,这回我们导入一个不同的~

    这个是我用来做多表连接的~详细的后边会讲到~

    首先我们来查一下同和君初恋女孩高一的成绩:

    然后保存该sql文件:

    然后再查一下初中好基友的总分区排名:

    再保存下:

    然后查一下b站up主@SmartMogician 的黑历史

    哟,竟然出现同校同学同名同姓的情况了!

    这样的话就能成功筛选了:

    没想到当年的语文竟然这么难!

    当年的学霸……

    这样看可能更直观:

    (emmmm……这真的不是招生办的阴谋……)

    这样看上去就舒心多了~

    很多朋友应该都存在偏科的现象,但在我们的深入研究下,发现事情并不简单:

    语文不好的同学不一定数学好,

    但数学不好的同学就有可能语文好了……

    三倍的人数差还是能说明问题的……

    那么以上呢,就给大家详细展示了大多常用查询指令的用法~接下来给大家介绍的是「连接查询」,通过这个就能实现多表之间的查询了。

    成绩与排名两个表连接,分析理科总成绩与数学成绩之间的关系:

    看样子综合能力好的同学,真的是每一门都不偏科呢!

    最后同和君要做一件集大成的骚操作~

    首先合并一下数据:

    嘿嘿嘿~

    我们来看看初中的那些朋友们到了高中后学习状态如何~

    唯一能对应上的只有姓名了,结果如下:

    换个表试试:

    大数据显示,初中成绩好的高中成绩不一定好,但高中成绩好的初中成绩一定不差!

    什么?有人想看我的成绩?

    抱歉,这两个表里都没有我的名字hhh,成绩好就是可以为所欲srgsrgz

    [数据删除]

    大家也看到了,现在在某二本混日子的我……(;д;)

    所以学习这玩意嘛……哎,不谈了不谈了……

    接下来介绍一些增删查改的相关操作:

    --增加一条记录insert N校联考 (考号,姓名,班级,学校)values('10001','同和君','一班','社会大学')--求表中各校总分的平均分,并存入一个新的数据库createtable AvgMarks(学校 nvarchar(255),平均分 real)insertinto AvgMarks(学校,平均分)select 学校,AVG([9科总分分数])from N校联考groupby 学校--将「N校联考」中所有「广州市第五中学」的信息更新为「广州五中」update N校联考set 学校='广州五中'where 学校='广州市第五中学'执行结果:

    ok,那么就暂且先告一段落吧,基本操作讲完了,下回咱们就讲讲高级操作吧~

    鸣谢以上十七所高校提供的成绩信息~

  • ?

    sql替换数据库字段中的字符

    邢乐松

    展开

        某些时候我们要修改数据库字段中的部分字符串,如果内容少时一个一个替换,内容多时,就不能一个一个的替换了,因为这样不仅耗时还容易出错。下面就用sql批量进行替换。

    替换shopping_hw表中字段hw_pic,内容“*common”替换为“+play”.

    替换sql:UPDATE shopping_hw SET  hw_pic= replace (hw_pic,  '*common', '+play' ) ;

    运行sql,替换成功,查看结果。

    UPDATE `table_name` SET `field_name` = replace (`field_name`,'from_str','to_str') WHERE ……说明:table_name —— 表的名字 field_name —— 字段名 from_str —— 需要替换的字符串 to_str —— 替换成的字符串 

  • ?

    前端妹子被后端程序员气哭,因不帮修改数据库,让自己去修改!

    小鱼

    展开

    在互联网公司,技术这块一般有前端开发工程师,后端开发工程师,测试工程师,产品经理等,当然架构师,运维也要算上,作为产品开发的主力人员一般上就是前后端开发工程师了,在做一个项目的过程中,前后端的程序员肯定是有好多地方需要配合的,比如前端要调用后端的接口,有好多需要沟通与协调的地方,近期,有一个妹子就吐糟在与后端程序员合作时遭到刁难。

    据这名前端小姐姐说,她不会使用sql,为了测试页面效果,她需要修改数据库的数据,来看看效果如何,他就让后端的程序员小哥哥帮忙修改一下数据,可是这个后端的程序员不论怎么求都不肯帮忙,非让这个前端小姐姐自己改,把小姐姐都给气哭了,针对这种现象,让我们来看看网友的评论吧,看看有没有给小姐姐抱不平的!

    网友一:发现现在前端到处都是水货遍地,天天就是这个框架那个框架,对界面以外的东西根本就不想了解,甚至包括项目的业务都觉得不用懂,抱着我就是写界面的心态。而且比较奇怪的是,前端出去面试,面试官稍微问一点综合性的偏后端的就炸毛了,反而现在后端有几个 不会js 语言?还有诸如ng react框架基本也都熟悉。后端面试经常会问到前端知识。 这也难怪现在项目leader , cto都是后端出身,前端局限在自己一亩三分地,最多是个高级页面仔。 我是看不起大多数前端,要不是现在团队非得招聘前端,我前后端一起撸

    作者点评:看来这位网友对前端的怨言还是比较多的,不过说的的确是实话,前端有相当一部分不会后端的东西,而后端基本上都可以写js,甚至还会写一些html与css,不过话又说话来,后端虽然会的广了一点,但是有些还是需要专业的前端,比较难的页面效果只有前端来做,人家还是比较专业的。

    网友二:学呀,这种事没必要求人。

    作者点评:sql其实是挺简单的,不过会者不难,难者不会嘛,这位前端小姐姐可能是一时着急用!

    网友三:评论怎么回事儿?sql本来就不是前端的事情 我就算会也是我的兴趣或者我自己愿意学的。 "我会"和"我去加"本就是两码事儿 工作性质决定了肯定要让后端加啊

    作者点评:这位网友就帮这位前端小姐姐抱不平了,这名网友认为修改数据就是后端的事情!

    网友四:连产品经理和运营都会sql了,程序猿竟然不会写?

    作者点评:没错,这是实话,在好多公司都能看到产品经理,测试人员都会写sql,不过都是简单的那种,论写sql能力,产品测试比不过后端程序员,后端程序员可能比不过运维或者持平,而运维肯定是比不过DBA了,一般是这种情况,不同公司也略有不同!

    网友五:我作为一个前端,真替你感到悲哀……网上随便搜一下两分钟搞定的事!

    作者点评:这名前端的网友可能说的有点简单了,可能你说的两分钟是有一定的sql基础了,什么事还是多理解一下他人吧!

    网友六:让前端自己加字段的后端是有多low b。 可以看出数据模型搞得是有多随意

    作者点评:有的公司在这方面没有管理的那么的规范,责任不明确,谁加都可以,这也存在一定的弊端!

    网友七:那是没遇到我,遇到我别说加数据啦,帮你删库都可以

    作者点评:哥,就不要这么虎了!做名程序员要谨慎做事,不要这么鲁莽!

    网友八:我是后端 这尼玛就是应该后端做的 楼上都是小公司吗

    作者点评:这名网友也替前端小姐姐抱不平,他认为就是后端应该做的!

    网友九:区分清楚责任,我认为这应该就是后端做的,楼主哪里做错了?

    作者点评:这名网友与楼上观点一致!

    从这个情况来看,觉得这应该是一个小公司,关于改数据比较随意,没有明显的责任人来做这事,谁做都可以的状态,在有一些大一点的公司,修改一个字段,调整一条数据都会专门有人负责,不过话又说回来了,既然公司没有这方面的规范,我个人倒是觉得,这位后端程序员应该帮助一下前端的小姐姐,工作中应该互帮互助呀,不能太斤斤计较了,有些事情就是举手之劳,何必为难前端小姐姐呢,再说了,今天你帮助了她,以后说不定有需要她帮你调页面呢,只有乐于奉献,才能建立更好的工作氛围,以后的工作才能进行的更顺利,大家说是么?

    以上所有图片均来之互联网大家好,我是“上世是朵花”。如果你有什么好的看法或者观点可以在评论区展现你的才华,互动交流,如果想进一步了解我,那就关注我吧!

  • ?

    数据库操作中你必须要会的SQL语句 增删改查一样都不能少

    糜媚

    展开

    CREATE TABLE

    CREATE TABLE用来创建一个表

    //创建一个表,表的名称为table_name,该表有三列,列名分别为column_1,column_2,column_3.列中的数据类型分别为整形,文本,整形

    创建表语法

    举例如下:

    举例

    INSERT INTO

    INSERT INTO用于向列中插入值

    //分别向列id, name, age中插入 1, 'Justin Bieber', 21 insert into table_test (id,name,age) values(1,"Justin Bieber",21);

    //插入多条数据

    1、MySQL数据库:

    mysql插入

    2、oracle数据库:

    oracle插入方式

    UPDATE

    用于修改表中的数据

    语法 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    举例:修改id=1这一行的age列的数据为22 SQL如下:

    UPDATE table_test SET age = 22 WHERE id = 1;

    ALTER TABLE

    修改表,用于增加,修改,删除列

    例如:ADD COLUMN添加一个列 ALTER TABLE table_test ADD COLUMN address TEXT;

    例如:DROP COLUMN删除一个列 ALTER TABLE table_test DROP COLUMN address ;

    DELETE

    删除表中的行

    例如:IS NULL表示值是NULL或者不存在,删除age列中值不存在的行 DELETE FROM table_test WHERE age IS NULL;

    SQL查询 DISTINCT 过滤重复的数据 语法如下:

    WHERE

    通过各种条件定位到具体的数据

    where语法操作符

    例如:统计age大于24的数据 SELECT * FROM table_test WHERE age >24;

    LIKE

    模糊匹配

    举例:_通配一个字符 SELECT * FROM table_test WHERE name LIKE 'Mar_y';

    举例:%通配任意多个字符 SELECT * FROM table_test WHERE name LIKE '%Bieber%';

    BETWEEN 匹配一个范围

    例如:查到age范围在23到30之间的数据 SELECT * FROM table_test WHERE age BETWEEN 23 and 30;

    AND 逻辑与

    例如:查到age范围在23到30之间的数据 SELECT * FROM table_test WHERE age >= 23 and age <= 30;

    OR逻辑或

    例如:查到age范围不在在23到30之间的数据 SELECT * FROM table_test WHERE age <= 23 or age >= 30;

    等同于 SELECT * FROM table_test WHERE age not BETWEEN 23 and 30;

    ORDER BY

    例如:依据某一列进行排序,ASC是顺序排序,DESC是逆序排序。 SELECT * FROM table_test ORDER BY age ASC;

    COUNT()

    COUNT()是最快的方式,统计一张表总共的行数。COUNT()函数的参数是一个列的名称,统计整个表所有的行数时,采用通配符*;

    例如:统计整个表的行数 SELECT COUNT(*) FROM table_test ;

    例如:统计age为25的行数 SELECT COUNT(*) FROM table_test WHERE age= 25;

    GROUP BY

    GROUP BY <列名>将一列中相同值的列分成一组

    例如:按照age进行分组,并统计每组元素的个数 SELECT age, COUNT(*) FROM table_test GROUP BY age;

    SUM()

    SQL通过SUM()可以很容易统计一列的和

    例如:计算age一列的和 SELECT SUM(age) FROM table_test ;

    MAX()

    例如:MAX()函数可以找到一列中的最大值 SELECT MAX(age) FROM table_test ;

    MIN()

    MIN()函数可以找到一列中最小的值,用法与MAX()相同

    AVG()

    AVG()函数计算一列的平均值,用法与MAX()相同

    ROUND() 设定数值到指定的精度

    举例:设定计算的平均值精度精确到小数点后两位 SELECT ROUND(AVG(age), 2) FROM table_test;

    PRIMARY KEY

    在使用CREATE TABLE时为id添加PRIMARY KEY,PRIMARY KEY是一张表中每一行独一无二的标识,该表将id作为主键。通过主键将多个表联系起来。

    CREATE TABLE table_test (id INTEGER PRIMARY KEY, name TEXT);

  • ?

    SQL语句之数据更新删除数据

    Hunter

    展开

    1、不在需要的数据,就要执行删除操作,删除语法如下:

    DELETE FROM 表名称 [ WHERE 删除条件(s) ] ;

    其中,WHERE子句里面,依然可以使用子查询进行操作。

    范例:删除雇员编号是7566的雇员信息

    DELETE FROM myemp WHERE empno=7566 ;

    范例:删除雇员编号是7788、7902的雇员信息

    DELETE FROM myemp WHERE empno=7788 OR empno=7902 ;

    DELETE FROM myemp WHERE empno IN(7788, 7902) ;

    注意:用了rollback回退操作!所以7566的数据还存在

    范例:删除高于公司平均工资的雇员信息

    DELETE FROM myemp WHERE sal>(SELECT AVG(sal) FROM myemp)

    范例:删除全部记录

    DELETE FROM myemp ;

    一定要记住,在任何的系统之中,删除操作都属于极其危险的操作。实际上,一个稳定的系统,对于删除操作,都是具备一个逻辑删除和物理删除的两种方式:

    ◆ 物理删除:直接执行DELETE FROM,彻底从表中删除记录。

    ◆ 逻辑删除:增加一个逻辑的字段,例如:有一个flag字段,如果flag=1表示已经被删除,如果flag=0表示没有被删除。

    如果真执行的是删除操作,那么,就相当于修改了flag字段的内容,同时在每次查询的时候,只需要增加一个WHERE限定条件(SELECT * FROM ... WHERE flag=1)。

    【总结】

    1、 更新操作,要比查询操作,更加的简单(语法都固定)。

    2、 所有的更新操作,每次更新完成之后,都一定会返回更新的数据行数,如果没有更新,则返回0。

  • ?

    如何修复SQL Server数据库中的MDF文件

    夏雪

    展开

    数据库文件对所有用户都很重要, 并存储大量重要信息。了解有关修复损坏的 SQL 数据库文件的手动和专业解决方案。  今天的MS SQL Server是最常用的关系数据库之一。 它具有先进的内部结构并提供很高的可靠性。 这就是大多数组织使用SQL Server数据库来保存所有关键业务数据的原因。 但是也有一些情况,如病毒感染,操作系统故障,文件系统损坏等等,因为SQL数据库变得损坏,并且存储在其中的所有数据都不可访问。 从SQL Server中的损坏状态修复.mdf文件不是一件容易的事。  用户可以使用手动技术来修复SQL数据库中损坏的MDF文件,但这不是一种可靠的方法,因为不能保证使用手动方法进行数据恢复。 但是,也有第三方工具,如SysTools SQL Recovery,声称以完美的方式修复.mdf文件。  因此,在这篇文章中,我们将讨论修复损坏的SQL数据库的最佳解决方案。 但在此之前,了解SQL数据库中损坏的原因很重要。  损坏的SQL数据库背后的原因  在SQL Server数据库中出现腐败背后可能有各种可能的原因。 众所周知,SQL数据库的MDF文件是主数据库文件。 它们存储所有用户数据,因此MDF文件中的损坏可能会损坏整个数据库。 因此,首先,我们将讨论MDF文件损坏背后的所有可能的原因:  存储介质中存储所有MDF文件的损坏。  如果用户将SQL数据库存储在压缩文件夹中,则MDF文件可能会损坏。  任何修改或更改都是在SQL Server帐户中完成的。  用户可能意外删除了一些数据。  如果文件头损坏,则会导致MDF文件损坏。  损坏的磁盘驱动程序。  如果SQL数据库正在使用,并且在两者之间存在网络故障,则会导致MDF文件损坏。  导致MDF文件损坏的其他可能原因包括病毒攻击,硬盘故障,系统异常关机和突然断电。  因此,如果MDF文件损坏,那么SQL数据库变得不可访问。 而且,如果用户试图访问损坏的数据库,则可能会遇到一些错误消息。 下面列出了最常遇到的错误消息:  存储所有MDF文件的存储介质中损坏。  如果用户将SQL数据库存储在压缩文件夹中,则MDF文件可能会损坏。  元数据损坏错误。  用户可能意外删除了一些数据。  SQL Server/Msg 825 (读取重试) 中 SQL Server/Msg 824 中的 Msg 823 错误。  除此之外,用户在访问损坏的SQL数据库时可能会遇到其他一些错误消息。 因此,数据库管理员有责任立即采取措施并防止任何类型的数据丢失。  如何通过手动修复MDF文件  有几种手动方法可用于修复损坏的SQL数据库,但手动解决方案不能保证数据库恢复。  为了恢复损坏的数据库,用户可以使用SQL Server的NDF文件(日志文件)。但是, 只有日志文件不足以在大多数损坏情况下还原数据库, 因为有时, 由于严重损坏, 备份文件也会损坏。  修复和恢复损坏的SQL数据库的另一种可能方法是在数据库控制台命令(即DBCC CHECKDB)的帮助下进行的。这对于在 SQL server 数据库中修复小的损坏问题非常有用。  使用DBCC CHECKDB修复损坏的MDF文件的步骤  首先,您需要通过执行以下查询在损坏的SQL数据库上运行DBCC CHECKDB:

    注意:您还可以使用DBCC CHECKDB定义一些选项,如no_infomsgs和infomsgs。  之后,您需要检查索引ID。  情况1:如果索引ID> 1,则将其放下并重新创建。  情况2:如果索引ID为0或1,则再次运行DBCC CHECKDB并使用适当的修复选项,如repair_rebuild,repair_fast或repair_allow_data_loss。  

    现在,为了确保零损坏,执行DBCC CHECKDB并显示一条消息,即DBCC CHECKDB在name_of_your_corrupt_database中显示0个分配错误和0个一致性错误。  如果手动方法失败怎么办?  手动解决方案并不总是一个万无一失的解决方案。 他们可能有一些限制。 例如,在严重损坏的MDF文件的情况下,手动失败很容易。 而且,手动解决方案要求用户在技术上强大。 因此,建议使用一些可靠的第三方软件来修复损坏的SQL数据库。 SQL数据库恢复程序是修复MDF文件中任何类型的损坏问题的最佳实用程序之一。  SQL恢复工具能够修复损坏的SQL数据库文件 - MDF和NDF。 它是一款无风险软件,可恢复存储在其中的所有数据项,如表格,规则,触发器,函数等。除此之外,软件只需几次点击即可修复数据库,而不会浪费任何时间。  从MDF文件修复损坏的SQL数据库的步骤  在本地机器上下载并运行SQL Recovery Program。  

    之后,打开您选择的损坏的SQL数据库文件(.mdf文件)。  

    选择扫描模式,然后单击确定。  

    该工具将提供存储在损坏的MDF文件中的数据项的预览。  

    点击导出保存恢复的数据库。  

    结论  数据库文件对于任何用户都非常重要,因为它们存储大量重要信息。 SQL数据库中的任何类型的损坏问题都可能给用户造成麻烦。 因此,为了克服所有这些问题,我们讨论了手动和专业解决方案来修复损坏的SQL数据库文件。

     更多阅读

    12种最受欢迎的编程语言

    软考网络工程师准备篇(二):上午答题技巧

    软考网络工程师备考篇(一):考前准备

  • ?

    MY SQL数据库密码如何修改

    甘蓝子

    展开

    最简单的方法就是借助第三方工具Navicat for MySQL来修改,方法如下:

    1、登录mysql到指定库,如:登录到test库。

    2、然后点击上方“用户”按钮。

    3、选择要更改的用户名,然后点击上方的“编辑用户”按钮。

    4、出现如图界面,输入新密码,并确认新密码,点击“保存”按钮即可。

    (本文内容由百度知道网友badkano贡献)

  • ?

    SQL数据库用存储过程批量更改某一个字段的值(单表也可以)

    水卉

    展开

    USE [aa] --其中aa是数据库库名

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    --批量替换数据库所有相同字段的值,

    --如果@Table值不为空,则只更新传入表该字段的值

    --用法1:在查询分析器写入如示语句执行批量更改:BatchModify '字段名', '旧值', '新值', ''

    --用法2:在查询分析器写入如示语句执行批量单表更改:BatchModify '字段名', '旧值', '新值', '表名'

    Create Procedure [dbo].[BatchModify](

    @Field nvarchar(40),--要替换值的字段

    @OldValue nvarchar(50),--旧值

    @NewValue nvarchar(50),--新值

    @Table nvarchar(40)--待替换的表名

    ) as

    begin

    --字段、旧值、新值不能为空

    if (@Field <> '') and (@OldValue <> '') and (@NewValue <>'')

    begin

    --传入表名不为空,则更新该表的该字段值

    if @Table <>''

    begin

    Exec('Update ' + @Table + ' Set ' + @Field + ' = ''' + @NewValue +

    ''' Where ' + @Field + ' = ''' + @OldValue + '''')

    Print '更改单个表的字段值成功!'

    end

    else

    begin

    --使用游标进行批量更新

    Declare @TableTemp nvarchar(40)

    --Declare @ID Int

    Declare BatchMod Cursor For

    --找出字段所在表的ID

    Select T.[Name] From SysColumns C Inner Join SysObjects T

    On C.ID = T.ID Where (C.[Name] = @Field) and (T.XType = 'U')

    Open BatchMod

    Fetch Next From BatchMod Into @TableTemp

    While @@FETCH_STATUS = 0

    begin

    --根据表ID找出表名

    --Select @TableTemp = [Name] From SysObjects Where (ID = @ID)

    --执行批量修改

    Exec('Update ' + @TableTemp + ' Set ' + @Field + ' = ''' + @NewValue +

    ''' Where ' + @Field + ' = ''' + @OldValue + '''')

    --循环,抓出下一条

    Fetch Next From BatchMod Into @TableTemp

    end

    --关闭、释放游标

    Close BatchMod

    Deallocate BatchMod

    Print '批量更改数据库中所有表的字段值成功!'

    end

    end

    else

    begin

    Print '字段、旧值或者新值没有输入!请检查!'

    end

    end

sql数据库修改

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP