关系数据库标准语言SQL汇总
sql知识点总结大全

sql知识点总结大全一、SQL的基本概念SQL(Structured Query Language)是一种专门用来与数据库进行交互的语言,它是一种标准的数据库查询语言,被用于操作关系数据库管理系统(RDMS)。
SQL可以用来增删改查数据库中的数据,也可以用来创建或删除数据库和表格。
SQL是一个非常强大而且灵活的语言,它为程序员和数据库管理员提供了强大的数据管理和查询能力。
SQL的基本概念包括:数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)以及数据事务控制语言(TCL)。
1.数据定义语言(DDL)数据定义语言用于定义数据库的结构和组件,包括创建、修改和删除数据库、表格、索引等。
常见的DDL语句包括:CREATE、ALTER、DROP等。
2.数据操纵语言(DML)数据操纵语言用于对数据库中的数据进行增、删、改。
常见的DML语句包括:SELECT、INSERT、UPDATE、DELETE等。
3.数据查询语言(DQL)数据查询语言用于从数据库中检索数据,包括查询特定的数据行或列。
DQL语句中最常用的是SELECT语句,用于检索数据库中的数据。
4.数据控制语言(DCL)数据控制语言用于控制数据库的访问权限和安全性,包括分配权限、撤销权限、创建角色等。
常见的DCL语句包括:GRANT、REVOKE等。
5.数据事务控制语言(TCL)数据事务控制语言用于管理数据库的事务,包括事务的开始、提交、回滚等。
常见的TCL语句包括:BEGIN TRANSACTION、COMMIT、ROLLBACK等。
二、SQL的数据类型在SQL中,每个表格的列都要被指定数据类型。
常见的数据类型包括:整数、小数、日期和时间、字符串等。
比如:INT、VARCHAR、DATE等。
常见的数据类型包括:整数型(INTEGER、INT)、浮点数型(FLOAT、DOUBLE)、货币类型(MONEY)、日期和时间类型(DATE、TIME)、字符串类型(CHAR、VARCHAR)、布尔型(BOOLEAN)等。
数据库技术及应用第4章关系数据库标准语言sql

第4章 关系数据库标准语言——SQL
表4-2 SQL的数据定义语句
第4章 关系数据库标准语言——SQL
1. 语句格式的约定符号 在语句格式中: 尖括号“〈〉”——实际语义。 中括号“[ ]”中的内容——任选项。 大括号“{}”或用分隔符“|”中的内容——必选项, 即必选其中之一项。 [,…n]——表示前面的项可重复多次。
【例4-4】为学生课程数据库中的学生、课程和选 课三个表建立索引。其中,学生表按“学号”升序建 立索引;课程表按“课程号”升序建立惟一索引;选 课表按“学号”升序和“课程号”降序建立惟一索引。 CREATE UNIQUE INDEX 学号ON 学生(学号); CREATE UNIQUE INDEX 课程号 ON 课程(课程号); CREATE UNIQUE INDEX 选课号 ON 选课(学号 ASC, 课程号 DESC);
第4章 关系数据库标准语言——SQL
4.3.2 SQL的查询实例 SQL的查询语句可以分为简单查询、连接查询、嵌
套查询和组合查询四种类型。下面仍以学生课程数据 库为例,介绍各种查询的描述格式。
学生课程数据库包括三个基本表,其结构为 学生(学号,姓名,年龄,所在系) 课程(课程号,课程名,先行课) 选课(学号,课程号,成绩)
第4章 关系数据库标准语言——SQL
(2) 比较操作符。 比较操作符用于测试两个数据是否相等、不等、 小于或大于某个值。SQL中的比较操作符包括:=(等 于 ) 、 >( 大 于 ) 、 <( 小 于 ) 、 <=( 小 于 等 于 ) 、 >=( 大 于 等 于)、!=或<>(不等于)、!>(不大于)和 !<(不小于),共九 种操作符。 (3) 逻辑操作符。 SQL的逻辑操作符如表4-4所示。
关系数据库常用SQL语句语法大全

创建表语法CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件][,<列名> <数据类型>[列级完整性约束条件]]…);列级完整性约束条件有NULL[可为空]、NOT NULL[不为空]、UNIQUE[唯一],可以组合使用,但是不能重复和对立关系同时存在。
示例-- 创建学生表CREATE TABLE Student(Id INT NOT NULL UNIQUE PRIMARY KEY,Name VARCHAR(20) NOT NULL,Age INT NULL,Gender VARCHAR(4) NULL);删除表语法DROP TABLE <表名>;示例-- 删除学生表DROP TABLE Student;清空表语法TRUNCATE TABLE <表名>;示例-- 删除学生表TRUNCATE TABLE Student;修改表语法-- 添加列ALERT TABLE <表名> [ADD <新列名> <数据类型>[列级完整性约束条件]]-- 删除列ALERT TABLE <表名> [DROP COLUMN <列名>]-- 修改列ALERT TABLE <表名> [MODIFY COLUMN <列名> <数据类型> [列级完整性约束条件]]示例-- 添加学生表`Phone`列ALERT TABLE Student ADD Phone VARCHAR(15) NULL;-- 删除学生表`Phone`列ALERT TABLE Student DROP COLUMN Phone;-- 修改学生表`Phone`列ALERT TABLE Student MODIFY Phone VARCHAR(13) NULL;SQL查询语句语法SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…FROM <表名或视图名>[,<表名或视图名>]…[WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]][ORDER BY <列名> [ASC|DESC]…]SQL查询语句的顺序:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。
关系数据库标准语言SQL

SQL的数据类型
数字(Numeric)
包括整数、小数和浮点数等。
日期和时间(Date & Time)
用于存储日期、时间和时间戳等。
文本(Character)
包括字符串和字符等。
布尔值(Boolean)
表示真或假等逻辑值。
SQL的数据操作语言(DML)
查询(SELECT)
从数据库中检索数据。
插入(INSERT)
撤销(REVOKE)
取消用户或用户组的数据库访问权限。
SQL的事务控制语言(TCL)
1
开始(BEGIN)
开始一个事务。
ห้องสมุดไป่ตู้
2
提交(COMMIT)
保存并永久应用对数据库的更改。
3
回滚(ROLLBACK)
撤销对数据库的更改。
SQL的应用领域
• 网站开发:用于存储和检索网站数据。 • 企业管理:支持企业各种业务流程的数据管理。 • 数据分析:用于查询和分析大量数据。 • 科学研究:存储和处理实验数据。
向数据库表中插入新数据。
更新(UPDATE)
修改数据库表中的现有数据。
删除(DELETE)
从数据库表中删除数据。
SQL的数据定义语言(DDL)
创建(CREATE)
创建数据库和表。
修改(ALTER)
修改数据库结构。
删除(DROP)
删除数据库和表。
SQL的数据控制语言(DCL)
授权(GRANT)
给用户或用户组授予访问数据库的权限。
关系数据库标准语言SQL
SQL是一种用于管理和处理关系数据库的标准语言。它具有多种数据类型,包 括文本、数字和日期等。SQL提供了数据操作、定义、控制和事务处理等功能, 被广泛应用于业界。
第四章关系数据库标准语言SQL

第四章关系数据库标准语言SQL第一节查询功能一.最短格式:SELECT <查询项> FROM <表名列表|视图名列表>注:查询项:要查询的字段,表达式例:查询职工表中的所有信息SELE * FROM 职工注: *代表所有字段例:查询仓库表中仓库号,面积信息SELE 仓库号,面积 FROM 仓库例:查询职工表中不重复的仓库号信息SELE DIST 仓库号 FROM 职工注: DISTINCT代表在查询结果中去掉重复值,并进行升序排序例:查询职工表所有职工的职工号,月工资(工资)和年工资(工资*12)SELE 职工号,工资 AS 月工资,工资*12 AS 年工资 FROM 职工二.条件短语…WHERE <条件表达式>…注:条件表达式是能返回一个逻辑值的式子,该短语相当于VFP命令中的FOR <条件>短语,让查询命令仅对符合条件的记录进行操作例:查询职工表中工资大于1210元的职工信息SELE * FROM 职工 WHERE 工资>1210例:查询在北京和上海的仓库信息SELE * FROM 仓库 WHERE 城市 IN([北京],[上海])注: <字段名> IN (表达式列表)当字段的值与表达式列表中的任何一项相等时返回.T.例:查询不在北京和上海的仓库信息SELE * FROM 仓库WHERE 城市 NOT IN ([北京],[上海])注: <字段名> NOT IN (表达式列表)当字段的值与表达式列表中的任何一项都不相等时返回.T.例:查询职工表中工资在1230与1250之间的职工信息SELE * FROM 职工 WHERE 工资 BETWEEN 1230 AND 1250注: <字段名> BETWEEN <数据1> AND <数据2>当字段的值在数据1与数据2之间时返回.T.例:查询订购单表中所有供应商号为NULL值的信息SELE * FROM 订购单 WHERE 供应商号 IS NULL注: <字段名> IS NULL当字段的值为NULL值时返回.T.例:查询订购单表中所有订购日期不为NULL 值的信息SELE * FROM 订购单 WHERE 订购日期IS NOT NULL注: <字段名> IS NOT NULL当字段的值不为NULL值时返回.T.例:查询供应商表中供应商名里包含"厂"字的信息SELE * FROM 供应商WHERE 供应商名LIKE "%厂%"注: 字段名 LIKE <通配符表达式>当字符型字段的值符合通配符表达式时返回.T.在SQL中,"%"代表多个任意字符, "_"代表单个字符三.排序短语…ORDER BY <字段名1> [DESC][ASC][,<字段名2> [DESC][ASC]…]…例:按面积降序查询仓库表的所有信息SELE * FROM 仓库 ORDER BY 面积 DESC 例:按工资降序,工资相同按职工号升序查询职工表的所有信息SELE * FROM 职工 ORDER BY 工资 DESC,职工号例:按仓库号降序查询职工表的所有信息SELE * FROM 职工 ORDER BY 1 DESC 注: ORDER BY 或GROUP BY 短语后跟的是数字而不是字段名则代表按查询结果的第几列进行排序或分组四.计算查询1.SUM 求和2.AVG 求平均3.MAX 求最大值4.MIN 求最小值5.COUNT计数SELE <计算函数>(表达式) FROM <表名列表|视图名列表>注:根据使用的计算函数,查询计算结果.一般在查询项中只包括计算项,查询结果如果没有分组短语则只有一条记录例:查询职工表中的职工人数SELE COUNT(*) AS 职工人数 FROM 职工注:COUNT函数是用来统计记录个数的,因此,括号内如果没有DISTINCT选项则无论是使用哪一个字段名都是同样的结果,所以一般使用*例:统计职工表中的仓库个数SELE COUNT(DIST 仓库号) AS 仓库个数FROM 职工例:查询职工表中职工的总工资和平均工资以及年总工资和年平均工资SELE SUM(工资) AS 总工资,AVG(工资) AS 平均工资,SUM(工资*12) AS 年总工资,AVG(工资*12) AS 年平均工资 FROM 职工例:查询职工表中职工的最高工资和最低工资SELE MAX(工资) AS 最高工资,MIN(工资)AS 最低工资 FROM 职工五.分组计算查询…GROUP BY <分组项1>[,<分组项2>…] [HAVING <分组条件>]…例:查询各仓库职工的总工资和平均工资SELE 仓库号,SUM(工资) AS 总工资,AVG(工资) AS 平均工资FROM 职工GROUP BY 仓库号例:查询订单数不小于2的所有职工的订单数,平均金额信息SELE 职工号,COUNT(*) AS 订单数,AVG(总金额) AS 平均金额 FROM 订购单 GROUP BY 职工号 HAVI COUNT(*)>=2六.联接查询SELE <查询项> FROM <表1>,<表2>[,<表3>…] WHERE <联接条件> [AND <查询条件>]…例:查询在北京工作的职工的职工号,工资及所在仓库的仓库号,面积SELE 职工号,工资,仓库.仓库号,面积FROM 仓库,职工 WHERE 仓库.仓库号=职工.仓库号 AND 城市="北京"例:查询由在北京工作的职工所开的订购单的订购单号,订购日期,职工号,供应商号,并将结果按订购单号升序排列SELE 订购单号,订购日期,职工.职工号,供应商号 FROM 仓库,职工,订购单 WHERE 仓库.仓库号=职工.仓库号 AND 职工.职工号=订购单.职工号 AND 城市="北京" ORDER BY 订购单号七.嵌套查询SELE <查询项> FROM <表名列表> WHERE <字段名> IN|=|>=|<=|<>|NOT IN <(子查询)> 注:子查询是另一个查询,它只有一个查询项,它的查询结果是括号外查询的条件的一部分例:查询在北京和上海工作的职工的职工号,工资信息SELE 职工号,工资 FROM 职工,仓库 WHERE 职工.仓库号=仓库.仓库号 AND 城市 IN ([北京],[上海])**以上方法是用连接完成的**SELE 职工号,工资 FROM 职工 WHERE 仓库号 IN (SELE 仓库号 FROM 仓库 WHERE城市 IN ("北京","上海"))**此类查询(查询项在一个表,查询条件在另一表)的一般格式SELE <查询项> FROM <查询项所在表> WHERE <共同字段> IN (SELE <共同字段> FROM <条件所在表> WHERE <查询条件>)注:在VFP中,SQL语言的嵌套只能有一层例:查询没有职工工作的仓库信息SELE * FROM 仓库 WHERE 仓库号 NOT IN (SELE 仓库号 FROM 职工)例:查询工资高于所有职工平均工资的职工信息(大于等于)SELE * FROM 职工WHERE 工资>=(SELE AVG(工资) FROM 职工)八.超连接查询SELE <查询项> FROM <表1> INNER|LEFT|RIGHT|FULL JOIN <表2> ON <联接条件> …INNER JOIN 等价于 JOIN 为内部连接,与普通连接相同LEFT JOIN 左连接,即除满足条件的记录出现在查询结果中外,第一个表中不满足连接条件的记录也出现在查询中RIGH JOIN 右连接,即除满足条件的记录出现在查询结果中外,第二个表中不满足连接条件的记录也出现在查询中FULL JOIN 完全连接,即两个表中记录不管是否满足条件都在查询结果中出现注:不满足条件的记录对应部分显示为.NULL.例:INSERT INTO 职工VALUE([WH5],[E8],1240)注: 在职工表的尾部加入一条新记录*普通连接SELE * FROM 仓库,职工 WHERE 仓库.仓库号=职工.仓库号*超连接SELE * FROM 仓库 INNER JOIN 职工 ON仓库.仓库号=职工.仓库号将INNER JOIN 改为LEFT JOIN 、RIGHT JOIN、FULL JOIN分别练习。
vf第四章关系数据库标准语言SQL

vf第四章关系数据库标准语言SQL SQL(Structured Query Language),即结构化查询语言,是一种专门用于管理和操作关系数据库的标准语言。
本章将介绍SQL的基本语法和常用操作,包括数据查询、数据修改、数据删除和数据插入等。
下面将逐一详细介绍这些内容。
一、数据查询1.1 SELECT语句SELECT语句是SQL中最常用的查询语句,其基本语法如下所示:SELECT 列名 FROM 表名 WHERE 条件;其中,“列名”表示需要查询的列,可以使用“*”表示查询所有列;“表名”表示需要查询的表;“WHERE”子句用于设定查询条件,可以根据需要使用各种条件运算符(如“=、>、<、>=、<=、<>”)来进行查询。
示例如下:SELECT * FROM Employees;以上语句将查询名为“Employees”的表中的所有数据。
1.2 ORDER BY语句ORDER BY语句用于对查询结果进行排序,默认是按照升序排列,可以通过添加“DESC”关键字来改为降序排列。
示例如下:SELECT * FROM Employees ORDER BY Salary DESC;以上语句将按照“Salary”列对名为“Employees”的表中的数据进行降序排列。
二、数据修改2.1 UPDATE语句UPDATE语句用于修改表中的数据,其基本语法如下所示:UPDATE 表名 SET 列名=新值 WHERE 条件;其中,“表名”表示需要修改数据的表,“列名=新值”表示需要修改的列和对应的新值,“WHERE”子句用于设定需要修改的数据的条件。
示例如下:UPDATE Employees SET Salary=5000 WHERE EmployeeID=1001;以上语句将修改名为“Employees”的表中“EmployeeID”为1001的记录的“Salary”列的值为5000;2.2 DELETE语句DELETE语句用于删除表中的数据,其基本语法如下所示:DELETE FROM 表名 WHERE 条件;其中,“表名”表示需要删除数据的表,“WHERE”子句用于设定需要删除的数据的条件。
sql语言总结

sql语言总结SQL(结构化查询语言)是用于管理关系数据库的标准编程语言。
以下是SQL语言的一些关键点总结:1. 数据查询语言 (DQL):用于从数据库中检索数据。
使用 `SELECT` 语句。
可以加入 `WHERE` 子句来过滤结果。
可以使用 `ORDER BY` 对结果进行排序。
2. 数据定义语言 (DDL):用于定义或修改数据库结构。
包括 `CREATE`, `ALTER`, 和 `DROP` 语句。
使用 `CREATE TABLE` 创建新表。
使用 `ALTER TABLE` 修改现有表。
使用 `DROP TABLE` 删除表。
3. 数据操纵语言 (DML):用于插入、更新和删除数据库中的数据。
包括 `INSERT`, `UPDATE`, 和 `DELETE` 语句。
使用 `INSERT INTO` 插入新记录。
使用 `UPDATE` 更新现有记录。
使用 `DELETE` 删除记录。
4. 事务控制语言 (TCL):用于管理数据库事务。
包括 `BEGIN TRANSACTION`, `COMMIT`, 和 `ROLLBACK` 语句。
使用 `BEGIN TRANSACTION` 开始事务。
使用 `COMMIT` 提交事务。
使用 `ROLLBACK` 回滚事务。
5. 其他功能:使用聚合函数,如 `SUM`, `AVG`, `COUNT` 等,对数据进行汇总。
使用 `JOIN` 语句连接多个表。
使用视图、存储过程和触发器进行更复杂的操作和数据处理。
6. 安全性:使用权限和角色来控制对数据库的访问。
GRANT 和 REVOKE 语句用于授予和撤销权限。
7. 性能优化:使用索引来提高查询性能。
对查询进行优化,避免全表扫描。
8. 数据类型:每种数据库系统都有其自己的数据类型集,如 INT, VARCHAR, DATE 等。
9. 规范化与反规范化:在设计数据库时,应遵循规范化原则以减少数据冗余和提高数据完整性,但有时为了性能考虑,需要进行反规范化。
关系数据库标准语言sql

Select * top 20 percent from chxy order by 基本工资
集合的并运算
查询结果是职称为教授和讲师职工信息。
SELECT 学号,姓名,出生日期 FROM xsda WHERE 出生日期 BETWEEN {^1981/01/01} AND {^1981/12/31}
3.显示xsda表中姓马的学生的学号,姓名,出生日期。
SELECT 学号,姓名,出生日期 FROM xsda WHERE 姓名 LIKE “马%” 通配符:“%”表示0个或者多个字符,另外还有通配符“_”表示一个字符。
普通查询
例1.显示xsda(学生信息数据表)中的所有记录。
SELECT
* FROM
xsda
命令中的*表示输出显示所有的字段,数据来源是xsda表,表中的内容以 浏览方式显示。
例2显示xsda(学生信息数据表)中的所有的学号及与之对应的姓名,同 时能去除重名。
SELECT DISTINCT 学号,姓名 FROM xsda
分组查询
1.查询读者表中各单位的读者人数。 Select 单位,count(借书证号) as 读者人数 from dz group by 单位 2.查询图书表中各出版单位的图书价格总和在50元以上的出版单位和图书 价格总和。 Select 出版单位,sum(单价) as 图书总价 from ts group by 出版单位 having sum(单价)>50 3.求每一类职称的职工的平均基本工资。 Select 职称,avg(基本工资) from chxy group by 职称
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系数据库标准语言SQL一、SQL概述与查询功能1、SQL概述SQL是Structured Query Language(结构化查询语言)的缩写。
可以说查询是SQL语言的重要组成部分,但不是全部,SQL还包括数据定义、数据操纵和数据控制功能等部分。
Visual FoxPro在SQL方面支持数据定义、数据查询和数据操纵功能,但在具体表现方面也存在一些差异,由于安全控制方面的缺陷,没有提供数据控制功能。
2、查询功能Visual FoxPro的SQL SELECT命令格式如下:SELECT……FROM……[WHERE……][GROUP BY……][HAVING……][UNION[ALL]……][ORDER BY……] SELECT [ALL|DISTINCT][<别名>.]<选项>[AS<显示列名>][,[<别名>.]<选项>[AS<显示列名>]…]FROM [<数据库名>!]<表名>[[AS]<本地别名>][[INNER|LEFT|[OUTER]|RIGHT[OUTER]|FULL[OUTER]JI ON<数据库名>!]<表名>[AS]<本地别名>][ON<连接条件>…][[INTO<目标>|[TO FILE<文件名>][ADDITIVE]|TO PRINTER [PROMPT]|TO SCREEN]][PREFERENCE<参照名>][NOCONSOLE][PLAIN][NOWAIT][WHERE<连接条件1>[AND <连接条件2>…]AND|OR <过滤条件1>[AND|OR <过滤条件2>…]]][GROUP BY <分组列名1>[,<分组列名2>…]][HAVING<过滤条件>][UNION[ALL]SELECT命令][ORDER BY <排序选项1>[ASC|DESC][,<排序选项2>[ASC|DESC]…]]SELECT说明要查询的数据。
FROM说明要查询的数据来自哪个(些)表。
WHERE说明查询条件,即选择元组的条件。
GROUP BY用于对查询结果进行分组,可以利用它进行分类汇总。
HAVING必须跟随GROUP BY使用,客观存它用来限定分组必须满足的条件。
ORDER BY用来对查询的结果进行排序。
数据查询语句SQL数据查询命令是SELECT命令。
该命令的基本框架是SELECT…FROM…WHERE,它包含输出字段、数据来源、查询条件等基本子句。
在这种固定格式中,可以不用WHERE,但是SELECT 和FROM是必备的。
基本查询所谓基本查询是指无条件查询,其常用格式是:SELECT [ALL|DISTINCT][〈别名〉.]〈选项〉[AS 〈显示列名〉][,[〈别名〉.]〈选项〉[AS 〈显示列名〉…]]FROM 〈表名1〉[〈别名1〉][,〈表名2〉[〈别名2〉…]]其中ALL表示输出所有记录,包括重复记录。
DISTINCT表示输出无重复结果的记录。
基本查询示例写出对学生表进行如下操作的命令。
(1) 列出全部学生信息。
(2) 列出全部学生的姓名和年龄(去掉重名的)。
操作1:SELECT * FROM 学生操作2:SELECT DISTINCT 姓名AS 学生名单,YEAR(DATE())-YEAR(出生日期)AS年龄FROM 学生带条件查询WHERE 子句用于指定查询条件,其格式是:WHERE 〈条件表达式〉其中条件表达式可以是单表的条件表达式,也可以是多表之间的条件表达式,表达式用的比较符为:=(等于)、<>、!=,#(不等于)、==(精确等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。
带条件查询示例写出对学生表进行如下操作的命令。
(1) 列出入学成绩在560分以上的学生记录。
(2) 求出湖南学生入学成绩平均分。
操作1:SELECT * FROM 学生WHERE 入学成绩>560操作2:SELECT 籍贯,AVG(入学成绩) AS 入学成绩平均分FROM 学生WHERE 籍贯=″湖南″写出对教学管理数据库进行如下操作的命令。
(1)列出非湖南籍的学生名单(2)列出江苏籍和贵州籍的学生名单(3)列出入学成绩在560分到650分之间的学生名单(4)列出所有姓赵的学生名单(5)列出所有成绩为空值的学生学号和课程号操作1:SELECT 学号,姓名,籍贯FROM 学生WHERE 籍贯<>”湖南”或者SELECT 学号,姓名,籍贯FROM 学生WHERE 籍贯!=”湖南”或者SELECT 学号,姓名,籍贯FROM 学生WHERE NOT(籍贯=”湖南”)操作2:SELECT 学号,姓名,籍贯FROM 学生WHERE 籍贯IN(”江苏”,”贵州”)或者SELECT 学号,姓名,籍贯FROM 学生WHERE 籍贯=”江苏” OR 籍贯=”贵州”操作3:SELECT 学号,姓名,入学成绩FROM 学生WHERE 入学成绩BETWEEN 560 AND 650或者SELECT 学号,姓名,入学成绩FROM 学生WHERE 入学成绩>= 560 AND 入学成绩<=650操作4:SELECT 学号,姓名FROM 学生WHERE 姓名LIKE “赵%”或者SELECT 学号,姓名FROM 学生WHERE 姓名=“赵”或者SELECT 学号,姓名FROM 学生WHERE AT(“赵”,姓名)=1 或者SELECT 学号,姓名FROM 学生LEFT(姓名,2)=“赵”操作5:SELECT 学号,课程号FROM 选课WHERE 成绩IS NULL 嵌套查询有时候一个SELECT命令无法完成查询任务,而需要一个子SELECT的结果作为查询的条件,即需要在一个SELECT命令的WHERE子句中出现另一个SELECT命令,这种查询称为嵌套查询。
通常把仅嵌入一层子查询的SELECT命令称为单层嵌套查询,把嵌入子查询多于一层的查询称为多层嵌套查询。
Visual FoxPro只支持单层嵌套查询。
1.返回单值的子查询例:对教学管理数据库,列出选修”数据库原理”的所有学生的学号SELECT 学号FROM 选课WHERE 课程号=( SELECT 课程号FROM 课程WHERE 课程名=”数据库原理”)2.返回一组值的子查询(1)ANY运算符的用法例:对教学管理数据库,列出选修”W01”课的学生中成绩比选修”K02”的最低成绩高的学生的学号和成绩.SELECT 学号,成绩FROM 选课WHERE 课程号=”W01”AND 成绩>ANY(SELECT 成绩FROM 选课WHERE 课程号=”K02”)(2)ALL运算符的用法例: 对教学管理数据库,列出选修”W01”课的学生中成绩比选修”K02”的最高成绩还要高的学生的学号和成绩.SELECT 学号,成绩FROM 选课WHERE 课程号=”W01”AND 成绩>ALL(SELECT 成绩FROM 选课WHERE 课程号=”K02”)(3)IN运算符的用法(等价于”=ANY”)例:对教学管理数据库,列出选修”数据库原理”或”软件工程”的所有学生的学号.SELECT 学号FROM 选课WHERE 课程号IN( SELECT 课程号FROM 课程WHERE 课程名=”数据库原理”OR 课程名=”软件工程”)多表查询等值连接等值连接是按对应字段的共同值将一个表中的记录与另一个表中的记录相连接。
例:写出对教学管理数据库进行如下操作的命令(1)输出所有学生的成绩单,要求给出学号,姓名,课程号,课程名和成绩.(2)列出男生的选课情况,要求列出学号,姓名,课程号,课程名,授课教师和学分数.(3)列出至少选修”W01”课和”K02”课的学生学号.操作1:SELECT a.学号,姓名,b.课程号,课程名,成绩FROM 学生a,选课b,课程c WHERE a.学号=b.学号AND b.课程号=c.课程号操作2:SELECT a.学号,a.姓名AS 学生姓名,b.课程号,课程名, e.姓名AS 教师姓名,学分FROM 学生a,选课b,课程c,授课d,教师 eWHERE a.学号=b.学号AND b.课程号=c.课程号AND c.课程号=d.课程号AND d.教师号=e.教师号AND 性别=”男”操作3:SELECT a.学号FROM 选课a,课程b WHERE a.学号=b.学号AND b.课程号=”W01”AND a.课程号=”K02”非等值连接非等值连接按对应字段的记录的某种不等值关系进行连接例:对教学管理数据库,列出选修”K02”课的学生中,成绩大于学号为”200109”的学生该门课程成绩的那些学生的学号及其成绩. SELECT a.学号,a.成绩FROM 选课a,课程b WHERE a.成绩>b.成绩AND a.课程号=b.课程号AND b.课程号=”K02”AND b.学号=”200109”连接查询内部连接(Inner Join)所谓内部连接是指包括符合条件的每个表中的记录。
也就是说是所有满足连接条件的记录都包含在查询结果中。
例:对教学管理数据库,列出少数民族学生的学号,课程号及成绩. SELECT a.学号,b.课程号FROM 选课a,课程b WHERE a.学号=b.学号AND 少数民族否若采用内部连接则为:SELECT a.学号,b.课程号FROM 选课a INNER JOIN 课程b ON a.学号=b.学号WHERE 少数民族否外部连接左外连接左外连接也叫左连接(Left Outer Join),其系统执行过程是将左表的某条记录与右表的所有记录依次比较,若有满足连接条件的,则产生一个真实值记录;若都不满足,则产生一个含有NULL值的记录。
接着,左表的下一记录与右表的所有记录依次比较字段值,重复上述过程,直到左表所有记录都比较完为止。
连接结果的记录个数与左表的记录个数一致。
右外连接右外连接也叫右连接(Right Outer Join),其系统执行过程是右表的某条记录与左表的所有记录依次比较,若有满足连接条件的,则产生一个真实值记录;若都不满足,则产生一个含有NULL值的记录。
接着,右表的下一记录与左表的所有记录依次比较字段值,重复上述过程,直到左表的所有记录都比较完为止。
连接结果的记录个数与右表的记录个数一致。
全外连接全外连接也叫完全连接(Full Join),其系统执行过程是先按右连接比较字段值,然后按左连接比较字段值,重复记录不记入查询结果中。