MySQL中只要是不是sql语句有错误,一般情况下就不会有报错信息出现。所以说,使用下面sql删除时并不会报错
Sql语句:
delete from user where uname = '马保国';
运行结果:
受影响的行: 0
时间: 0.014s
其中用户名中并不存在 马老师,但是执行上边代码并不会报错,但是他会显示执行结果或者影响结果为0条
他只是提示你受影响的行数,不会告诉你到底执行成功没有,SQL是一种声明式的编程方式,除非是语法错误、权限不足、在数据库的层面有锁无法执行,否则都不认为是错误。
解决方法:
在执行delete、update语句的时候先用select方法进行判断表中是否存在要进行操作的数据,避免直接执行找不到错误所在。修改没有报错信息的代码也是一个技术活啊。
create table 表名(表中的列的名称1 字符串类型,名称2 字符串类型,........ );#创建数据库时指定编码格式(国际编码格式 utf8,国内编码格式 gbk),默认编码格式为utf8。alter table 表名 change 要修改的列名 新的列名 字段类型;alter table 表名 add 要添加的列名 字符串类型 first;alter table 表名 add 要添加的列名 字符串类型;#如果指定的数据库不存在时,创建数据库,如果存在,也不会报错。
可以同时删除多个表
Drop table tbl_name1,tbl_name2,…;
如果不存在表而执行删除命令就会报错,为了不让这个报错,可以加上IF EXISTS子句。
Drop table if exists tbl_name;
删除临时表,可以加上tempora
上一期分享的恢复误删除表的方法是,通过新建数据库实例,恢复全量备份,与主库配置同步关系,将日志应用到误删除表之前的位点,完成恢复后,导出表数据,并导入主库。今天分享的场景是,误删除表后,发现主库的实例也刚好挂掉了,那应该怎么恢复呢?将主库的binlog拷贝到新实例,然后构建为新实例的relay log,利用sql_thread应用日志。恢复前提:1.拥有全库备份文件2.拥有全库备份后的所...
create table IF NOT EXISTS user (
id int(11) not null AUTO_INCREMENT,
name char(20) NOT NULL DEFAULT '' comment '用户名',
primary key(id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAU
(1)问题情况在master上删除某个数据表的某一行,而该行在slave上并不存在,则slave上的复制过程会出错。MySQL的log文件中发现如下错误信息:2017-08-15T04:52:19.529509Z 13 [ERROR] Slave SQL for channel ‘‘: Could not execute Delete_rows event on table test.test; ...
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
“SQL” ----是用于访问和处理数据库的标准的计算机语言,简称结构化查询语言
SQL中的删除语句一共有四种,分别对应不同的功能
2. 四种删除语句
delete
delete from table_name where some_column=some_value
用于删除表中的行
delete from table_name/delet
DROP TABLE 语句从数据库中删除一个或多个表。
DROP TABLE [IF EXISTS] [database_name.][schema_name.]table_name;
在上面语法中, 首先, database_name 指定要删除的表的名称。
其次,指定创建表的数据库的名称以及表所属的模式的名称。数据库名称是可选的。 如果不指 定, DROP TABLE 语句将删除当前数据库中的表。
第三,使用 IF EXISTS 子句仅在表存在时才删除表。 自SQL Server 2016 13.x起,