SQL语句教程 1

发布 2022-09-21 01:33:28 阅读 8292

无论您是一位 sql 的新手,或是一位只是需要对 sql 复习一下的资料仓储业界老将,您就来对地方了。这个 sql 教材**列出常用的 sql 指令,包含以下几个部分:

sql 指令: sql 如何被用来储存、读取、以及处理数据库之中的资料。

**处理: sql 如何被用来处理数据库中的**。

进阶 sql: 介绍 sql 进阶概念,以及如何用 sql 来执行一些较复杂的运算。

sql 语法: 这一页列出所有在这个教材中被提到的 sql 语法。

对于每一个指令,我们将会先列出及解释这个指令的语法,然后用一个例子来让读者了解这个指令是如何被运用的。当您读完了这个**的所有教材后,您将对 sql 的语法会有一个大致上的了解。另外,您将能够正确地运用 sql 来由数据库中获取信息。

笔者本身的经验是,虽然要对 sql 有很透彻的了解并不是一朝一夕可以完成的,可是要对 sql 有个基本的了解并不难。希望在看完这个**后,您也会有同样的想法。

ddfdd是用来做什么的呢?一个最常用的方式是将资料从数据库中的**内选出。从这一句回答中,我们马上可以看到两个关键字:

从 (from) 数据库中的**内选出 (select)。(**是一个数据库内的结构,它的目的是储存资料。在**处理这一部分中,我们会提到如何使用 sql 来设定**。

) 我们由这里可以看到最基本的 sql 架构:

select "栏位名" from "**名"

我们用以下的例子来看看实际上是怎么用的。假设我们有以下这个**:

若要选出所有的店名 (store_name),我们就打入:

select store_name from store_information

结果:我们一次可以读取好几个栏位,也可以同时由好几个**中选资料。

select 指令让我们能够读取**中一个或数个栏位的所有资料。这将把所有的资料都抓出,无论资料值有无重复。在资料处理中,我们会经常碰到需要找出**内的不同资料值的情况。

换句话说,我们需要知道这个**/栏位内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在 sql 中,这是很容易做到的。

我们只要在 select 后加上一个 distinct 就可以了。distinct 的语法如下:

select distinct "栏位名"

from "**名"

举例来说,若要在以下的**,store_information,找出所有不同的店名时,

store_information **。

我们就键入,select distinct store_name from store_information

结果: store_name

los angeles

san diego

boston

我们并不一定每一次都要将**内的资料都完全抓出。在许多时候,我们会需要选择性地抓资料。就我们的例子来说,我们可能只要抓出营业额超过 $1,000 的资料。

要做到这一点,我们就需要用到 where 这个指令。这个指令的语法如下:

select "栏位名"

from "**名"

where "条件"

若我们要由以下的**抓出营业额超过 $1,000 的资料,

store_information **。

我们就键入,select store_name

from store_information

where sales > 1000

结果: store_name

los angeles

在上一页中,我们看到 where 指令可以被用来由**中有条件地选取资料。 这个条件可能是简单的 (像上一页的例子),也可能是复杂的。复杂条件是由二或多个简单条件透过 and 或是 or 的连接而成。

一个 sql 语句中可以有无限多个简单条件的存在。

复杂条件的语法如下:

select "栏位名"

from "**名"

where "简单条件"

[and|or] "简单条件"}+

}+ 代表{}之内的情况会发生一或多次。在这里的意思就是 and 加简单条件及 or 加简单条件的情况可以发生一或多次。另外,我们可以用 ()来代表条件的先后次序。

举例来说,我们若要在 store_information **中选出所有 sales 高于 $1,000 或是 sales 在 $500 及 $275 之间的资料的话,

store_information **。

我们就键入,select store_name

from store_information

where sales > 1000

or (sales < 500 and sales > 275)

结果: store_name

los angeles

san francisco

在 sql 中,在两个情况下会用到 in 这个指令;这一页将介绍其中之一:与 where 有关的那一个情况。在这个用法下,我们事先已知道至少一个我们需要的值,而我们将这些知道的值都放入 in 这个子句。

in 指令的语法为下:

select "栏位名"

from "**名"

where "栏位名" in ('值一', 值二',

在括号内可以有一或多个值,而不同值之间由逗点分开。值可以是数目或是文字。若在括号内只有一个值,那这个子句就等于

where "栏位名" =值一'

举例来说,若我们要在 store_information **中找出所有含盖 los angeles 或 san diego 的资料,

store_information **。

我们就键入,select *

from store_information

where store_name in ('los angeles', san diego')

结果: in 这个指令可以让我们依照一或数个不连续 (discrete) 的值的限制之内抓出资料库中的值,而 between 则是让我们可以运用一个范围 (range) 内抓出资料库中的值。between 这个子句的语法如下:

select "栏位名"

from "**名"

where "栏位名" between '值一' and '值二'

这将选出栏位值包含在值一及值二之间的每一笔资料。

举例来说,若我们要由 store_information **中找出所有介于 january 6, 1999 及 january 10, 1999 中的资料,

store_information **。

我们就键入,select *

from store_information

where date between 'jan-06-1999' and 'jan-10-1999'

请读者注意:在不同的数据库中,日期的储存法可能会有所不同。在这里我们选择了其中一种储存法。

结果: like 是另一个在 where 子句中会用到的指令。基本上, like 能让我们依据一个模式 (pattern) 来找出我们要的资料。

相对来说,在运用 in 的时候,我们完全地知道我们需要的条件;在运用 between 的时候,我们则是列出一个范围。 like 的语法如下:

select "栏位名"

from "**名"

where "栏位名" like

模式} 经常包括野卡 (wildcard). 以下是几个例子:

a_z': 所有以 'a' 起头,另一个任何值的字原,且以 'z' 为结尾的字符串。 'abz' 和 'a2z' 都符合这一个模式,而 'akkz' 并不符合 (因为在 a 和 z 之间有两个字原,而不是一个字原)。

SQL语句 1

根据要求,写出完整的select sql命令 注意 各题中所涉及的数据表均与书本一致 1.显示学生表中学号以 04 开头的学生情况。select from xs where 2 查询cj表中每门课的课程代号和最高分。select as 最高分 from cj group by 3 显示成绩表中及格的...

SQL语句 1

在student数据库中新建三个表 学生 学号,姓名,专业,性别 课程 课程编号,课程名称,教师 成绩 学号,姓名,课程名称,成绩 1.查询成绩表中选修 数据库 课程学生成绩。select from 成绩 where 课程名称 数据库 1 查询选修 数据库 课程学生成绩中最高分 最低分 平均分。se...

SQL教程

sql 是用于访问和处理数据库的标准的计算机语言。什么是 sql?sql 指结构化查询语言 sql 使我们有能力访问数据库 sql 是一种 ansi 的标准计算机语言 编者注 ansi,美国国家标准化组织。sql 能做什么?sql 面向数据库执行查询 sql 可从数据库取回数据 sql 可在数据库中...