delete可以不加from吗,delete from 和delete * from

http://www.itjxue.com  2023-01-14 03:27  来源:未知  点击次数: 

delete * from table where del=1 为什么不正确呀?

您好,很高兴能够为您解答!

* 表示每一列,而delete的时候是整行的所有列一起删除的,不可能只删除某几列;

delete from table where del=1是标准答案

在oracle中,from可以省略,但是在mysql中from不能省略

希望我的回答能够帮到您!

SQL中delete * from 和 delete from 有什么区别?

在SQL Server中两者没有区别,但在Oracle的SQL语句中,delete * from是不标准的语法,执行无法通过。

Oracle下执行delete from语句(成功):

Oracle下执行delete * from语句(失败):

拓展资料

delete 和 delete [] 的真正区别

c++中对new申请的内存的释放方式有delete和delete[]两种方式,到底这两者有什么区别。

1、我们通常从教科书上看到这样的说明:

delete 释放new分配的单个对象指针指向的内存

delete[] 释放new分配的对象数组指针指向的内存

那么,按照教科书的理解,我们看下下面的代码:

int?*a?=?new?int[10];

delete?a;????????//方式1

delete?[]?a;?????//方式2

肯定会有很多人说方式1肯定存在内存泄漏,是这样吗?

(1).针对简单类型 使用new分配后的不管是数组还是非数组形式内存空间用两种方式均可 如:

int?*a?=?new?int[10];

delete?a;

delete?[]?a;

此种情况中的释放效果相同,原因在于:分配简单类型内存时,内存大小已经确定,系统可以记忆并且进行管理,在析构时,系统并不会调用析构函数,

它直接通过指针可以获取实际分配的内存空间,哪怕是一个数组内存空间(在分配过程中 系统会记录分配内存的大小等信息,此信息保存在结构体_CrtMemBlockHeader中,

具体情况可参看VC安装目录下CRTSRCDBGDEL.cpp)

(2).针对类Class,两种方式体现出具体差异

当你通过下列方式分配一个类对象数组:

class?A

{ private:char?*m_cBuffer; int?m_nLen; public:A(){?m_cBuffer?=?new?char[m_nLen];?} ~A()?{?delete?[]?m_cBuffer;?}};A *a?=?new?A[10];

delete?a;?????????//仅释放了a指针指向的全部内存空间 但是只调用了a[0]对象的析构函数 剩下的从a[1]到a[9]这9个用户自行分配的m_cBuffer对应内存空间将不能释放 从而造成内存泄漏

delete?[]?a;??????//调用使用类对象的析构函数释放用户自己分配内存空间并且?? 释放了a指针指向的全部内存空间

所以总结下就是,如果ptr代表一个用new申请的内存返回的内存空间地址,即所谓的指针,那么:

delete ? ptr ? 代表用来释放内存,且只用来释放ptr指向的内存。

delete[] ? rg ? 用来释放rg指向的内存,!!还逐一调用数组中每个对象的destructor!!

对于像int/char/long/int*/struct等等简单数据类型,由于对象没有destructor,所以用delete 和delete [] 是一样的!但是如果是C++对象数组就不同了!

关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。

对于 (1),上面提供的程序已经证明了 delete[] 和 delete 是等同的。但是对于 (2),情况就发生了变化。

我们来看下面的例子,通过例子的学习了解C++中的delete和delete[]的使用方法

#include iostream

using?namespace?std;

/////////class Babe

class?Babe

{public:Babe(){ cout??\"Create?a?Babe?to?talk with?me\"??endl;}~Babe()cout??\"Babe?don\'t?Go?away,listen?to?me\"??endl;} };

//////////main functionint?main(){Babe*?pbabe?=?new?Babe[3];delete?pbabe;pbabe?=?new?Babe[3]; delete?pbabe[];return?0;}

结果是:

Create?a?babe?to?talk with me

Create?a?babe?to?talk with me

Create?a?babe?to?talk with me

Babe?don\'t?go?away,listen?to?me

Create?a?babe?to?talk with me

Create?a?babe?to?talk with me

Create?a?babe?to?talk with me

Babe?don\'t?go?away,listen?to?me

Babe?don\'t?go?away,listen?to?me

Babe?don\'t?go?away,listen?to?me

SQL中,delete与delete from有区别吗?

如果只针对表进行删除,则一样.

但是如果需要联合其他表,则需要使用from

例如

delete tb1 from tb1 m where id in (select id from tb2)

delete做句首要ing吗

不需要。delete做句首不需要要ing形式,delete的用法delete作为及物动词,中文含义为删去删除,是指在文字上用画线的方法以示删去,后面可接介词from。

为何问题补充中的sql语句中delete后面要跟表名呢?基本的mysql语句中delete后面直接from表名不就可以了吗?

95%肯定你是access吧,access独有的现象,原因在于这个表后面的字查询要用到,所以要那样写

(责任编辑:IT教学网)

更多

推荐浏览下载文章