来自 数据库 2020-04-30 11:36 的文章
当前位置: 网上澳门金莎娱乐 > 数据库 > 正文

sql语句之数据操作介绍网上澳门金莎娱乐

一、insert语句

本文章介绍一篇关于sql中IN与EXISTS,NOT IN与NOT EXISTS的详细介绍,有需要了解的同学可以参考一下。

insert用于向表中输入数据,其具体的语法结构如下。

强调下:在含有NULL值的列的时候,就要小心了,not exists与not in在逻辑上是不等价的--先创建2张表

INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列:

代码如下复制代码

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 示例:复制代码 代码如下: insert into country values('美国') 二、update语句

use master;

update语句用于更新表中的数据,其具体的语法结构如下。

if db_id('DbTest') is not null drop database DbTest;

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 示例:复制代码 代码如下: update country set countryname = '中国' where countryid = 4 三、delete语句

create database DbTest;go

delete语句用于删除表中的数据,其具体的语法结构如下。

use DbTest;go

DELETE FROM 表名称 WHERE 列名称 = 值 示例:复制代码 代码如下: delete from country where countryid = 4

--创建Customers表create table Customers( custid INT NOT NULL IDENTITY, companyname NVARCHAR(40) NOT NULL, country NVARCHAR(15) NOT NULL, constraint pk_customer primary key(custid));

--创建Orders表

代码如下复制代码

CREATE TABLE Orders( orderid INT NOT NULL IDENTITY, custid INT NULL, CONSTRAINT PK_Orders PRIMARY KEY(orderid), CONSTRAINT FK_Orders_Customers FOREIGN KEY(custid) REFERENCES Customers(custid),); set identity_insert Customers on;

INSERT INTO Customers(custid, companyname,country) VALUES(1, N'大众', N'中国'); INSERT INTO Customers(custid, companyname,country) VALUES(2, N'宝马', N'美国'); INSERT INTO Customers(custid, companyname,country) VALUES(3, N'奔驰', N'中国'); INSERT INTO Customers(custid, companyname,country) VALUES(4, N'奇瑞', N'德国'); INSERT INTO Customers(custid, companyname,country) VALUES(5, N'福特', N'美国'); set identity_insert Customers off; set identity_insert Orders on;--custid代表员工号 INSERT INTO Orders(orderid, custid) VALUES(1,1); INSERT INTO Orders(orderid, custid) VALUES(2,2); INSERT INTO Orders(orderid, custid) VALUES(3,3); INSERT INTO Orders(orderid, custid) VALUES(4,4); INSERT INTO Orders(orderid, custid) VALUES(5,5);--查看表的数据select custid,companyname,country from Customers;select orderid,custid from Orders;--插入数据成功

网上澳门金莎娱乐,--咱们回到正题,比较Exists与in,not exists与 not in

--查询来自中国,而且下过订单的所有客户

代码如下复制代码 select custid,companynamefrom Customers as Cwhere country=N'中国'and exists (select * from Orders as O where O.custid=C.custid);--返回--custid companyname--1 大众--3 奔驰

--外部查询返回来自中国的客户信息,对于这个客户,exists谓词在Orders表查找是否至少存在一个与外部客户行信息相同的custid订单行

--用IN查询刚刚的需求

代码如下复制代码 select custid,companynamefrom Customers as Cwhere country=N'中国'and custid in(select custid from Orders);

--结果跟上面的返回一样的值

--下面的知识点我们需要认识到:--当列表中有NULL时,in实际会产生一个UNKNOWN的结果,例如 a in(d,b,null)的结果是UNKNOWN,而a not in (d,b,null)返回的是not unknowd仍然是unknowd--而not in与not exists则结果会很不同,例如a in(a,b,null)返回的是TRUE,而a not in(a,b,null)返回的肯定是not true即为false--有了上面的认识,好继续开工了....--我们现在向Orders表插入一行数据

代码如下复制代码

set identity_insert Orders on;

insert into Orders(orderid,custid) values(6,null);

set identity_insert Orders off;

set identity_insert Customers on;

insert into Customers(custid,companyname,country) values(7,N'雷克萨斯',N'美国');

set identity_insert Customers off;

select * from Orders;select * from Customers;

--假设现在要返回来自美国且没有订单的客户

代码如下复制代码 select custid,companynamefrom Customers as Cwhere country=N'美国'and not exists (select * from Orders as O where O.custid=C.custid );--返回--custid companyname--7 雷克萨斯

--我们再用IN方法

代码如下复制代码 select custid,companyname from Customers as Cwhere country=N'美国'and custid not in(select custid from Orders);

本文由网上澳门金莎娱乐发布于数据库,转载请注明出处:sql语句之数据操作介绍网上澳门金莎娱乐

关键词: