第2章  SQL中的数据类型和运算符

第2章  SQL中的数据类型和运算符

SQL支持的数据类型主要包括预定义的数据类型和用户自定义的数据类型。其中,SQL预定义的数据类型主要包括数值类型、字符串类型、日期类型和布尔值等数据类型。本章将讲解一下SQL数据类型和运算符方面的相关内容。

2.1 数值类型 

数值型数据类型主要用于存储数据信息。所有的数值数据类型都有精度,有些数据类型还有范围。精度是指可以存储数字的数据,范围是指该值的小数部分的数字的数目。多数据库管理系统支持多种类型的数字型数据,不同的类型支持不同的数字形式与数字范围。

1 存储4个字节的整数类型—INTEGER

INTEGER数据类型又称为INT,该数据类型具有4比特的整数,其数值范围为-2147483648至2147483647。

2 存储2个字节的整数类型—SMALLINT

SMALLINT数据类型是具有2个比特的整数,该数据类型的取值范围为-32768至32767。

3 小数类型-- NUMBER

Number数据类型可存放实型和整型。如果形式为Number(size),则表明最大数字的位数由括号中的参数size设置;如果形式为Number(size,d),则表明最大数字的位数由括号中的参数size设定,而括号中的参数d是设置小数点的位数。

注意:不同的数据库管理系统所支持的数据类型不尽相同。如在SQL Server中,Number数据类型被写成Decimal或Numeric。

4 单精度浮点数—REAL

REAL数据类型是4比特的浮点数,可以指定精度,但没有范围。

5 浮点数—FLOAT

PLOAT数据类型可精确到第15位小数,每个Float类型的数据占用8个字节的存储空间,可以指定精度,而不指定范围。

6 BIT数据类型

BIT数据类型是单比特数据,只能取值为“0”或“1”。如果输入0或1以外的值将被视为1。BIT数据类型不能定义为NUlL值。

当处理那种只有两个值的数据时,可使用BIT数据类型。如,可使用BIT字段来存储Yes/No或者Ture/Fasle调查问题的答案。按照通常的约定,在BIT中的1表示True,0表示Fasle。

2.2 字符串类型

字符型数据是最常用的数据类型之一。例如,经常用到的通信录中的姓名、性别、地址和籍贯等字段都是字符类型。字符型变量可分为固定长度和可变长度字符两种。固定长度型字符变量的字符数在数据表创建的时候就指定了,并分配了存储空间。如指定通信录表姓名的字符数为10,那么如果用户输入姓名的字符数超过10,那么数据库只记录前10个字符;如果输入的字符数少于10,则数据库会自动在字符右边以空格填补到10个字符。

可变长度字符串可以存储任意长度的字符(其最大存储长度取决于采用的数据类型和数据库管理系统),它不需要预先指定存储长度,而是根据用户的输入动态地分配存锗空间。

2.2.1 可变长度的字符串类型—VARCHAR、TEXT

VARCHAR、NTEXT和TEXT数据类型都是可变长度的字符串类型,其中VARCHAR字符串数据类型具有一个参数size,并且该数据类型的最大长度由size参数来设定。TEXT数据类型用于存储大量文本数据,其容量理论上为1~231-1(2147483 647)个字节,但实际应用时要根据硬盘的存储空间而定。

2.2.2 固定长度的字符串类型—CHAR

CHAR是固定长度的字符串类型,长度为n个字节,n的取值范围为不超过255个字节。

例如:

C_Name CHAR(8)

如果C_Name实际上只有4个字符,那么其余4个字符将是空格。

2.3 日期类型

日期类型用于存储不同精度和范围的时间和日期数据,用于表示某天的日期和时间。在SQL中,datetime和smalldatetime是最常见的两种日期数据类型,下面就分别讲解一下这两种日期数据类型。

datetime数据类型所占用的存储空间为8个字节。其中第一个4字节存储“基础日期”(即1900年1月1日)之前或之后的天数;另外一个4字节存储日期的时间(以午夜后经过的毫秒数表示)。如果在输入数据时省略了时间部分,则系统将12:00:00:000AM作为时间默认值;如果省略了日期部分,则系统将1900年1月1日作为日期默认值。

smalldatetime值是存储为4字节的整数。第一个2字节存储1900年1月1日后的天数;另外一个2字节存储午夜后经过的分钟数。

1.日期输入格式

日期的输入格式可分为“英文+数字格式”、“数字+分隔符格式”和“纯数字格式”三种。

(1)英文+数字格式:此类格式中,月份可用英文全名或缩写,且不区分大小写;年和月日之间可不用逗号;年份可为4位或2位,当其为2位时,若值小于50,则视为20xx年,若大于或等于50,则视为19xx年;若日部分省略,则视为当月的1号。以下格式均为正确的日期格式:

June 18 2010     Oct 1 2001       January 2010         2011 February

(2)数字+分隔符格式:允许把斜杠(/)、连接符(-)和小数点(.)作为用数字表示的年、月、日之间的分隔符。格式如下所示。

YMD :   2012/1/22    2012-1-22    2012.1.22

MDY :   3/5/2010     3-5-2010     3.5.2010

DMY :   31/12/2011   31-12-2011   31.12.2011

(3)纯数字格式:纯数字格式是以连续的4位、6位或8位数字来表示日期。如果输入的是6位或8位数字,系统将按年、月、日来识别,即YMD格式,并且月和日都是用两位数字来表示;如果输入的数字是4位数,系统认为这4位数代表年份,其月份和日默认为此年度的1月1日。格式如下所示。

20110612——2011年6月12日

971218——1997年12月18日

2.时间输入格式

在输入时间时,必须按“小时、分钟、秒、毫秒”的顺序来输入。在其间用冒号“:”隔开,毫秒部分可以用小数点“.”分隔,其后第一位数字代表十分之一秒,第二位数字代表百分之一秒,第三位数字代表千分之一秒。

当使用12小时制时,用AM(am)和PM(pm)分别指定时间是午前或午后,若不指定,系统默认为AM。AM与PM均不区分大小写,格式如下所示。

8:7:20.2pm——下午8时7分20秒200毫秒

2.4 大对象数据类型—BLOB

BLOB 是“binary large object”的简称,中文意思为“二进制大对象”,是一个可以存储二进制文件的容器。 在计算机中,BLOB数据类型常常用来存储二进制文件。

BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸很大,因此必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库中),在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB数据类型的典型例子。

注意:在使用BLOB数据类型时可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。

在MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的区别是存储文件的大小不同。

下面是MySQL的四种BLOB类型:

(1)TinyBlob数据类型,最大255K。

(2)Blob数据类型,最大65K。

(3)MediumBlob数据类型,最大16M。

(4)LongBlob数据类型,最大可达4G。

2.6 布尔值—BOOLEAN

Boolean数据类型的缺省值为 False,如果变量的值只是“true/false”、“yes/no”或“on/off”信息,则可将它声明为Boolean 类型。

boolean 数据类型存储为16位(2 个字节)的数值形式,该数据类型只能是True或者False。使用关键字True与False可将boolean变量赋值为True与False状态中的一个。在java中boolean值只能是true和false,而不能用0和1代替,并且一定要小写。

2.7 自定义数据类型

前面讲解了几种常见的数据类型。除此之外,用户还可以用自定义的数据类型来定义表的列或声明变量。用户定义的数据类型基于在Microsoft SQL Server中提供的数据类型。当几个表中必须存储同一种数据类型,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户自定义的数据类型。

1.创建用户自定义数据类型

在SQL SERVER中,创建用户定义的数据类型可以使用CREATE TYPE语句,或者系统存储过程sp_addtype。当创建用户定义的数据类型时,必须提供数据类型的名称、所基于的系统数据类型和数据类型是否为空。

【语法说明】

CREATE TYPE语句的语法格式如下所示。

CREATE TYPE type_name

FROM base_type [ ( precision [ , scale ] ) ] [ NULL | NOT NULL ]

sp_addtype存储过程的语法如下所示。

sp_addtype {type},[,system_data_bype][,'null_type']

其中,type是用户定义的数据类型的名称。system_data_type是系统提供的数据类型。 null_type表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'。

【上机实战】

创建一个用户定义的数据类型Email,其基于的系统数据类型是变长为30的字符,不允许为空,其实现的代码如下所示。

USE Library

GO

sp_addtype Email,'varchar(30)','NOT NULL'

GO

运行代码后,即创建了用户定义的数据类型Email。

2.删除用户自定义数据类型

当用户定义的数据类型不需要时,可以将其删除。

【语法说明】

在SQL SERVER中,删除用户定义的数据类型的命令如下所示。

sp_droptype {'type'}

【上机实战】

删除创建的用户定义数据类型Email,其实现的代码如下所示。

USE Library

GO

sp_droptype 'Email'

GO

2.8 运算符

在SQL语句中,可以运用各种运算符和函数直接对查询列的数据进行一些处理,将处理后的结果显示给用户。本节中将讲解一下,在SQL语句中一些常用运算符的使用方法。

2.8.1 算术运算符

算术运算符也称为数学运算符,在SQL中,数学运算符有以下几种。

(1)“+”运算符:表示数值相加运算。

(2)“-”运算符:表示数值相减运算。

(3)“*”运算符:表示数值相乘运算。

(4)“/”运算符:表示除运算。

在使用这些运算符的时候,应该注意各运算符之间的优先级关系,一般情况下,这些运算符的优先级顺序与在算术运算中的优先级顺序基本相同。

下面通过几个实际操作来讲解算术运算符的使用方法。

1.使用加法运算符“+”

【上机实战】

从销售信息表(t_sale)中查询货物名称(s_title)、销售单价(s_value)、运费(s_trans)以及销售单价和运费的合计信息。其中销售单价和运费的合计为销售单价(s_value)与运费(s_trans)的和,其实现的代码如下所示。

select s_title,s_value,s_trans,s_value+s_trans as all_values

from t_sale

代码执行以后,运行结果如图2.1所示。

图2.1  使用“+”运算符

从图中可以看出,货物的实际销售收入是由货物的销售单价(s_value)与运费(s_trans)的和得出来的。

说明:ALL_VALUES是销售单价(s_value)与运费(s_trans)的和所得出的别名。

2.使用乘法运算符“*”

【上机实战】

从销售信息表(t_sale)中查询货物名称(s_title)、销售单价(s_value)、销售数量(S_NUMS)以及货物总价信息。

select S_TITLE,S_VALUE,S_NUMS,S_VALUE*S_NUMS AS ALL_VALUES

from t_sale

代码执行以后,运行结果如图2.2所示。

图2.2  使用“*”运算符

从图中可以看出,货物总价(ALL_VALUES )是由销售数量(S_ NUMS)和销售单价(s_value)的乘积得出来的。可见,通过这种随时创建数据表中字段的方法可以节省数据库的存储空间。

3.除法运算符“/”

【上机实战】

从销售信息表(t_sale)中统计所有销售货物的平均运费。

select sum(s_trans)/ sum(s_nums) as avg_trans

from t_sale

代码执行以后,运行结果如图2.3所示。

图2.3  计算销售货物的平均运费

从图中可以看出,销售货物的平均运费是由销售商品的运费合计金额除以销售货物的总数量得出的。

4.数学运算符的组合使用

可以将前面讲解的数学运算符组合在一起使用,从而得到某些复杂的计算结果。下面的代码演示的是从销售信息表(t_sale)中查询货物名称(gName)和销售获取总金额(s_value与s_trans之和再乘以s_nums)信息。

select s_title,(s_value+s_trans)*s_nums

from t_sale

代码执行以后,运行结果如图2.4所示。

图2.4  数学运算符的组合使用

2.8.2 逻辑运算符

逻辑运算符包括逻辑与(AND)运算符和逻辑或(OR)运算符两种。本节中将讲解这两种运算符的相关知识。

1  逻辑与运算符

逻辑与(AND)运算符表示的是查询在表达式中即符合条件1又符合条件2数据。

【语法说明】

逻辑与运算符的语法结构如下所示。

SELECT column1,column2,…,column

FROM table_name

WHERE condition1 AND condition2

语句中,condition1与condition2表示两个查询条件。只有同时满足这两个查询条件,才能够查询出符合条件的记录。如果不同时满足这两个查询条件,则查询的结果将为空(NULL)值。

说明:AND运算符也可以连接两个以上的查询条件。如condition1 AND condition2 AND condition3,此时需要同时满足3个查询条件。

【上机实战】

在销售信息表(t_sale)中查询供应商(S_SUPPLIER)是“HS公司”并且运输费用(S_TRANS)小于10的销售货物信息。为了便于读者进行学习比较,这里将销售信息表(t_sale)中的现有数据信息显示出来。

SELECT * FROM T_SALE

语句执行结果如图2.5所示。

图2.5  显示t_sale数据表中的记录信息

使用逻辑与(AND)运算符查询数据的代码如下所示。

SELECT * FROM T_SALE

WHERE S_SUPPLIER='HS公司' AND S_TRANS<=10

代码执行以后,结果如图2.6所示。

图2.6  使用AND运算符实现条件查询

从图中可以看出,查询的数据结果即符合供应商(S_SUPPLIER)是“HS公司”又符合运输费用(S_TRANS)小于10的查询条件。

在一个WHERE子句中,可以同时使用多个AND运算符连接多个查询条件。此时,必须满足所有的查询条件记录,才能够查询出所需要的数据信息。

下面的代码演示的是,在销售信息表(t_sale)中查询供应商(S_SUPPLIER)是“HS公司”、运输费用(S_TRANS)小于10并且销售货物名称(s_title)包含“HP”字符的销售货物信息。

select * from t_sale

where s_supplier='HS公司'

and s_trans <=10

and s_title like '%HP%'

代码执行以后,结果如图2.7所示。

图2.7  使用多个AND运算符实现条件查询

注意:只有当3个查询条件都符合时,查询出的数据才不会是空(NULL)值。如果有多个查询条件,要多个查询条件都符合,否则查询出的数据将是空(NULL)值。但是,在使用了3个以上的AND运算符组成查询条件查询数据时,在分析查询结果时会比较的麻烦,既很难分析其查询结果。

2  逻辑或运算符

逻辑或(OR)运算符表示的是在表达式中查询符合条件1或者符合条件2的数据。

【语法说明】

逻辑或运算符的语法结构如下所示。

SELECT column1,column2,…,column

FROM table_name

WHERE condition1 OR condition2

语句中,condition1与condition2表示两个查询条件。只要满足这两个查询条件中的其中一个条件,就能够查询出符合条件的记录。如果同时两个查询条件都不满足,则查询的结果为空(NULL)值。

说明:与AND运算符一样,OR运算符也可以连接两个以上的查询条件。如condition1 OR condition2 OR condition3,此时也只是满足一个查询条件即可。

【上机实战】

在销售信息表(t_sale)中查询供应商(S_SUPPLIER)是“HS公司”或者运输费用(S_TRANS)小于10的销售货物信息。为了便于读者进行学习比较,这里将销售信息表(t_sale)中的现有数据信息显示出来。

SELECT * FROM T_SALE

语句执行结果如图2.5所示。

使用逻辑或(OR)运算符查询数据的代码如下所示。

SELECT * FROM T_SALE

WHERE S_SUPPLIER='HS公司' OR S_TRANS<=10

代码执行以后,结果如图2.8所示。

图2.8  使用OR运算符实现条件查询

从图中可以看出,查询的数据结果符合供应商(S_SUPPLIER)是“HS公司”或者运输费用(S_TRANS)小于10的查询条件。

注意:从上面的查询结果中可以看出,只要满足其中任何一种查询条件,就会将查询结果显示出来,这一点与AND运算符有很大的区别。

与AND运算符一样,OR运算符也可以同时使用多个查询条件。此时,只要满足其中任何一个查询条件,就能够查询出符合条件的数据信息。

下面的代码演示的是,在销售信息表(t_sale)中查询供应商(S_SUPPLIER)是“HS公司”、或者运输费用(S_TRANS)小于10、或者销售货物名称(s_title)包含“HP”字符的销售货物信息。

select * from t_sale

where s_supplier='HS公司'

or s_trans <=10

or s_title like '%HP%'

代码执行以后,结果如图2.9所示。

图2.9  使用多个OR运算符实现条件查询

从图中可以看出,只要满足3个查询条件中的任何一个查询条件即可。

注意:当3个查询条件只要有一个条件符合时,查询出的数据就不会是空值。如果有多个查询条件,多个查询条件中只要有一个符合,查询出的数据就不会是空(NULL)值。

3  逻辑运算符的组合使用

逻辑与(AND)运算符与逻辑或(OR)运算符除了可以单独使用之外,还可以组合在一起进行使用。但是,在将其组合在一起使用时,会涉及到运算符的优先级问题。与其他语言一样,在SQL中,逻辑与(AND)运算符的优先级要高于逻辑或(OR)运算符。

【语法说明】

逻辑与(AND)运算符与逻辑或(OR)运算符组合在一起使用时的语法结构如下所示。

SELECT column1,column2,…,column

FROM table_name

WHERE condition1 OR condition2 AND condition3

由于优先级的关系,上述语句中应该先执行AND运算符,即先执行condition2 AND condition3查询条件,然后再将condition1与condition2 AND condition3的结果进行逻辑或(OR)运算。因此上述的语句也可以写成如下的形式。

SELECT column1,column2,…,column

FROM table_name

WHERE condition1 OR (condition2 AND condition3)

注意:括号()的优先级要高于AND运算符和OR运算符的优先级。在将AND运算符与OR运算符进行组合使用时,建议用户采用括号()来实现需要的执行顺序,这样可以增强程序的可读性。

【上机实战】

在销售信息表(t_sale)中查询供应商(S_SUPPLIER)是“HS公司”并且运输费用(S_TRANS)小于10、或者销售货物名称(s_title)包含“HP”字符的销售货物信息。

select * from t_sale

where s_supplier='HS公司'

and s_trans <=10

or s_title like '%HP%'

代码执行以后,结果如图2.10所示。

图2.10  运算符AND、OR的组合使用

可以将多个AND和OR运算符组合在一起进行组合查询。

下面的代码演示的是,在销售信息表(t_sale)中查询供应商(S_SUPPLIER)是“HS公司”并且运输费用(S_TRANS)小于10、或者销售货物名称(s_title)包含“HP”字符并且销售单价(s_value)大于3000的销售货物信息。

select * from t_sale

where (s_supplier='HS公司'

and s_trans <=10)

or (s_title like '%HP%'

and s_value >3000)

代码执行以后,结果如图2.11所示。

图2.11  多个AND、OR运算符的组合使用

使用组合后的运算符查询出的结果会很复杂,读者在学习时要根据自己所定义的查询条件进行仔细地分析。因为AND与OR运算符如果组合不合理,将失去查询的意义。

2.8.4 NOT运算符

NOT运算符通常情况下可以与其他运算符联合使用。如前面讲解的NOT IN运算符实际上就是将NOT运算符与IN运算符联合在一起使用。NOT运算符也可以单独的使用,在单独使用的情况下表示取查询条件的相反值。

【上机实战】

通过NOT运算符从销售信息表(t_sale)中查询供应商(S_SUPPLIER)除了 “今日科技”以外的销售货物信息。为了便于理解,现将销售信息表(t_sale)中的现有的数据信息显示出来。

select * from t_sale

代码执行以后,运行结果如图2.12所示。

图2.12  销售信息表(t_sale)中的数据信息

使用not运算符查询数据信息的代码如下所示。

select * from t_sale

where not s_supplier ='今日科技'

代码执行以后,运行结果如图2.13所示。

图2.13  NOT运算符取反查询

分析上面的代码可知,在WHERE子句中首先查询所有供应商为“今日科技”的销售货物信息,然后在通过NOT运算符取反,所以最后的查询条件实际上是查询所有除供应商“今日科技”以外所有的销售货物信息。

下面的代码是从销售信息表(t_sale)中查询销售单价(s_value)不大于500的销售货物信息。

select * from t_sale

where not s_value >500

代码执行以后,运行结果如图2.14所示。

图2.14  使用NOT运算符实现查询

从上面的代码可以看出,在WHERE子句中首先查询所有销售单价大于500的销售货物信息,然后在通过NOT运算符取反,所以最后的查询条件实际上是查询所有销售单价小于等于(<=)500的销售货物信息。

然而,需要注意的一点是,NULL值取反以后,其结果仍然是NULL。请看下面的代码。

在销售信息表(t_sale)中查询供应商(S_SUPPLIER)字段值为NULL情况下取反的销售货物信息。

select * from t_sale

where not s_supplier is null

代码执行以后,运行结果如图2.15所示。

图2.15  NULL的取反

从图中的查询结果发现,供应商(S_SUPPLIER)为NULL的记录并不包含在结果当中。当S_SUPPLIER为NULL时,NOT NULL的含义是查询所有数据信息。所以示例中的代码实际上是查询销售信息表(t_sale)中所有的数据信息,即上述示例中的代码也可以写成下面的形式。

select * from t_sale

下面再看一个与NULL取反相关的示例。

通过NOT运算符在销售信息表(t_sale)中查询供应商(s_supplier)为“HS公司”的销售货物信息。

select * from t_sale

where not s_supplier <>'HS公司'

代码执行以后,运行结果如图2.16所示。

图2.16  NOT运算符取反查询

分析示例中的代码可知,在WHERE子句中首先查询供应商不是“HS公司”的销售货物信息,然后在通过NOT运算符取反,所以最后的查询条件实际上是查询供应商为 “HS公司”的销售货物信息。

2.8.5 IN的使用

在SQL查询中,如果只需要满足多个条件中的一个条件,可以使用IN运算符。

【语法说明】

IN运算符的语法格式如下所示。

SELECT column

FROM table_name

WHERE column IN(vaule_list)

上述语句中,vaule_list表示与查询相匹配的字符值。

【上机实战】

查询图书信息表(T_BOOKINFO)中的图书编号(B_ID)、图书名称(B_NAME)、出版社名称(B_PUBLISH)、出版日期(B_DATE)、作者(B_AUTHOR)和图书价格(B_VALUE)字段,并且作者是“李俊民”的图书信息。

SELECT B_ID,B_NAME,B_PUBLISH,B_DATE,B_AUTHOR,B_VALUE

FROM T_BOOKINFO

WHERE B_AUTHOR IN('李俊民')

代码执行以后,其执行结果如图,2.17所示。

图2.17  使用IN语句查询数据

使用IN运算符还可以同时查询多个条件的数据信息。

下面的代码演示的是,查询图书信息表(T_BOOKINFO)中的图书编号(B_ID)、图书名称(B_NAME)、出版社名称(B_PUBLISH)、出版日期(B_DATE)、作者(B_AUTHOR)和图书价格(B_VALUE)字段,并且作者是“李俊民”或者是“李红”的图书信息。

SELECT B_ID,B_NAME,B_PUBLISH,B_DATE,B_AUTHOR,B_VALUE

FROM T_BOOKINFO

WHERE B_AUTHOR IN('李俊民','李红')

代码执行以后,其执行结果如图2.18所示。

图2.18  使用IN运算符查询数据

从图中可以看出,作者为“李俊民”和“李红”的图书信息全部被查询出来。

2.8.6 NOT IN运算符

在SQL中,NOT IN运算符与IN运算符相对应。其判别结果与IN运算符相反。

【语法说明】

NOT IN运算符的语法格式如下所示。

SELECT column

FROM table_name

WHERE column NOT IN(vaule_list)

语句中,vaule_list表示与查询相匹配的字符值。下面通过一个示例来演示NOT IN运算符的用法。

【上机实战】

查询图书信息表(T_BOOKINFO)中的图书编号(B_ID)、图书名称(B_NAME)、出版社名称(B_PUBLISH)、出版日期(B_DATE)、作者(B_AUTHOR)和图书价格(B_VALUE)字段,并且显示除了“人民邮电出版社”以外所有的图书信息。

SELECT B_ID,B_NAME,B_PUBLISH,B_DATE,B_AUTHOR,B_VALUE

FROM T_BOOKINFO

WHERE B_PUBLISH NOT IN('人民邮电出版社')

代码执行以后,其执行结果如图2.19所示。

图2.19  使用NOT IN运算符查询数据

与IN运算符一样,使用NOT IN运算符也可以同时查询多个条件的数据信息。

下面的代码演示的是,查询图书信息表(T_BOOKINFO)中的图书编号(B_ID)、图书名称(B_NAME)、出版社名称(B_PUBLISH)、出版日期(B_DATE)、作者(B_AUTHOR)和图书价格(B_VALUE)字段,并且显示除了“人民邮电出版社”和“远方出版社”以外所有的图书信息。

SELECT B_ID,B_NAME,B_PUBLISH,B_DATE,B_AUTHOR,B_VALUE

FROM T_BOOKINFO

WHERE B_PUBLISH NOT IN('人民邮电出版社','远方出版社')

代码执行以后,其执行结果如图,2.20所示。

图2.20  使用NOT IN运算符查询数据

 

注:文中字段大小写需根据表中要求创建!当然!习惯上一般都是用小写!



——文章收藏的!分享出去!若侵犯请联系删除


 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值