第六章 VFP关系数据库标准语言SQL
VF 第6章 关系数据库标准语言SQL

3、SQL的功能: SQL的功能: 的功能
数据查询 数据定义 数据操纵 数据控制(此功能VFP没有) VFP没有 数据控制(此功能VFP没有)
SQL查询功能 6-2 SQL查询功能
1、命令格式
“字段”选项卡:指定查询所要的数 字段”选项卡: 字段 可以输入或编辑计算表达式) 据(可以输入或编辑计算表达式) 。 “杂项”选项卡:指定是否要重复记 杂项”选项卡: 杂项 录及列在前面的部分记录等 “联接”选项卡:用于编辑联接条件。 联接”选项卡 用于编辑联接条件 用于编辑联接条件。 联接 “筛选”选项卡:用于指定查询条件。 筛选”选项卡:用于指定查询条件。 筛选 “排序依据”选项卡: “排序依据”选项卡:用于指定排序 排序依据 的字段和排序方式。 的字段和排序方式。 “分组依据”选项卡:用于分组条件。 分组依据”选项卡:用于分组条件。 分组依据
工号,姓名, sele top 10 percent 工号,姓名,职称 from std order by 学号 desc
4.显示STD.DBF中所有记录,部分字段,设标题, 4.显示STD.DBF中所有记录,部分字段,设标题,加唯一性 显示STD.DBF中所有记录
sele 学号 AS 现在的学号,姓名 from std order by 工号 desc 现在的学号,
SELECT 目标字段名表; 目标字段名表; FROM 表名 [关联语句 关联语句]; 关联语句 WHERE 筛选条件; 筛选条件; ORDER BY 排序依据; 排序依据; GROUP BY 分组依据 ; HAVING 分组限制条件; 分组限制条件;
INTO /TO 查询去向 “查询去向”对话框:用于指定查询去向 查询去向” 查询去向 对话框: [NOCONSOLE][PLAIN] [NOWAIT]
VFP SQL语句

SELECT - SQL
SELECT <目标列序列> FROM <数据源> [WHERE <查询条件> [GROUP BY <分组列序列> [HAVING <组选择条件>]] [ORDER BY <排序列序列>]
14
简单查询
1. 检索若干列 例4.11 检索所有教师的编号、姓名、生日、性别、职称、专业。 SELECT 编号 , 姓名 , 生日 , 性别 , 职称 , 专业 ; FROM 教师
8
DROP TABLE
DROP TABLE <表名>
9
数据插入
Appends a record to the end of a table that contains the specified field values INSERT INTO tablename [(colname [, colname …])] VALUES (expr [, expr …]) INSERT INTO tablename FROM ARRAY ArrayName | FROM MEMVAR
SELECT * FROM 教师 SELECT * FROM 教学管理!教师 系统变量_TALLY记录最近一次表操作(如SELECT—SQL, UPDATE等)所影响的记录的条数
15
SQL
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item [AS Column_Name] [, [Alias.] Select_Item [AS Column_Name] ...] FROM [FORCE] [DatabaseName!]Table [[AS] Local_Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN DatabaseName!]Table [[AS] Local_Alias] [ON JoinCondition …] [[INTO Destination] | TO SCREEN] | [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] ] [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT] [WHERE JoinCondition [AND JoinCondition ...] [AND | OR FilterCondition [AND | OR FilterCondition ...]]] [GROUP BY GroupColumn [, GroupColumn ...]] [HAVING FilterCondition] [UNION [ALL] SELECT Command] [ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]
VF 关系数据库标准语言S Q L

关系数据库标准语言S Q L1、SQL是结构化的查询语言,是一种高度非过程化的语言。
查询是其核心。
注意:数据定义一般是对数据表操作,数据操纵一般是对表中的记录进行操作2、查询功能格式:SELE字段名……&&说明要查询的数据FROM数据表名(有联系的多个数据表名,有公共域)&&数据来源哪些表ON 联接的字段名WHERE连接条件……AND 条件……&&说明查询条件GROUP BY 分组(字段名)HAVING 分组条件&&查询结果分组ORDER BY 排序字段&&查询结果排序成绩管理数据库有以下三个数据库表:学生(学号C,姓名C,性别C,年龄N,系C……)选课(学号C,课程号C,成绩N……)课程(课程号C,课程名C……)1基于单个数据表,SELE…FROM …WHERE…(类似VF命令LIST FOR 条件)SELE 后面接要查询输出的字段名,多个用逗号分隔,全部可以用* FROM 后面是查询的数据表(单个数据表)WHERE 后面跟查询条件教材P130SELE 工资FROM 职工(从职工表中查询所有职工的“工资”字段值)SELE * FROM 职工(从职工表中查询所有职工的元组,*表示所有属性)SELE * FROM 职工WHERE 工资>1230(从职工表中查询工资大于1230的元组)注意:1、WHERE 后面的条件可以是任意复杂的条件表达式2、DISTINCT 短语消除结果中重复值(注意)列:查询成绩大于等于60分的学生的学号、课程号、成绩(学号,课程号,成绩都在选课表中)SELE 学号,课程号,成绩FROM 选课WHERE 成绩>=60相当于VF命令:LIST FIELDS 学号,课程号,成绩FOR 成绩>=60查询有考试成绩的学生的学号SELE DIST 学号FROM 选课(DIST 去掉重复)列:在学生表中查询2系年龄小于25的女同学的学号,姓名在学生表中查询2系或6系年龄小于25的男同学的学号,姓名分析条件:性别='女' AND 年龄<25 AND (系='6' OR 系='2')等于条件:性别='男' AND 年龄<25 AND 系='6' OR性别='男' AND 年龄<25 AND 系='2'-----------------------------------------------------------------------2)基于多个数据表(两个或三个),这些数据表肯定有联系(有公用字段),而且查询输出的字段可能在几个(两个或以上有联系)数据表中。
vfp之SQL

37
8.3.2 更新记录
命令格式: 命令格式:
Update 表名 Set <字段名> = < 表达式 >
Where < 条件 >
38
更新记录的例子
命令格式: 命令格式:
Update rcda.dbf Set 姓名 = 〃刘德华〃
Where 姓名 = 〃刘伟箭 〃
39
8.3.3 删除记录
命令格式: 命令格式:
45
4, LIKE 运算符 和 % 通配符 【例8.25】列出所有的 姓 〃赵 〃的学生名单.
SELECT 学号 , 姓名
WHERE
FROM
学生
姓名 LIKE 〃赵%〃 赵
注: % 通配符代表一个或多个字符
*
Hale Waihona Puke 代表全部字段468.2.3 嵌套查询
在一个 SELECT 命令的 WHERE子句中出现 子句中出现 命令,则称为嵌套查询或子查询. 另一个 SELECT 命令,则称为嵌套查询或子查询. 子查询必须用括号括起来. 子查询必须用括号括起来.
四,多表联接查询:—— 输出内容来自三个表
SELECT <父表.字段1 > ,<父表. 字段2 > , … <子表1.字段1 > ,<子表1. 字段2 > , … <子表2.字段1 > ,<子表2. 字段2 > , … FROM < 父表 > INNER JOIN INNER JOIN <子表 <子表1> 子表1>
<子表 <子表2> 子表2>
ON < 联接条件 > 联接条件1
VisualFoxPro第6讲SQL

8
3 修改表结构
格式1:ALTER TABLE 〈表名1〉 ADD|ALTER [COLUMN] 〈字段名〉 〈字段类型〉[(〈宽度〉 [,〈小数位数〉])]… 功能:可以添加新的字段或修改已有的字段,它的句 法基本可以与CREATE TABLE的句法相对应。
OPEN DATABASE 学生管理 ALTER TABLE 课程 ADD 学时 I CHECK(学时>16) ERROR “学时应该大于16!”
UPDATE语句命令格式:
UPDATE <表名> SET <字段名1>=<表达式1>,<字段名2>=<表达式>,„, [WHERE <逻辑表达式>] 例3-3:在“学生情况表”表中修改学生“刘丽丽” 的“联系方式”。 UPDATE 学生情况表 SET 联系方式=’0292330890’ WHERE 姓名=’刘丽丽‘
22
பைடு நூலகம்
6、查询前N行
格式: SELECT TOP <n> [PERCENT] * FROM <表名> 例3-13:从“学生情况表”表中查询前50%行的数据。 SELECT TOP 50 PERCENT * FROM 学生情况表 ORDER BY 姓名
23
7、条件查询
格式: SELECT <字段名> FROM <表名> WHERE <表达式> 例3-15:从“学生情况表”表中查询“计算机2班” 的所有男同学。 SELECT * FROM 学生情况表 WHERE 性别='男' AND 班级='计算机2班'
2.数据操纵
INSERT插入、DELETE删除、UPDATE更新
VFP复习题及答案

VFP复习题及答案考试题型判断10(10道)选择20(10道)填空10(5空)简答20(5道)程序分析12(3道)编程7(1道)SQL语言21(6道)教材目录1、Visual FoxPro基础2、Visual FoxPro编程基础3、Visual FoxPro编程工具与编程步骤4、赋值与输入/输出5、选择结构程序设计6、循环结构程序设计7、数组8、自定义属性与自定义方法9、表单集与多重表单10、菜单与工具栏11、数据表12、数据库和多表操作13、查询与视图14、关系数据库标准语言SQL15、报表第一章一、数据库的基本概念1、数据、数据处理、数据模型(层次模型、网状模型、关系模型)、实体之间的关系(一对一,一对多,多对多)关系=二维表,关系中的术语:字段(属性)、记录(元组)、域、主关键字(候选关键字)、外部关键字2、数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)、数据库应用系统(DBAS)的关系;3、Visual FoxPro是一个32位的使用关系模型的数据库管理系统。
二、Visual FoxPro的概述VFP的发展;VFP的窗口介绍:启动、退出、界面(标题栏、菜单栏、状态栏、主窗口、工具栏、命令窗口)VFP的系统环境设置:“工具”-“选项”,文件默认位置、区域、表单、数据VFP的工作方式:交互式(菜单、命令)和程序方式VFP提供的工具:向导、设计器、生成器三、命令的书写规则1每—命令必须以命令动词开头;2命令动词后面的命令短语可按任意顺序排列,短语之间用空格分隔,空格数任意;3命令一行书写不下时,可以换行,并在分行处加上分号“;”;所有符号都是英文状态下的半角符号;4每行只能书写一条命令;5所有命令和函数均可只写前4个字符,且不分大小写;6—行命令结束后,用Enter键确认并执行,可重复执行。
第二章一、语言基础1、数据类型(13种):类型名称,简写,字节长度;哪些是基本类型,哪些用于表;2、常量与变量:6种基本类型的常量表示变量如何命名和赋值3、表达式与运算符:6种类型的表达式以及运算符4、函数:常用函数的参数、返回值类型1、数据类型13种基本数据类型:可用于字段变量,常量、内存变量、表达式的类型,有:字符型(C,注意英文1位和中文2位,最长254)数值型(N,注意小数点和正负号,最长20)、货币型(Y,注意小数位只有4位,定长8)、日期型(D,定长8位)日期时间型(T,定长8位)逻辑型(L,定长1位)1、数据类型13种其余用于表的数据类型有:浮点型(F,20)、双精度型(B,8)、整型(I,4)、备注型(M,4)、通用型(G,4):备注文件(.fpt)二进制字符型C、二进制备注型M1,常量字符型:“”,‘’,[]数值型:e,-,+,.货币型:$日期型:{^ },连字符可以是/ -,用set mark to改日期时间型:{^ :a|p} ,日期顺序set date to逻辑型: .T.2、变量值可能会发生变化的量,变量是内存中的一个存储单元的位置变量的类型:分为字段变量、内存变量、数组变量和系统变量4种命名规则由数字、字母、汉字、下划线组成只能以字母或下划线开头,不可以包含空格长度1~128字符(自由表的字段名、表的索引标识名长度最多为10个字符)避免使用VFP的保留字2、变量变量的赋值格式1:变量名=<表达式>格式2:store <表达式> to 变量名1,变量名2,…格式3:INPUT “提示” TO <变量名>内存变量的作用范围LOCAL 指定的变量为局部变量PRIVA TE 私有变量PUBLIC 全局变量3数组变量数组:一组内存变量的集合Vfp只能定义一维数组和二维数组声明方式:Public、Local 、{declare/dimension}<数组名>(行数[,列数])例:dime a(4),b(2,3) 特点1)数组各个元素的默认值为.F.2)下标计数从1开始,每个元素可以不是同一类型。
visual foxpro第六章sql知识点
••ຫໍສະໝຸດ 第六章 关系数据库标准语言 sql
• 1.sql的语言动词:数据查询select 数据定义create drop alter 数据操纵insert update delete 数 据控制grant revoke 2.简单查询:select all、distinct 选项 as 显示列名from 数据库名 where条件1and、or条件2 【all输出所有记录,包括重复记录,distinct可去掉重复记录。 *可表示全部字段。】 3.几个特殊运算符 a.确定范围运算符(not)between下界表达式and上界表达式.。b.字符 匹配运算符:字段名 like 字符表达式(字符类型必须是字符型).通配符:%表示任意长度的字符 串.-表示任意一个字符.注意:在vfp中,一个汉字用一个字符-表示.c.空值运算符is null is not null 4.连接查询:select查询列from表一join表2on连接条件and查询条件. 5.嵌套连接:selectfrom-where(select-from-where) 6.排序:order by asc(升序)desc(降序)默认值为升序, 位于其他字句之后. 7.合并查询:union. Select命令1.【union【all】select命令2】 8.计算与分 组查询:avg按列计算平均值 sum按列计算值总和 count(*)按列统计个数 min求一列最 小值 max求一列最大值 9.round(m,n) N为保留小数个数 10.分组group by having count (*) 11.查询结果处理 a.放到永 久表into dbf表名 table表名 b. 放到临时文件:into cursor文件名 c.放到文本文件:to file d.放到数组:into array 12.数据定义功能a.建立表结构creata table b.create database建 立数据库 b.修改表结构:alter table +add字段+alter字段+drop字段+rename修改字段名 c. 增加字段时定义数据完整性alter table表名 add字段 check 逻辑表达式 d.修改字段时定义数据完 整性 alter table表名 alter字段set check逻辑表达式 11.删除表:drop table表名 13.数据操纵 功能 a.插入记录insert into 表名 values表达式 b.修改记录update 表名 set字段名 where逻 辑表达式 c.删除记录:delete from表名 where条件(没有从物理删除)
VFP关系数据库标准语言SQL
一、选择题1、下面有关HAVING子句描述错误的是A) HAVING子句必须与GROUP BY子句同时使用,不能单独使用B) 使用HAVING子句的同时不能使用WHERE子句C) 使用HAVING子句的同时可以使用WHERE子句D) 使用HAVING子句的作用是限定分组的条件2、(15)~(27) 使用的数据如下:当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:(15) 执行如下SQL语句后SELECT*FROM stock INTO DBF stock ORDER BY 单价A) 系统会提示出错信息B) 会生成一个按“单价”升序排序的表文件,将原来的stock.dbf文件覆盖C) 会生成一个按“单价”降序排序的表文件,将原来的stock.dbf文件覆盖D) 不会生成排序文件,只在屏幕上显示一个按“单价”升序排序的结果(16) 执行下列程序段以后,内存变量a的内容是CLOSE DATABASEa=0USE stockGO TOPDO WHILE.NOT.FOF()IF 单价>10a=a+1ENDIFSKIPENDDOA) 1 B) 3 C)5 D) 7(17) 有如下SQL SELECT语句SELECT*FROM stock WHERE单价BETWEEN 12.76 AND 15.20与该语句等价的是A) SELECT*FROM stock WHERE 单价<=15.20.AND.单价>=12.76B) SELECT*FROM stock WHERE 单价<15.20.AND.单价>12.76C) SELECT*FROM stock WHERE 单价>=15.20.AND.单价<=12.76D) SELECT*FROM stock WHERE 单价>15.20.AND.单价<12.76(18) 如果在建立数据库表stock.dbf时,将单价字段的字段有效性规则设为“单价>0”,通过该设置,能保证数据的A) 实体完整性 B) 域完整性 C) 参照完整性 D) 表完整性(19) 在当前盘当前目录下删除表stock的命令是A) DROP stock B) DELETE TABLE stockC) DROP TABLE stock D) DELETE stock(20) 有如下SQL语句SELECT max(单价) INTO ARRAY a FROM stock执行该语句后A) a[1]的内容为15.20 B) a[1]的内容为6B) a[0]的内容为15.20 C) a[0]的内容为6(21) 有如下SQL语句SELECT 股票代码,avg(单价) as 均价 FROM stock;GROUP BY 交易所 INTO DBF temp执行该语句后temp表中第二条记录的“均价”字段的内容是A) 7.48 B) 9.99 C)11.73 D) 15.20(22) 将stock表的股票名称字段的宽度由8改为10,应使用SQL语句A) ALTER TABLE stock股票名称 WITH c(10)B) ALTER TABLE stock股票名称 c(10)C) ALTER TABLE stock ALTER股票名称 c(10)D) ALTER stock ALTER 股票名称 c(10)(23) 有如下SQL语句CREATE VIEW stock_view AS SELECT*FROM stock WHERE 交易所=“深圳”执行该语句后产生的视图包含的记录个数是A) 1 B) 2 C)3 D) 4(24) 有如下SQL语句CREATE VIEW view_stock AS SELECT 股票名称AS名称,单价FROM stock 执行该语句后产生的视图含有的字段名是A) 股票名称、单价 B) 名称、单价C) 名称、单价、交易所 D) 股票名称、单价、交易所(25) 下面有关对视图的描述正确的是A) 可以使用MODIFY STRUCTURE命令修改视图的结构B) 视图不能删除,否则影响原来的数据文件C) 视图是对表的复制产生的D) 使用SQL对视图进行查询时必须事先打开该视图所在的数据库(26) 执行如下SQL语句后SELECT DISTINCT 单价 FROM stock;WHERE 单价=( SELECT min(单价)FROM stock) INTO DBF stock_x表stock_x中的记录个数是A) 1 B) 2 C)3 D) 4(27) 求每个交易所的平均单价的SQL语句是A) SELECT 交易所,avg(单价)FROM stock GROUP BY 单价B) SELECT 交易所,avg(单价)FROM stock ORDER BY 单价C) SELECT 交易所,avg(单价)FROM stock ORDER BY 交易所D) SELECT 交易所,avg(单价)FROM stock GROUP BY 交易所3、下列关于查询的说法中,不正确的是A)查询是预先定义好的一个SQL SELECT语句B)查询是Visual FoxPro支持的一种数据库对象C)通过查询设计器,可完成任何查询D)查询是从指定的表或视图中提取满足条件的记录,可将结果定向输出4、Visual FoxPro在SQL方面,不提供的功能是A)数据查询B)数据定义C)数据操纵D)数据控制5、检索职工表中工资大于800元的职工号,正确的命令是A)SELECT 职工号WHERE 工资>800B)SELECT 职工号FROM 职工SET 工资>800C)SELECT 职工号FROM 职工 WHERE 工资>800D)SELECT 职工号FROM 职工 FOR 工资>8006、找出在仓库面积大于500的仓库中工作的职工号,以及这些职工工作所在的城市,正确的命令是A)SELECT 职工号,城市 FROM职工;WHERE (面积>500) OR (职工.仓库号=仓库.仓库号)B)SELECT 职工号,城市 FROM职工;WHERE (面积>500) AND (职工.仓库号=仓库.仓库号)C)SELECT 职工号,城市 FROM仓库,职工;WHERE (面积>500) OR (职工.仓库号=仓库.仓库号)D)SELECT 职工号,城市 FROM仓库,职工;WHERE (面积>500) AND (职工.仓库号=仓库.仓库号)7、利用SQL语句,检索仓库中至少有一名职工的仓库信息,正确的命令是A) SELECT * FROM 仓库表 WHERE IN;(SELECT 仓库号 FROM 职工表)B) SELECT * FROM 仓库表 WHERE NOT IN;(SELECT 仓库号 FROM 职工表)C) SELECT * FROM仓库表WHERE 仓库号 EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)D) SELECT * FROM 仓库表 WHERE EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)8、第(32)~(35)题使用如下的设备表。
vf课件
6.4 SQL的数据查询 的数据查询
命令格式: 命令格式: SELECT [ALL|DISTINCT][<别名>.]<选项>[,[<别名>.]<选项 >……] FROM <表名>[<别名>][,<表名>[<别名>]……] [WHERE<条件表达式>][AND<条件表达式>……] [GROUP BY<分组选项>[,<分组选项>……]] [HAVING<组条件表达式>] [ORDER BY<排序选项>[ASC|DESC][,<排序选 >[ASC|DESC]……]] 功能:查询满足条件的记录数据。 功能
2.CREATE CURSOR命令(建立临时表) 建立一个临时表和建立一个永久数据表是完全类似的,唯一 的区别在于临时表(CURSOR)不存于磁盘上。 命令格式:CREATE CURSOR <临时表名> 命令格式 (<字段名1><型>[(<精度>[,<小数位数>]) [,<字段名2>...]]) 3. DROP TABLE命令(表的删除) 命令格式: 命令格式 DROP TABLE <表名>
普通高校应用型人才培养规划教材
6.0程序设计教程 Visual FoxPro 6.0程序设计教程
主编 刘 敬
关系数据库标准语言SQL 第6章 关系数据库标准语言SQL
6.1 数据库标准语言 数据库标准语言SQL概述 概述 6.2 SQL的数据定义语言 的数据定义语言 6.3 SQL的数据操纵语言语言 的数据操纵语言语言 6.4 SQL的数据查询 的数据查询
VFP SQL语言
目的子句
INTO <目标>:输出到指定的目标 ARRAY <数组>:输出到数组 CUSOR <临时表名>:输出到临时表 DBF <表名>:输出到表文件 TO FILE <文件名>:输出到指定的文本文件
[ADDITIVE]:数据追加到原文件后
TO PRINTER:输出到打印机
[PROMPT]:同时弹出打印机设置窗口
查询条件 关系条件 复合条件 所用符号或关键字 =,>,>=,<,<=,= =,<>,#,!= NOT,AND,OR 说明
确定范围
包含子项 字符匹配
BETWEEN…AND(或反条件: NOT BETWEEN…AND)
IN(或反条件:NOT IN) LIKE(字符串格式中可使用%,_ ) “%”,“_”是通配符,类似 DOS中的“*”,“?”
表达式:设置排序的字段或表达式
ASC: 按表达式升序排列 DESC:按表达式降序排列
例:查询所有2000级的学生并按入学成绩的降序排列
SELECT * FROM 学生 WHERE YEAR(入学时
间)=2000
ORDER BY 入学成绩 DESC
其他子句
[PREFERENCE <名字>]:
HAVING子句
以分组统计后的结果作为查询过滤条件,功能 与WHERE一样,只是要与GROUP BY子句配 合使用表示条件 例:统计有3人以上学生选修的课程编号
SELECT 课程编号,COUNT(*) AS 人数 FROM 学 生选课 GROUP BY 课程编号 HAVING COUNT(*)>=3
数据查询(SQL语言的核心)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章VFP关系数据库标准语言SQL 大纲要求关系数据库标准语言SQL1、SQL的数据定义功能:(1)CREATE TABLE–SQL(2)ALTER TABLE–SQL2、SQL的数据修改功能:(1)DELETE–SQL(2)INSERT–SQL(3)UPDATE–SQL3、SQL的数据查询功能:(1)简单查询。
(2)嵌套查询。
(3)连接查询。
内连接外连接:左连接、右连接、完全连接(4)分组与计算查询。
(5)集合的并运算。
知识要点一、SQL语言的特点1.综合统一SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。
2.高度非过程化3.语言简洁,易学易用4.以同一种语法结构提供两种使用方式既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
二、SQL语言的基本概念SQL语言支持关系型数据库的三级模式结构。
其中外模式对应于视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于存储文件。
基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。
一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。
存储文件的逻辑结构组成了关系型数据库的内模式。
而存储文件的物理文件结构是任意的。
视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放在视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。
三.数据定义数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。
由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DR OP)和修改(ALTER)。
1.定义(创建)表【格式】:CREATE TABLE<表名>(<字段名1><数据类型>;[(<宽度>[,<小数位数>])][完整性约束];[NULL|NOT NULL][,<字段名2>…])【功能】定义(也称创建)一个表。
【例1】创建一个表SC(课程成绩表),它由以下字段组成:学号(C,10);课程号(C,2)。
CREATE TABLE SC(学号C(10),课程号C(2))LIST STRUCTURE【例2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期(D);是否团员(L);备注(M);照片(G)。
CREATE TABLE STUD(学号C(10),姓名C(10),性别C(2),班级名C(10),系别代号C(2),地址C(50),出生日期D,是否团员L,备注M,照片G)LIST STRUCTURE2.修改表【格式】ALTER TABLE<表名>[ADD<新字段名><数据类型>[(<宽度>[,<小数位数>])][完整性约束][NULL|NOT NULL]][DROP[完整性约束]][MODIFY<字段名><数据类型>] 【功能】修改表结构。
【说明】ADD子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件; DROP子句用于删除指定的的完整性约束条件;MODIFY子句用于修改原有的字段变量的值。
【例】在课程成绩表SC中,增加一个成绩字段变量(N,3)。
ALTER TABLE SC ADD成绩N(3)LIST STRUCTURE3.删除数据库【格式】DROP DATABASE<数据库名>【功能】删除指定数据库的结构和数据。
【说明】谨慎使用。
4.删除表【格式】DROP TALBE<表名>【功能】删除指定表的结构和内容(包括在此表上建立的索引)。
【说明】如果只是想删除一个表中的所有记录,则应使用DELETE语句例题:(1)SQL是______语言。
A.结构化查询B.数据定义C.数据操作D.数据控制【解析】本题考查的知识点是SQL语言的基础知识。
在Visual FoxPro中,SQL是结构化查询语言。
选项B,C,D说法错误,在Visual FoxPro中有数据定义语言、数据操作语言、数据控制语言。
【答案】A(2)SQL除了具有数据查询的功能外,还有_____。
A.数据定义B.数据操纵C.数据控制D.以上答案均正确【解析】本题考查的知识点是SQL语言的作用。
在VisualFoxPro中,SQL的功能有四个:数据查询、数据定义、数据操纵、数据控制。
因此正确答案为D。
【答案】D(3)下列选项中,不属于数据定义功能的SQL语句是__________。
A.CREATEB.ALTERC.SELECTD.DROP【解析】本题考查的知识点是SQL命令动词的作用。
选项A用来创建表;选项B用来修改表结构;选项C用来查询;选项D用来删除表文件。
在Visual FoxPro中,选项A,B,D都具有数据定义功能,只有选项C具有数据查询的功能。
【答案】C(4)SQL的核心是__________。
A.数据查询B.数据定义C.数据操纵D.数据控制【解析】本题考查的知识点是SQL的核心。
SQL作为结构化查询语言,其核心是查询。
因此正确答案为A。
【答案】A(5)SQL同其他数据操作语言不同,其关键在于_____。
A.SQL是一种过程性语言B.SQL是一种非过程性语言C.SQL语言简练D.SQL的词汇有限【解析】本题考查的知识点是SQL不同于其他语言的关键。
SQL同其他数据操作语言不同的关键是SQL是一种非过程性语言。
通过这一功能用户只需说明做什么,而不用说明怎么做,不用了解数据存储的格式及SQL命令的内部执行过程,就可以方便地对数据库进行操作。
选项A的说法错误,选项C和D是SQL语言的特点,但不是SQL语言同其他数据操作语言不同的关键。
【答案】B(6)建立表结构的SQL命令是____。
A.ALTER TABLEB.DROP TABLEC.CREAT TABLED.CREAT INDEX【解析】本题考查的知识点是建立表结构的SQL命令。
建立表结构的SQL命令是CR EAT TABLE。
ALTER TABLE命令的作用是修改表结构;DROP TABLE命令的作用是删除表;CREAT INDEX命令的作用是建立索引。
【答案】C(7)SQL可以_____使用,也可以_____使用。
【解析】本题考查的知识点是SQL语言的使用方式。
SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
【答案】直接以命令方式交互,嵌入到程序设计语言中以程序方式(8)在ALTER TABLE中,_____用来添加新字段;_____修改已有字段。
【解析】本题考查的知识点是ALTER TABLE命令及各子项的作用。
在ALTER TAB LE命令中,ADD用来添加新字段;ALTER用来修改已有字段。
【答案】ADD ALTER四、数据操纵数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DM L:●数据查询:寻找所需的具体数据。
●数据修改:添加、删除和改变数据。
数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查询)等组成,由于SELECT比较特殊,所以一般又将它以查询语言单独出现。
1.插入记录【格式1】INSERT INTO<表名>[<字段名表>]VALUES(<表达式表>)【格式2】INSERT INTO<表名>FROM ARRAY<数组名>|FROM MEMVAR【功能】在指定的表文件尾部追加一条记录。
格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。
格式2用数组或内存变量的值赋值给表文件中各字段。
【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。
<字段名表>:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。
<表达式表>:指定要追加的记录各个字段的值。
【例1】在表文件STUD的末尾追加三条记录。
***用表达式方式追加第一条记录***INSERT INTO STUD(学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员); VALUES("011110","李中国","男","计0121","01","湖北武汉",{^2005/01/06},.T.)***用数组方式追加第二条记录***DIMENSION TA[8]TA(1)="011103"TA(2)="李宁"TA(3)="女"TA(4)="电0134"TA(5)="02"TA(6)="长沙希赛教育"TA(7)={^2005/01/15}TA(8)=.T.INSERT INTO STUD FROM ARRAY TA***用内存变量方式追加第三条记录***学号="011202"姓名="赵娜"性别="女"班级名="英0112"系别代号="03"地址="广西南宁"出生日期={^2002/12/14}是否团员=.F.INSERT INTO STUD FROM MEMVARLIST2.更新记录命令【格式】UPDATE<表文件名>SET<字段名1>=<表达式>[,<字段名2>=<表达式>…][WHERE<条件>]【功能】更新指定表文件中满足WHERE条件子句的数据。
其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。
【说明】更新操作又称为修改操作。
【例】将成绩表(SC)中,所有课程号为02的成绩各加5分。
UPDATE SC SET成绩=成绩+5 WHERE课程号="k321"3.删除记录【格式】DELETE FROM<表名>WHERE<表达式>【功能】从指定的表中删除满足WHERE子句条件的所有记录。