exists

第四章-DML,DDL和DCL语言

时光怂恿深爱的人放手 提交于 2019-12-28 04:03:01
DML语言 数据的插入 单行插入 insert into table1 (列名) values (列值); insert into table1 (列名) set (列值); 多行插入 inset into table1 (列名) values (列值),(列值); 注: 列名和列值的数量要相同而且一 一对应,不能为null的列都要给值 列名可以隐去,这样相当所有列都赋值,如果可以为null要显性给null值,那么可以使用NULL 对于字符好日期型,值要给单引号,数值则不用 数据的修改 单个表 update table1 set 列名a = 列值a,列名b = 列值b where 条件列式; 多表 (一定要连接条件,不然你的条件列式如果只关于一个表只能限制一个表,那么另一个表可能会成为全表修改,如果用and则表示要两个条件成立,会修改) 其实多表修改,其实就相当于先查询再修改,没有连接条件,就不会产生两个表连接的临时表,那么如果对两个表都有条件则找不到数据,不能修改 update table1 as a,table2 as b set a.列名a=列值a1,a.列名b = 列值a2 where 连接条件 and 条件列式 数据的删除 单个表 delete from table where 条件列式 多表 delete a,b from table1 as a,table2 as b

MySQL exists 和 not exists 的用法

一笑奈何 提交于 2019-12-27 09:20:58
有一个查询如下: 1 SELECT c.CustomerId, c.CompanyName 2 FROM Customers c 3 WHERE EXISTS( 4 SELECT OrderID FROM Orders o 5 WHERE o.CustomerID = c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢? EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。 EXISTS 指定一个子查询,检测行的存在。语法:EXISTS subquery。参数 subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。结果类型为 Boolean,如果子查询包含行,则返回 TRUE。 在子查询中使用 NULL 仍然返回结果集 这个例子在子查询中指定 NULL,并返回结果集,通过使用 EXISTS 仍取值为 TRUE。 1 SELECT CategoryName 2 FROM Categories 3 WHERE EXISTS ( SELECT NULL ) 4 ORDER BY CategoryName

MySQL 中 EXISTS 的用法

痴心易碎 提交于 2019-12-27 07:25:41
在MySQL中 EXISTS 和 IN 的用法有什么关系和区别呢? 假定数据库中有两个表 分别为 表 a 和表 b create table a ( a_id int, a_name varchar(20) ) create table b ( b_id int, b_name varchar(20) ) 那么 select * from a where a_name in (select b_name from b) 这条SQL语句的意义很明显是选取满足where条件下 a 中的所有列的数据 。而where条件就是a_name要是所有b_name的其中的一个。 即 假设 b 中的 b_name 有 {'john','peter','baron'} 这些,而a中的某条数据中的a_name恰好是其中一个,那么这行数据就会被选取出来。 而使用EXISTS: select * from a where exists (select b_id from b where b.b_name=a.a_name) 执行的结果与上面使用 in 返回的结果是一样的。 那么为什么会这样呢,子查询中 返回的列是 b_id ,并没有 name啊。 原因就是exists子句返回的结果并不是从数据库中取出的结果集,而是一个布尔值,如果子句查询到数据,那么返回true,反之返回false。

MySQL中EXISTS的用法

社会主义新天地 提交于 2019-12-27 07:21:41
比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢? EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测 行 的存在。 语法: EXISTS subquery 参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。 结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。 例表A:TableIn 例表B:TableEx (一). 在子查询中使用 NULL 仍然返回结果集 select * from TableIn where exists(select null) 等同于: select * from TableIn (二). 比较使用 EXISTS 和

Mysql表的CRUD

浪子不回头ぞ 提交于 2019-12-27 03:53:15
create database if not exists 库名; create database character if not exists utf8;(避免新建的库名已经存在,设置编码) 修改数据库的字符集 alter database demo character set utf8; 删除数据库 drop database demo 判断再删除 drop database if exists demo; desc 表名字; 查询表结构 create table product( id int, height double(5,2), name varchar(15), ctime date, insert_time timestamp ); *数据类型 1.int id int, 2.double: 小数 long double(3,2) 共3位数,小数点后2位 3.date :日期,只包含年月日 yyyy-MM-dd 4.datetime:年月日时分秒 yyyy-MM-dd HH:mm:ss 5.timestamp:时间戳 年月日时分秒 *如果将来不给这个字段赋值或者赋值为null 则默认使用系统当前时间,来自动赋值 6. varchar:字符串 name varchar(20):最大20个字符 复制表 create table 表名 like 被复制的表;

SQL 语句中 exists和not exists的用法

帅比萌擦擦* 提交于 2019-12-27 01:26:51
exists (sql 返回结果集,为真) not exists (sql 不返回结果集,为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为 1 A1 2 A2 原因可以按照如下分析 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) ---> SELECT * FROM B WHERE B.AID=1有值,返回真,所以有数据 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) ---> SELECT * FROM B WHERE B.AID=2有值,返回真,所以有数据 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) ---> SELECT * FROM B WHERE B.AID=3无值,返回假,所以没有数据 NOT EXISTS 就是反过来

sql中exists,not exists的用法

左心房为你撑大大i 提交于 2019-12-27 01:25:51
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要 exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。 而 exists 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如: select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...) ,in子句返回了三个字段,这是不正确的,exists子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。 而not exists 和not in 分别是exists 和 in 的 对立面。 exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 下面详细描述not exists的过程: 如下: 表A ID NAME 1 A1 2 A2 3

SQL中EXISTS的用法

耗尽温柔 提交于 2019-12-27 01:25:14
比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢? EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测 行 的存在。 语法: EXISTS subquery 参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。 结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。 例表A:TableIn 例表B:TableEx (一). 在子查询中使用 NULL 仍然返回结果集 select * from TableIn where exists(select null) 等同于: select * from TableIn (二). 比较使用 EXISTS 和

fatal: remote origin already exists.报错解决办法!!!

感情迁移 提交于 2019-12-26 08:31:34
在上传本地代码到git仓库时,出现下面这个问题: fatal: remote origin already exists. 原因是已经关联远程仓库 解决办法: 1、删除原来的远程仓库 $ git remote rm origin 2、再次执行添加新的远程仓库 git remote add origin <git地址> 然后beng、beng、beng,就可以啦!!!! 来源: CSDN 作者: 橘子洲头吃橘子 链接: https://blog.csdn.net/weixin_39863895/article/details/103705197

SQL常用判断检测语句

青春壹個敷衍的年華 提交于 2019-12-25 19:00:38
sql -- ---------------------------------------------------------- -- 判断数据库是否存在 IF EXISTS ( SELECT * FROM master..sysdatabases WHERE name = N ' DBName ' ) PRINT ' exists ' ELSE PRINT ' not exists ' -- ---------------------------------------------------------- -- 判断要创建的表名是否存在 IF EXISTS ( SELECT * FROM dbo.sysobjects WHERE id = object_id (N ' [dbo].[TableName] ' ) AND OBJECTPROPERTY (id, N ' IsUserTable ' ) = 1 ) PRINT ' exists ' ELSE PRINT ' not exists ' -- ---------------------------------------------------------- -- 判断要创建临时表是否存在 IF Object_Id ( ' Tempdb.dbo.#TempDBName ' ) IS NOT NULL PRINT '