掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。
INSERT语句
用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:
INSERT INTO EMPLOYEES VALUES
('Smith','John','1980-06-10',
'Los Angles',16,45000);
通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。
我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。
如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。
回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。
同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。
对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近,请你最好还是使用四位来表示年份。
既然你已经理解了INSERT语句是怎样工作的了,让我们转到EMPLOYEES表中的其他部分:
INSERT INTO EMPLOYEES VALUES
('Bunyan','Paul','1970-07-04',
'Boston',12,70000);
INSERT INTO EMPLOYEES VALUES
('John','Adams','1992-01-21',
'Boston',20,100000);
INSERT INTO EMPLOYEES VALUES
('Smith','Pocahontas','1976-04-06',
'Los Angles',12,100000);
INSERT INTO EMPLOYEES VALUES
('Smith','Bessie','1940-05-02',
'Boston',5,200000);
INSERT INTO EMPLOYEES VALUES
('Jones','Davy','1970-10-10',
'Boston',8,45000);
INSERT INTO EMPLOYEES VALUES
('Jones','Indiana','1992-02-01',
'Chicago',NULL,NULL);
在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。
有时,像我们刚才所讨论的情况,我们可能希望对某一些而不是全部的列进行赋值。除了对要省略的列输入NULL外,还可以采用另外一种INSERT语句,如下:
INSERT INTO EMPLOYEES(
FIRST_NAME, LAST_NAME,
HIRE_DATE, BRANCH_OFFICE)
VALUE(
'Indiana','Jones',
'1992-02-01','Indianapolis');
这样,我们先在表名之后列出一系列列名。未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。请注意我们改变了列的顺序,而值的顺序要对应新的列的顺序。如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL操作将失败。
让我们来看一看上述INSERT语句的语法图:
INSERT INTO table
[(column { ,column})]
VALUES
(columnvalue [{,columnvalue}]);
和前一篇文章中一样,我们用方括号来表示可选项,大括号表示可以重复任意次数的项(不能在实际的SQL语句中使用这些特殊字符)。VALUE子句和可选的列名列表中必须使用圆括号。
SELECT语句
SELECT语句可以从一个或多个表中选取特定的行和列。因为查询和检索数据是数据库管理中最重要的功能,所以SELECT语句在SQL中是工作量最大的部分。实际上,仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通。
SELECT语句的结果通常是生成另外一个表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到临时的表中。在直接SQL(direct SQL)中,它将结果显示在终端的显示屏上,或者将结果送到打印机或文件中。也可以结合其他SQL语句来将结果放到一个已知名称的表中。
SELECT语句功能强大。虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算“选择”(或称“限制”),但实际上它也可以完成其他两种关系运算—“投影”和“连接”,SELECT语句还可以完成聚合计算并对数据进行排序。
SELECT语句最简单的语法如下:
SELECT columns FROM tables;
当我们以这种形式执行一条SELECT语句时,系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表。这就是实现关系投影运算的一个形式。
让我们看一下使用图1中EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的。而我们在图2和图3中给出了查询的实际结果。我们将在其他的例子中使用这些结果)。
假设你想查看雇员工作部门的列表。那下面就是你所需要编写的SQL查询:
SELECT BRANCH_OFFICE FROM EMPLOYEES;
以上SELECT语句的执行将产生如图2中表2所示的结果。
由于我们在SELECT语句中只指定了一个列,所以我们的结果表中也只有一个列。注意结果表中具有重复的行,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回)。要消除结果中的重复行,只要在SELECT语句中加上DISTINCT子句:
SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES;
这次查询的结果如表3所示。
现在已经消除了重复的行,但结果并不是按照顺序排列的。如果你希望以字母表顺序将结果列出又该怎么做呢?只要使用ORDER BY子句就可以按照升序或降序来排列结果:
SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES
ORDER BY BRANCH_OFFICE ASC;
这一查询的结果如表4所示。请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的,这就是我们想要对其进行排序的列。为什么即使是结果表中只有一个列时我们也必须指出列名呢?这是因为我们还能够按照表中其他列进行排序,即使它们并不显示出来。列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列。如果你希望以降序排列,那么可以用关键字DESC。
同样我们应该指出ORDER BY子句只将临时表中的结果进行排序;并不影响原来的表。
假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表。除了工资括号中的内容,我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表。以下是你将要用到的语句:
SELECT BRANCH_OFFICE,FIRST_NAME,
LAST_NAME,SALARY,HIRE_DATE
FROM EMPLOYEES
ORDER BY SALARY DESC,
HIRE_DATE DESC;
这里我们进行了多列的选择和排序。排序的优先级由语句中的列名顺序所决定。SQL将先对列出的第一个列进行排序。如果在第一个列中出现了重复的行时,这些行将被按照第二列进行排序,如果在第二列中又出现了重复的行时,这些行又将被按照第三列进行排序……如此类推。这次查询的结果如表5所示。
将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL允许在选择表中所有的列时使用*号:
SELECT * FROM EMPLOYEES;
这次查询返回整个EMPLOYEES表,如表1所示。
下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项,允许在其中选择一项。):
SELECT [DISTINCT]
(column [{, columns}])| *
FROM table [ {, table}]
[ORDER BY column [ASC] | DESC
[ {, column [ASC] | DESC }]];
定义选择标准
在我们目前所介绍的SELECT语句中,我们对结果表中的列作出了选择但返回的是表中所有的行。让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行:
SELECT columns FROM tables [WHERE predicates];
WHERE子句对条件进行了设置,只有满足条件的行才被包括到结果表中。这些条件由断言(predicate)进行指定(断言指出了关于某件事情的一种可能的事实)。如果该断言对于某个给定的行成立,该行将被包括到结果表中,否则该行被忽略。在SQL语句中断言通常通过比较来表示。例如,假如你需要查询所有姓为Jones的职员,则可以使用以下SELECT语句:
SELECT * FROM EMPLOYEES
WHERE LAST_NAME = 'Jones';
LAST_NAME = 'Jones'部分就是断言。在执行该语句时,SQL将每一行的LAST_NAME列与“Jones”进行比较。如果某一职员的姓为“Jones”,即断言成立,该职员的信息将被包括到结果表中(见表6)。
使用最多的六种比较
我们上例中的断言包括一种基于“等值”的比较(LAST_NAME = 'Jones'),但是SQL断言还可以包含其他几种类型的比较。其中最常用的为:
等于 =
不等于 <>
小于 <
大于 >
小于或等于 <=
大于或等于 >=
下面给出了不是基于等值比较的一个例子:
SELECT * FROM EMPLOYEES
WHERE SALARY > 50000;
㈡ SQL语言包括哪三种类型,每种类型又包括哪些语句
SQL包含四种程序设计语言类别的语句:数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和事物控制语言(TCL)。
1、Data Definition Language(DDL) :CREATE DATABASE - 创建新数据库 ;ALTER DATABASE - 修改数据库;CREATE TABLE - 创建新表;ALTER TABLE - 变更(改变)数据库表;DROP TABLE - 删除表;CREATE INDEX - 创建索引(搜索键);DROP INDEX - 删除索引。
2、Data Manipulation Language(DML) :SELECT - 从数据库表中获取数据;UPDATE - 更新数据库表中的数据;DELETE - 从数据库表中删除数据;INSERT INTO - 向数据库表中插入数据。
3、Data Control Language(DCL) :GRANT - 授权;REVOKE - 撤销授权;DENY - 拒绝授权。
4、Transaction Control Language(TCL) :SAVEPOINT - 设置保存点;ROLLBACK - 回滚;COMMIT - 提交。
(2)sql语言的四类核心语句是什么扩展阅读:
SQL功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个动词: CREATE、 ALTER、DROP、 SELECT、 INSERT、 UPDATE、 DELETE、GRANT、 REVOKE。且SQL语言语法简单,接近英语口语,因此容易学习,也容易使用。
SQL采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
㈢ SQL的四个组成部分,到底是怎么分的
(1)数据定义语言,即SQL DDL,用于定义SQL模式、基本表、视图、索引等结构。
(2)数据操纵语言,即SQL DML。数据操纵分成数据查询和数据更新两类。
(3)数据查询语言,即SQL DQL。
(4)数据控制语言,即SQL DCL,这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
(3)sql语言的四类核心语句是什么扩展阅读:
SQL可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、査询、更新、维护、数据库重构、数据库安全性控制等一系列操作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。
㈣ SQL语言的核心6个命令分别是什么
SELECT / UPDATE / DELETE / CREATE / ALTER / DROP
㈤ 数据库四大SQL语句的基本语法是怎么写的啊 在线等哈~ 谢谢那位大神帮帮忙!
一、增(INSERT向数据库插入一条记录)
INSERT INTO 表名(列名1,列名2,列名3……)VALUES('值1,'值2','值3'……)
例子:
INSERT INTO muser(id,name,pwd)
VALUES('1','admin','admin')
注意:列的个数必须和VALUES子句中给出的值的个数相同;数据类型必须和类的数据类型对应。
二、删(DELETE从表中删除数据)
DELETE语句用来删除数据,可以一次删除一行,也可以删除多行。
DELETE语句的基本语法:
DELETE FROM 表名 WHERE 条件
例子:
DELETE FROM muser WHERE id='1' and pwd='admin'
三、改(UPDATE修改表中的数据)
UPDATE语句用来修改已经存在的数据,UPDATE可影响一行也可以影响多行,甚至可以修改全部的数据。
UPDATE语句的基本语法:
UPDATE 表名 SET
列名='需要修改成为的数据'
WHERE 修改条件
例子:
UPDATE muser SET
pwd='admin888'
WHERE name='admin' AND pwd='admin'
四、查(使用SELECT查询数据库)
SELECT语句主要用来检索数据
SELECT语句的基本语法:
SELECT 列名
FROM 表名
WHERE 检索的条件
例子:
SELECT * FROM news WHERE class='国内新闻'
在列名中使用(*)表示从FROM表中指定的返回所有列。
㈥ SQL最基本的语句是哪些
掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句?SQL的核心功能?来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句?数据操作语言(DML)语句进行处理。SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。INSERT语句用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:INSERT INTO EMPLOYEES VALUES('Smith','John','1980-06-10','Los Angles',16,45000);通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近,请你最好还是使用四位来表示年份。既然你已经理解了INSERT语句是怎样工作的了,让我们转到EMPLOYEES表中的其他部分:INSERT INTO EMPLOYEES VALUES('Bunyan','Paul','1970-07-04','Boston',12,70000);INSERT INTO EMPLOYEES VALUES('John','Adams','1992-01-21','Boston',20,100000);INSERT INTO EMPLOYEES VALUES('Smith','Pocahontas','1976-04-06','Los Angles',12,100000);INSERT INTO EMPLOYEES VALUES('Smith','Bessie','1940-05-02','Boston',5,200000);INSERT INTO EMPLOYEES VALUES('Jones','Davy','1970-10-10','Boston',8,45000);INSERT INTO EMPLOYEES VALUES('Jones','Indiana','1992-02-01','Chicago',NULL,NULL);在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。有时,像我们刚才所讨论的情况,我们可能希望对某一些而不是全部的列进行赋值。除了对要省略的列输入NULL外,还可以采用另外一种INSERT语句,如下:INSERT INTO EMPLOYEES(FIRST_NAME, LAST_NAME,HIRE_DATE, BRANCH_OFFICE)VALUE('Indiana','Jones','1992-02-01','Indianapolis');这样,我们先在表名之后列出一系列列名。未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。请注意我们改变了列的顺序,而值的顺序要对应新的列的顺序。如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL操作将失败。让我们来看一看上述INSERT语句的语法图:INSERT INTO table[(column { ,column})]VALUES(columnvalue [{,columnvalue}]);和前一篇文章中一样,我们用方括号来表示可选项,大括号表示可以重复任意次数的项(不能在实际的SQL语句中使用这些特殊字符)。VALUE子句和可选的列名列表中必须使用圆括号。SELECT语句SELECT语句可以从一个或多个表中选取特定的行和列。因为查询和检索数据是数据库管理中最重要的功能,所以SELECT语句在SQL中是工作量最大的部分。实际上,仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通。SELECT语句的结果通常是生成另外一个表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到临时的表中。在直接SQL(direct SQL)中,它将结果显示在终端的显示屏上,或者将结果送到打印机或文件中。也可以结合其他SQL语句来将结果放到一个已知名称的表中。SELECT语句功能强大。虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算“选择”(或称“限制”),但实际上它也可以完成其他两种关系运算?“投影”和“连接”,SELECT语句还可以完成聚合计算并对数据进行排序。SELECT语句最简单的语法如下:SELECT columns FROM tables;当我们以这种形式执行一条SELECT语句时,系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表。这就是实现关系投影运算的一个形式。让我们看一下使用图1中EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的。而我们在图2和图3中给出了查询的实际结果。我们将在其他的例子中使用这些结果)。假设你想查看雇员工作部门的列表。那下面就是你所需要编写的SQL查询:SELECT BRANCH_OFFICE FROM EMPLOYEES;以上SELECT语句的执行将产生如图2中表2所示的结果。由于我们在SELECT语句中只指定了一个列,所以我们的结果表中也只有一个列。注意结果表中具有重复的行,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回)。要消除结果中的重复行,只要在SELECT语句中加上DISTINCT子句:SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEES;这次查询的结果如表3所示。现在已经消除了重复的行,但结果并不是按照顺序排列的。如果你希望以字母表顺序将结果列出又该怎么做呢?只要使用ORDER BY子句就可以按照升序或降序来排列结果:SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEESORDER BY BRANCH_OFFICE ASC;这一查询的结果如表4所示。请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的,这就是我们想要对其进行排序的列。为什么即使是结果表中只有一个列时我们也必须指出列名呢?这是因为我们还能够按照表中其他列进行排序,即使它们并不显示出来。列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列。如果你希望以降序排列,那么可以用关键字DESC。同样我们应该指出ORDER BY子句只将临时表中的结果进行排序;并不影响原来的表。假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表。除了工资括号中的内容,我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表。以下是你将要用到的语句:SELECT BRANCH_OFFICE,FIRST_NAME,LAST_NAME,SALARY,HIRE_DATEFROM EMPLOYEESORDER BY SALARY DESC,HIRE_DATE DESC;这里我们进行了多列的选择和排序。排序的优先级由语句中的列名顺序所决定。SQL将先对列出的第一个列进行排序。如果在第一个列中出现了重复的行时,这些行将被按照第二列进行排序,如果在第二列中又出现了重复的行时,这些行又将被按照第三列进行排序……如此类推。这次查询的结果如表5所示。将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL允许在选择表中所有的列时使用*号:SELECT * FROM EMPLOYEES;这次查询返回整个EMPLOYEES表,如表1所示。下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项,允许在其中选择一项。):SELECT [DISTINCT](column [{, columns}])| *FROM table [ {, table}][ORDER BY column [ASC] | DESC[ {, column [ASC] | DESC }]];定义选择标准在我们目前所介绍的SELECT语句中,我们对结果表中的列作出了选择但返回的是表中所有的行。让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行:SELECT columns FROM tables [WHERE predicates];WHERE子句对条件进行了设置,只有满足条件的行才被包括到结果表中。这些条件由断言(predicate)进行指定(断言指出了关于某件事情的一种可能的事实)。如果该断言对于某个给定的行成立,该行将被包括到结果表中,否则该行被忽略。在SQL语句中断言通常通过比较来表示。例如,假如你需要查询所有姓为Jones的职员,则可以使用以下SELECT语句:SELECT * FROM EMPLOYEESWHERE LAST_NAME = 'Jones';LAST_NAME = 'Jones'部分就是断言。在执行该语句时,SQL将每一行的LAST_NAME列与“Jones”进行比较。如果某一职员的姓为“Jones”,即断言成立,该职员的信息将被包括到结果表中(见表6)。使用最多的六种比较我们上例中的断言包括一种基于“等值”的比较(LAST_NAME = 'Jones'),但是SQL断言还可以包含其他几种类型的比较。其中最常用的为:等于 =不等于 <>小于 <大于 >小于或等于 <=大于或等于 >=下面给出了不是基于等值比较的一个例子:SELECT * FROM EMPLOYEESWHERE SALARY > 50000;这一查询将返回年薪高于$50,000.00的职员(参见表7)。逻辑连接符有时我们需要定义一条不止一种断言的SELECT语句。举例来说,如果你仅仅想查看Davy Jones的信息的话,表6中的结果将是不正确的。为了进一步定义一个WHERE子句,用户可以使用逻辑连接符AND,OR和NOT。为了只得到职员Davy Jones的记录,用户可以输入如下语句:SELECT * FROM EMPLOYEESWHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';在本例中,我们通过逻辑连接符AND将两个断言连接起来。只有两个断言都满足时整个表达式才会满足。如果用户需要定义一个SELECT语句来使得当其中任何一项成立就满足条件时,可以使用OR连接符:SELECT * FROM EMPLOYEESWHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';有时定义一个断言的最好方法是通过相反的描述来说明。如果你想要查看除了Boston办事处的职员以外的其他所有职员的信息时,你可以进行如下的查询:SELECT * FROM EMPLOYEESWHERE NOT(BRANCH_OFFICE = 'Boston');关键字NOT后面跟着用圆括号括起来的比较表达式。其结果是对结果取否定。如果某一职员所在部门的办事处在Boston,括号内的表达式返回true,但是NOT操作符将该值取反,所以该行将不被选中。断言可以与其他的断言嵌套使用。为了保证它们以正确的顺序进行求值,可以用括号将它们括起来:SELECT * FROM EMPLOYEESWHERE (LAST_NAME = 'Jones'AND FIRST_NAME = 'Indiana')OR (LAST_NAME = 'Smith'AND FIRST_NAME = 'Bessie');SQL沿用数学上标准的表达式求值的约定?圆括号内的表达式将最先进行求值,其他表达式将从左到右进行求值。以上对逻辑连接符进行了说明,在对下面的内容进行说明之前,我们再一次对SELECT语句的语法进行更新:SELECT [DISTINCT](column [{, column } ] )| *FROM table [ { , table} ][ORDER BY column [ASC] | [DESC[{ , column [ASC] | [DESC } ] ]
㈦ SQL基本语句
掌握SQL四条最基本的数据*作语句 Insert Select Update和Delete 练掌握SQL是数据库用户的宝贵财 富 在本文中 我们将引导你掌握四条最基本的数据*作语句—SQL的核心功能—来依次介绍比较*作符 选择断言以及三值逻辑 当你完成这些学习后 显然你已经开始算是精通SQL了 在我们开始之前 先使用CREATE TABLE语句来创建一个表 DDL语句对数据库对象如表 列和视进行定义 它们并不对表中的行进行处理 这是因为DDL语句并不处理数据库中实际的数据 这些工作由另一类SQL语句—数据*作语言(DML)语句进行处理 SQL中有四种基本的DML*作 INSERT SELECT UPDATE和DELETE 由于这是大多数SQL用户经常用到的 我们有必要在此对它们进行一一说明 我们给出了一个名为EMPLOYEES的表 其中的每一行对应一个特定的雇员记录 请熟悉这张表 我们在后面的例子中将要用到它 INSERT语句用户可以用INSERT语句将一行记录插入到指定的一个表中 例如 要将雇员John Smith的记录插入到本例的表中 可以使用如下语句 INSERT INTO EMPLOYEES VALUES ( Smith John Los Angles );通过这样的INSERT语句 系统将试着将这些值填入到相应的列中 这些列按照我们创建表时定义的顺序排列 在本例中 第一个值 Smith 将填到第一个列LAST_NAME中 第二个值 John 将填到第二列FIRST_NAME中……以此类推 我们说过系统会 试着 将值填入 除了执行规则之外它还要进行类型检查 如果类型不符(如将一个字符串填入到类型为数字的列中) 系统将拒绝这一次*作并返回一个错误信息 如果SQL拒绝了你所填入的一列值 语句中其他各列的值也不会填入 这是因为SQL提供对事务的支持 一次事务将数据库从一种一致性转移到另一种一致性 如果事务的某一部分失败 则整个事务都会失败 系统将会被恢复(或称之为回退)到此事务之前的状态 回到原来的INSERT的例子 请注意所有的整形十进制数都不需要用单引号引起来 而字符串和日期类型的值都要用单引号来区别 为了增加可读性而在数字间插入逗号将会引起错误 记住 在SQL中逗号是元素的分隔符 同样要注意输入文字值时要使用单引号 双引号用来封装限界标识符 对于日期类型 我们必须使用SQL标准日期格式(yyyy mm dd) 但是在系统中可以进行定义 以接受其他的格式 当然 年临近 请你最好还是使用四位来表示年份 既然你已经理解了INSERT语句是怎样工作的了 让我们转到EMPLOYEES表中的其他部分 INSERT INTO EMPLOYEES VALUES ( Bunyan Paul Boston );INSERT INTO EMPLOYEES VALUES ( John Adams Boston );INSERT INTO EMPLOYEES VALUES ( Smith Pocahontas Los Angles );INSERT INTO EMPLOYEES VALUES ( Smith Bessie Boston );INSERT INTO EMPLOYEES VALUES ( Jones Davy Boston );INSERT INTO EMPLOYEES VALUES ( Jones Indiana Chicago NULL NULL);在最后一项中 我们不知道Jones先生的工薪级别和年薪 所以我们输入NULL(不要引号) NULL是SQL中的一种特殊情况 我们以后将进行详细的讨论 现在我们只需认为NULL表示一种未知的值 有时 像我们刚才所讨论的情况 我们可能希望对某一些而不是全部的列进行赋值 除了对要省略的列输入NULL外 还可以采用另外一种INSERT语句 如下 INSERT INTO EMPLOYEES( FIRST_NAME LAST_NAME HIRE_DATE BRANCH_OFFICE)VALUE( Indiana Jones Indianapolis );这样 我们先在表名之后列出一系列列名 未列出的列中将自动填入缺省值 如果没有设置缺省值则填入NULL 请注意我们改变了列的顺序 而值的顺序要对应新的列的顺序 如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空) SQL*作将失败 让我们来看一看上述INSERT语句的语法图 INSERT INTO table [(column { column})]VALUES (columnvalue [{ columnvalue}]);和前一篇文?幸谎颐怯梅嚼ê爬幢硎究裳∠睿罄ê疟硎究梢灾馗慈我獯问南睿ú荒茉谑导实腟QL语句中使用这些特殊字符) VALUE子句和可选的列名列表中必须使用圆括号 SELECT语句SELECT语句可以从一个或多个表中选取特定的行和列 因为查询和检索数据是数据库管理中最重要的功能 所以SELECT语句在SQL中是工作量最大的部分 实际上 仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通 SELECT语句的结果通常是生成另外一个表 在执行过程中系统根据用户的标准从数据库中选出匹配的行和列 并将结果放到临时的表中 在直接SQL(direct SQL)中 它将结果显示在终端的显示屏上 或者将结果送到打印机或文件中 也可以结合其他SQL语句来将结果放到一个已知名称的表中 SELECT语句功能强大 虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算 选择 (或称 限制 ) 但实际上它也可以完成其他两种关系运算— 投影 和 连接 SELECT语句还可以完成聚合计算并对数据进行排序 SELECT语句最简单的语法如下 SELECT columns FROM tables;当我们以这种形式执行一条SELECT语句时 系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表 这就是实现关系投影运算的一个形式 让我们看一下使用EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的 而我们在图 和图 中给出了查询的实际结果 我们将在其他的例子中使用这些结果) 假设你想查看雇员工作部门的列表 那下面就是你所需要编写的SQL查询 SELECT BRANCH_OFFICE FROM EMPLOYEES;由于我们在SELECT语句中只指定了一个列 所以我们的结果表中也只有一个列 注意结果表中具有重复的行 这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回) 要消除结果中的重复行 只要在SELECT语句中加上DISTINCT子句 SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEES;现在已经消除了重复的行 但结果并不是按照顺序排列的 如果你希望以字母表顺序将结果列出又该怎么做呢?只要使用ORDER BY子句就可以按照升序或降序来排列结果 SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEESORDER BY BRANCH_OFFICE ASC;这一查询的结果如表 所示 请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的 这就是我们想要对其进行排序的列 为什么即使是结果表中只有一个列时我们也必须指出列名呢?这是因为我们还能够按照表中其他列进行排序 即使它们并不显示出来 列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列 如果你希望以降序排列 那么可以用关键字DESC 同样我们应该指出ORDER BY子句只将临时表中的结果进行排序 并不影响原来的表 假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表 除了工资括号中的内容 我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表 以下是你将要用到的语句 SELECT BRANCH_OFFICE FIRST_NAME LAST_NAME SALARY HIRE_DATEFROM EMPLOYEESORDER BY SALARY DESC HIRE_DATE DESC;这里我们进行了多列的选择和排序 排序的优先级由语句中的列名顺序所决定 SQL将先对列出的第一个列进行排序 如果在第一个列中出现了重复的行时 这些行将被按照第二列进行排序 如果在第二列中又出现了重复的行时 这些行又将被按照第三列进行排序……如此类推 这次查询的结果如表 所示 将一个很长的表中的所有列名写出来是一件相当麻烦的事 所以SQL允许在选择表中所有的列时使用*号 SELECT * FROM EMPLOYEES;这次查询返回整个EMPLOYEES表 如表 所示 下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项 允许在其中选择一项 ) SELECT [DISTINCT] (column [{ columns}])| *FROM table [ { table}] <b lishixin/Article/program/Oracle/201311/18760
㈧ T-SQL语句的分为哪四类
根据其完成的具体功能,可以将T-SQL语句分为:数据定义语言、数据操纵语言、数据控制语言、事务管理语言。
1、数据定义语言用来定义和管理数据库以及数据库中的各种对象,这些对象的创建、修改和删除等都可以通过使用CREATE、ALTER、DROP等语句来完成。
2、数据操纵语言用来查询、添加、修改和删除数据库中数据,相关语句包括SELECT、INSERT、UPDATE利和DELETE等。
3、数据控制语言用来进行安全管理,用来设置或者更改数据库用户或角色权限以确保数据库中的数据和操作不被未授权的用户使用和执行。相关语句包括GRANT、DENY和REVOKE等。
4、事务管理语言的相关语句有:BEGINTRANSACTION用来明确定义事务的开始,COMMITTRANSACTION用来明确地提交完成的事务,ROLLBACKTRANSACTION用来使数据回到事务开始时的状态并释放该事务占据的资源。
(8)sql语言的四类核心语句是什么扩展阅读
SQL Server和T-SQL的区别
SQL Server是结构化查询语言,是目前关系型数据库管理系统中使用最广泛的查询语言。
T-SQL即 Transact-SQL,是标准SQL语言的扩展,是SQL Server的核心,在SQL的的基础上添加了变量,运算符,函数和流程控制等新内容。
总之SQL Server是几乎所有关系型数据库都支持的语言,而T-SQL是Microsoft SQL Server支持的语言。
㈨ SQL语言分为四类,每类分别是各包括什么
sqlserver(T_SQL):
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
Oracle SQL(P_SQL) 语句可以分为以下几类:
1.数据操作语言语句[Data manipulation language,DML]
2.数据定义语言语句[Data definition language,DDL]
3.事务控制语句[transaction control statement]
4.会话控制语句[session control statement]