SQL实战新手入门:获取数据-SELECT语句(3)
获取数据 SELECT语句( )
其次 更为重要的是 可以在WHERE子句中使用列名来引用列 WHERE子句的功能是作为一个筛选器 允许用户选择与特定条件相匹配的记录 例如Alex Kriegel编写的所有图书或者那些由Wiley出版社出版的图书 WHERE子句的语法非常直观 看起来就像是英语语句一样
SELECT * FROM myLibrary WHERE publisher = Wiley ;
该查询的结果仅仅列出了PUBLISHER列中存储的值等于Wiley的那些记录 注意 WHERE子句中的Wiley值应该用单引号括起来 以指示数据库要进行比较的是字符数据类型
数据库中可能包含了数百万条记录 WHERE子句可以缩小搜索的范围 筛选出一条特定的记录或者一个与指定筛选标准相匹配的记录的集合 这正是SQL语言作为一种基于集合的声明性语言的强大之处 使用一个类似于英语的简单语句就可以搜索记录并返回一个满足匹配条件的记录的子集 而无须关心数据是如何存储的 甚至无须知道数据存储在什么地方 当在Microsoft Access Oracle PostgreSQL MySQL SQL Server或IBM DB 中运行上面的SELECT语句时 都将返回完全相同的结果
在WHERE子句中 另外一个重要的组成部分就是使用操作符 前面的查询使用了一个等于操作符 用于筛选出那些出版社名称为Wiley的记录 采用类似的办法 使用不等于操作符很容易查询出那些不是Wiley出版社出版的图书
SELECT * FROM myLibrary WHERE publisher <> Wiley ;
使用AND和OR逻辑操作符可以将多个操作符连接在一起 定义一个更为严格的筛选标准 例如 要查找Wiley出版社出版的由Alex Kriegel编写的图书 可以使用下面的查询
SELECT * FROM myLibrary
WHERE publisher = Wiley AND author= Alex Kriegel ;
该查询仅仅返回一条同时满足这两个条件的记录 如果使用OR逻辑操作符来连接这两个条件 则可以返回满足其中任意一个条件的所有记录 而不一定要求两个条件都同时满足 但在布尔逻辑中使用逻辑操作符来定义搜索条件时 应当倍加小心 除非完全理解了逻辑操作符的规则 否则查询结果可能会大大出乎意料
第 章将进一步介绍操作符 以及其在不同数据库厂商之间的语法差异和优先级规则
试一试使用SELECT语句
在下面的练习中 将采用Microsoft SQL Server 数据库环境练习一下SELECT语句的使用 请重复本章第一个 试一试 练习中步骤( )到步骤( )的操作 以便输入并执行SQL命令
( ) 输入下面的SQL语句 将数据插入到MYLIBRARY表中
INSERT INTO myLibrary (title author book_language publisher pages
author publish_date i *** n)VALUES ( SQL Bible Alex Kriegel English
Wiley Boris M Trukhnov April )
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( Microsoft SQL Server Weekend Crash Course Alex Kriegel
English Wiley October )
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( Mindswap Robert Sheckley English Orb Books May
)
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( Jonathan Livingston Seagull Richard Bach English MacMillan
)
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( A Short History of Nearly Everything Bill Bryson
English Broadway October )
( ) 单击位于上方工具栏中的Execute按钮 如之前的图 所示
( ) 在下方窗格的Messages选项卡中 可以看到 条确认信息 ( row(s) affected)
( ) 下面的查询语句将从MYLIBRARY表中选取所有的行和列(由于版面空间的限制 这里省略了这些例子中实际查询结果的显示)
SELECT * FROM myLibrary;
( row(s) affected)
( ) 为了缩小搜索的范围 添加一个WHERE子句
SELECT * FROM myLibrary
WHERE publisher = Wiley ;
( row(s) affected)
返回目录 SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
lishixinzhi/Article/program/SQL/201311/16482