当前位置:首页 » 编程语言 » sql修改错了怎么办
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql修改错了怎么办

发布时间: 2022-11-28 15:42:38

sql执行错误怎么办

  • MySQL软件所提供的权限(mysql.user、mysql.db、mysql.host)
    (1) 系统表mysql.user
    user权限表中字段分为四类: 用户字段、权限字段、安全字段和资源控制字段。

  • 用户字段

  • 用户字段.png

  • 权限字段

  • 权限字段.png

  • 安全字段

  • 安全字段.png

  • # 查看是否支持ssl标准show variables like 'have_openssl';123

  • 资源控制字段

  • 资源控制.png


    系统表mysql.user中的所有资源字段的默认值为0,表示没有任何限制。
    (2) 系统表mysql.db和mysql.host
    在系统数据库mysql中,权限表除了表user外,还有表db和表host,这两张表都存储了某个用户对数据库的权限。

  • 用户字段
    mysql.db表

  • mysql.db表.png

    mysql.host表

    mysql.host表.png

  • 权限字段

  • 权限字段.png


    (3)其他权限表
    在系统数据库mysql中,除了上述权限表外,还有表tables_priv和columns_priv,其中标tables_priv用来实现单个表的权限设置,表columns_priv用来实现单个字段列的权限设置。

  • 系统表mysql.tables_priv表结构

    mysql.tables_priv表结构.png

    mysql.tables_priv表结构.png

  • 系统表mysql.columns_priv的表结构

  • columns_priv的表结构png

  • 用户机制
    (1) 登录和退出MySQL软件的完整命令

  • # 登录mysql -h 127.0.0.1 -u root -p# 退出(q)exit|quit12345

  • (2) 创建普通用户账户

  • 执行CREATE USER语句来创建用户账户

  • create user 'mazaiting'@'localhost' identified by '123456';12

  • 执行INSERT语句来创建用户

  • insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)values('localhost', 'linghaoyu', password('linghaoyu'),'','','');# 使新建用户生效flush privileges;12345

  • 执行GRANT语句来创建用户

  • grant select on company.t_deptto 'wangxingqin'@'localhost' identified by 'wangxingqin';123

  • (3) 利用超级权限用户root修改用户账户密码

  • 修改超级权限用户账户密码

  • # 通过mysqladmin命令修改root用户密码mysqladmin -u root -p password "123456"# 通过SET命令修改密码set password=password("123456");# 更新系统表mysql.user数据记录修改root用户密码update user set password=password("123456")where user="root" and host="localhost";12345678

  • (4) 利用拥有超级权限用户root修改普通用户账户密码

  • # 创建用户grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 通过grant命令修改用户密码grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by '123456';# 通过set命令修改用户密码set password for 'mazaiting'@'localhost'=password("123456");# 更新系统表mysql.user数据记录修改用户密码update user set password=password("mazaiting")where user='mazaiting' and host='localhost';# 登录当前用户,并使用set命令修改密码set password=password("123456");123456789101112131415

  • (5) 删除普通用户账户

  • 通过DROP USER语句删除普通用户

  • drop user 'mazaiting'@'localhost';12

  • 删除系统表mysql.user数据记录实现删除用户账号

  • # 选择mysql数据库use mysql;# 删除用户delete from user where user='mazaiting' and host='localhost';12345

  • 权限管理
    (1) 对用户进行授权

  • # 创建用户grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 查询表数据记录select host,user,password,select_priv,update_priv,grant_priv,drop_privfrom mysql.userwhere user='mazaiting' G12345678910

  • (2) 查看用户所拥有权限

  • show grants for 'mazaiting'@'localhost' G12

  • (3) 收回用户所拥有权限

  • # 回收用户的查询权限revoke select on *.* from 'mazaiting'@'localhost';# 回收用户的全部权限revoke all privileges, grant optionfrom 'mazaiting'@'localhost

② 你好,SQL修改错了,修改前没有备份,请问怎么还原到修改前的数据,你知道吗可以给联系方式我请教一下

哦,god save you, 业务生产库动错的很麻烦啊,你的库的日志模式是完整模式吗full,

以下转载:
DB2中可以使得数据库回复到指定的时间点,SQL Server数据库的Recovery Model为full 或者Bulk 的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact sql语句,恢复数据库的时候会redo这些sql语句。

前提条件:myBBS是数据库test中的一个表,

数据库test的Recovery Model为Full,Auto Close,Auto Shrink两个选项未选中。

数据库test的data files和log files均为默认的自动增长状态。

A:2004/10/13,16:00进行数据库备份,backup database test to disk='d:\db\1600.bak' with init

B:2004/10/14,13:00对数据库进行了update,delete等操作;

C:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。

现在在C点,C点对数据库进行了误操作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。

要恢复数据库B点,使用的是A点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作:

--备分日志:

BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT

--恢复数据库1600.bak,使用WITH NORECOVERY参数:

RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY

--使用日志恢复数据库到10月15日17:59分:

RESTORE LOG test
FROM disk='d:\1820.logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'

上面的三条Transact SQL语句的对应过程:

1.恢复数据库到A点;

2.执行A-B之间的log记录,把数据库恢复到B点.

这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了Auto Shrink.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/davillua/archive/2004/10/16/138999.aspx

③ sql 2005 不小心执行修改事件 怎么恢复

例1:使用时间戳将日志进行时点恢复
使用以前的完全备份恢复数据库,并使其为日志恢复做好准备。

RESTORE DATABASE pubs FROM DISK = N'C:\Backups\Fullbackup.bak' WITH NORECOVERY

现在您可以将日志前滚到合适的时间点,并使数据库可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行。

RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackup.bak' WITH RECOVERY,STOPAT='02/11/2002 17:35:00'

例2:使用数据库标记将日志恢复到预定义时间点的语句
在事务日志中置入一个标记。请注意,被标记的事务至少须提交一个更新,以标记该日志。

BEGIN TRAN MyMark WITH MARK
UPDATE pubs.dbo.LastLogMark SET MarkTime = GETDATE()
COMMIT TRAN MyMark

按照您常用的方法备份事务日志。

BACKUP LOG pubs TO DISK='C:\Backups\Fullbackup.bak' WITH INIT

现在您可以将数据库恢复至日志标记点。首先恢复数据库,并使其为接受日志恢复做好准备。

RESTORE DATABASE pubs FROM DISK=N'C:\Backups\Fullbackup.bak' WITH NORECOVERY

现在将日志恢复至包含该标记的时间点,并使其可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行。

RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackup.bak' WITH RECOVERY,
STOPAT='02/11/2002 17:35:00'

—Microsoft SQL Server 开发团队

④ sql恢复修改前数据

1、首先运行Recovery for SQL Server。

⑤ 今天用SQL SERVER修改了批量21W条数据,突然发现自己改错了,怎样返回上一步

前提条件
--将数据库的恢复模式(Recoverymode)设置为“完整(Full)”
--此操作可以在SQLServerManagementStudio中,选择数据库,鼠标右键,属性后,在选项标签中进行设置。
USE[master]
GO
ALTERDATABASE[test]SETRECOVERYFULLWITHNO_WAIT
GO

--完整备份数据库
backupdatabasetesttodisk='e: est_20130704.dat'
GO
已为数据库'test',文件'Test'(位于文件1上)处理了376页。
已为数据库'test',文件'Test_log'(位于文件1上)处理了3页。
BACKUPDATABASE成功处理了379页,花费1.151秒(2.571MB/秒)。

测试数据.

USE[test]
GO

--创建测试表
CREATETABLEtest_br_table(
IDint,
VALVARCHAR(10),
PRIMARYKEY(ID)
);
GO

INSERTINTOtest_br_tableVALUES(1,'TEST1');
INSERTINTOtest_br_tableVALUES(2,'TEST2');
INSERTINTOtest_br_tableVALUES(3,'TEST3');
GO

SELECTGETDATE()
GO
-----------------------
2013-07-0416:44:12.393
(1行受影响)

--假设误操作,删除所有的数据了.
DELETEFROMtest_br_table
GO
(3行受影响)恢复
USE[master]
GO
--步骤1.备份当前数据库的事务日志:
BACKUPLOG[Test]TOdisk=N'e: est_log'WITHNORECOVERY
GO
已为数据库'Test',文件'Test_log'(位于文件1上)处理了9页。
BACKUPLOG成功处理了9页,花费0.046秒(1.486MB/秒)。

--步骤2.恢复一个误删除之前的完全备份:
RESTOREDATABASE[Test]FROMDISK=N'e: est_20130704.dat'WITHNORECOVERY,REPLACE
GO
已为数据库'Test',文件'Test'(位于文件1上)处理了376页。
已为数据库'Test',文件'Test_log'(位于文件1上)处理了3页。
RESTOREDATABASE成功处理了379页,花费0.828秒(3.574MB/秒)。

--步骤3.将数据库恢复至误删除之前的时间点:
RESTORELOG[Test]FROMDISK=N'e: est_log'WITHSTOPAT=N'2013-07-0416:44:12.393',RECOVERY
GO
已为数据库'Test',文件'Test'(位于文件1上)处理了0页。
已为数据库'Test',文件'Test_log'(位于文件1上)处理了9页。
RESTORELOG成功处理了9页,花费0.013秒(5.258MB/秒)。

核对数据.
use[Test]
GO

SELECT*FROMtest_br_table
GO
IDVAL
---------------------
1TEST1
2TEST2
3TEST3
(3行受影响)

⑥ sql语句错误,怎么改呀

sql="select
top
2
*
from
Procts
where
"&session("sortID")&"=rs("SortPath"))
and
(ID<>"request.QueryString("ID"))"
,最后加个引号

⑦ SQL 语句错误如何修改啊

参考以下方式填写,ORACLE写法跟SQL有点区别的
begin
sys.dbms_job.submit(job => :job,
what => 'PRC_T;',
next_date => to_date('06-05-2015 23:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'TRUNC(sysdate) + 1 + 23/(24)');
commit;
end;

⑧ 在sql数据库,我插入一条数据有误,编号错了,和前面的重复,要怎么修改呢

1.直接去数据库修改。2.如果能够单独查询出来这条记录,就用Update去修改,条件就是你查询时的条件。3。如果不能单独查询出来的,可以新添加个字段,录入信息来区分,update时以新字段来做条件,完了后再删除新字段。

⑨ 请教高手问题啊,我写的一段sql语句,但是有错误,怎么改啊,谢谢啊,在线等

你的Employee表中的 Emp_Id同时是db_room和House两个表的外键,也就是说如果你要删除Employee中的数据,就要先删除db_room和House中与Emp_ID相关的数据,再删除Employee中的,后面的Update也是一样。

如果程序不做修改,你可以在数据库管理器中将FK__House__Emp_Id__014935CB约束的删除和更新都设置为级联。

⑩ 本人不小心将Sqlserver2005某张表中修改了数据,怎么还原

1、找备份文件还原到另一个数据库名,然后导出数据来覆盖或更新。
2、如果没有备份文件只有回忆一下修改的步骤或修改的内容,看不能不返向操作来处理。如果是删除那就无法恢复,
3、建议在修改数据前备份数据库,如果不想备份,可能用 select * into new_table from table 来快速备份。