SQL基本数据操作语句_第1页
SQL基本数据操作语句_第2页
SQL基本数据操作语句_第3页
SQL基本数据操作语句_第4页
SQL基本数据操作语句_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

掌握SQL四条最基本的数据操作语句:Insert,Select,Update和

Deleteo

在我们开始之前,先使用CREATETABLE语句来仓”建一个表。

SQL中有四种基本的DMLW:INSERT,SELECT,UPDATE

和DELETEo由于这是大多数SQL用户时常用到的,我们有必要在

此对它们进行一一说明。在图1中我们给出了一个名为

EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟

悉这张表,我们在后面的例子中将要用到它。

INSERT语句

用户可以用INSERT语句将一行记录插入到指定的一个表中。

例如,要将雇员JohnSmith的记录插入到本例的表中,可以使用如

下语句:

INSERTINTOEMPLOYEESVALUES

('Smith','John','1980-06-10\

LosAngles1,16,45000);

通过这样的INSERT语句,系统将试着将这些值填入到相应的

列中。这些列按照我们创建表时定义的顺序罗列。在本例中,第一个

值“Smith”将填到第一个列LAST_NAME中:第二个值“John”将填

到第二列FIRSTNAME中……以此类推。

我们说过系统会“试着”将值填入,除了执行规则之外它还要进行

类型检查。如果类型不符(如将一个字符串填入到类型为数字的列

中),系统将拒绝这一次操作并返回一个错误信息。

如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不

会填入。

回到原来的INSERT的例子,请注意所有的整形十进制数都不

需要用单引号引起来,而字符串和日期类型的值都要用单引号来区

别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在

SQL中逗号是元素的分隔符。

既然你已经理解了INSERT语句是怎样工作的了,让我们转到

EMPLOYEES表中的其他部份:

INSERTINTOEMPLOYEESVALUES

(,Bunyan7Paul71970-07-041,

'Boston,,12,70000);

INSERTINTOEMPLOYEESVALUES

(,John7Adams,;1992-01-21

Boston,,20,100000);

INSERTINTOEMPLOYEESVALUES

fSmith*/Pocahontas','1976-04-061,

'LosAngles,,12,100000);

INSERTINTOEMPLOYEESVALUES

('Smith','Bessie','1940-05-021,

'Boston',5,200000);

INSERTINTOEMPLOYEESVALUES

('Jones','Davy','1970-10-1O',

'Boston1,8,45000);

INSERTINTOEMPLOYEESVALUES

CJones'/lndianayi992-02-01,,

'Chicago',NULL,NULL);

在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以

我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我

们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知

的值。

有时,像我们刚才所讨论的情况,我们可能希翼对某一些而不是

全部的列进行赋值。除了对要省略的列输入NULL外,还可以采用

此外一种INSERT语句,如下:

INSERTINTOEMPLOYEES(

FIRST_NAME,LAST_NAME,

HIRE_DATE,BRANCH_OFFICE)

VALUE(

'Indiana','Jones;

'1992-02-01'/Indianapolis');

这样,我们先在表名之后列出一系列列名。未列出的列中将自动

填入缺省值,如果没有设置缺省值则填入NULLo请注意我们改变了

列的顺序,而值的顺序要对应新的列的顺序。如果该语句中省略了

FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL

操作将失败。

让我们来看一看上述INSERT语句的语法图:

INSERTINTOtable

[(column{,column})]

VALUES

(columnvalue[{,columnvalue}]);

我们用方括号来表示可选项,大括号表示可以重复任意次数的

项(不能在实际的SQL语句中使用这些特殊字符)。VALUE子句和

可选的列名列表中必须使用圆括号。

SELECT语句

SELECT语句可以从一个或者多个表中选取特定的行和列。囚

为查询和检索数据是数据库管理中最重要的功能,所以SELECT

语句在SQL中是工作量最大的部份。实际上,仅仅是访问数据库

来分析

数据并生成报表的人可以对其他SQL语句一窍不通。

SELECT语句的结果通常是生成此外一个表。在执行过程中系

统根据用户的标准从数据库中选出匹配的行和列,并将结果放到暂时

的表中。

SELECT语句最简单的语法如下:

SELECTcolumnsFROMtables;

当我们以这种形式执行一条SELECT语句时,系统返回由所选

择的列以及用户选择的表中所有指定的行组成的一个结果表。

假设你想查看雇员工作部门的列表。那下面就是你所需要编写的

SQL查询:

SELECTBRANCH_OFFICEFROMEMPLOYEES;

由于我们在SELECT语句中只指定了一个列,所以我们的结果

表中也惟独一个列。注意结果表中具有重复的行,这是因为有多个雇

员在同一部门工作(记住SQL从所选的所有行中将值返回)。要消除

结果中的重复行,只要在SELECT语句中加之DISTINCT子句:

SELECTDISTINCTBRANCH_OFFICE

FROMEMPLOYEES;

现在已经消除了重复的行,但结果并非按照顺序罗列的。如果

你希翼以字母表顺序将结果列出又该怎么做呢?只要使用ORDER

BY子句就可以按照升序或者降序来罗列结果:

SELECTDISTINCTBRANCH_OFFICE

FROMEMPLOYEES

ORDERBYBRANCH_OFFICEASC;

列名BRANCH.OFFICE之后的关键字ASC表示按照升序排

列。如果你希翼以降序罗列,那末可以用关键字DESCo

假设我们希翼得到按部门排序并从工资最高的雇员到工资最低

的雇员罗列的列表。除了工资括号中的内容,我们还希翼看到按照聘

用时间从最近聘用的雇员开始列出的列表。以下是你将要用到的语

句:

SELECTBRANCH_OFFICE,FIRST_NAME,

LAST_NAME,SALARY,HIRE_DATE

FROMEMPLOYEES

ORDERBYSALARYDESC,

HIRE_DATEDESC;

这里我们进行了多列的选择和排序。排序的优先级由语句中的列

名顺序所决定。SQL将先对列出的第一个列进行排序。如果在第一

个列中浮现了重复的行时,这些行将被按照第二列进行排序,如果

在第二列中又浮现了重复的行时,这些行又将被按照第三列进行排

序……如此类推。

将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以

SQL允许在选择表中所有的列时使用*号:

SELECT*FROMEMPLOYEES;

这次查询返回整个EMPLOYEES表。

下面我们对开始时给出的SELECT语句的语法进行一下更新

(竖直线表示一个可选项,允许在其中选择一项。):

SELECT[DISTINCT]

(column[{,columns}])|*

FROMtable[{,table}]

[ORDERBYcolumn[ASC]|DESC

[{,column[ASC]|DESC}]];

定义选择标准

在我们日前所介绍的SELECT语句中,我们对结果表中的列作

出了选择但返回的是表中所有的行。让我们看一下如何对SELECT

语句进行限制使得它只返回希翼得到的行:

SELECTcolumnsFROMtables[WHEREpredicates];

WHERE子句对条件进行了设置,惟独满足条件的行才被包括

到结果表中。假如你需要查询所有姓为Jones的职员,则可以使用以

下SELECT语句:

SELECT*FROMEMPLOYEES

WHERELAST_NAME=Jones,;

使用最多的六种比较

等于=

不等于<>

小于<

大于>

小于或者等于<=

大于或者等于>=

下面给出了不是基于等值比较的一个例子:

SELECT*FROMEMPLOYEES

WHERESALARY>50000;

逻辑连接符

有时我们需要定义一条不止一种条件的SELECT语句,可以使

用逻辑连接符AND,OR和NOTo为了只得到职员DavyJones的记

录,用户可以输入如下语句:

SELECT*FROMEMPLOYEES

WHERELAST_NAME=Jones'ANDFIRST_NAME='Davy,;

如果用户需要定义一个SELECT语句来使得当其中任何一项成

立就满足条件时,可以使用OR连接符:

SELECT*FROMEMPLOYEES

WHERELAST_NAME='Jones'ORLAST_NAME='Smith';

UPDATE语句

UPDATE语句允许用户在已知的表中对现有的行进行修改。

例如,我们刚刚发现IndianaJones的等级为16,工资为

$40,000.00,我们可以通过下面的SQL语句对数据库进行更新。

UPDATEEMPLOYEES

SETGRADE=16,SALARY=40000

WHEREFIRST_NAME='Indiana'

ANDLAST_NAME=Jones,;

上面的例子说明了一个单行更新,但是UPDATE语句可以对多

行进行操作。满足WHERE条件的所有行都将被更新。如果,你想

让Boston办事处中的所有耿员搬到NewYork,你可以使用如下语句:

UPDATEEMPLOYEES

SETBRANCH_OFFICE='NewYork1

WHEREBRANCH_OFFICE=Boston1;

UPDATE语句的语法流图如下面所示:

UPDATEtable

SETcolumn=value[{,column=value}]

[WHEREpredicate[{logical-connectorpredicate}]];

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论