二、数据定义
SQL的数据定义功能是指定义数据表的结构,包括定义基本表,扩充和删除基本表。
1.定义基本表
命令格式:create table 表名(字段名1 类型(宽度,小数位数)[,字段名2 类型(宽度,小数位数)…])
命令功能:用于创建一个基本表。一个基本表在Visual Foxpro中相当于一个自由表或数据库表,新建的基本表在最低工作区中自动打开。
参数说明:表名与括号之间用空格隔开,表结构的描述放在括号内,字段与类型之间也要有空格,各个字段之间用逗号分开,对系统默认的字段宽度可以省略。
例1:建立一个学生基本情况表:学生(学号,姓名,性别,籍贯,年龄),并显示其结构。
在命令窗口键入以下命令序列
create table student (学号 c (10),姓名 c(8),性别 c (2),籍贯 c(20),年龄 n(3))
list structure
2.修改基本表
修改基本表是指对已定义的基本表增加新的字段或修改已有的字段。如果被修改的基本表已经有了数据,各个记录中新增加的字段值全部为空,以后可用其它命令来填入新值。
命令格式:alter table 表名add |alter [column] 字段名 类型(宽度,小数位数)
命令功能:对已有的表增加新的字段或修改已有字段。
例2:在学生表中新增加两个字段:家庭出身,入团时间
在命令窗口键入以下命令
alter table student add 个人成分 c (10)
alter table student add 入团时间 d
3.删除基本表
命令格式:drop table 表名
命令功能:把给定的表从数据库中移出,并从磁盘上删除。
参数说明:表名必须给出全名。
三、数据操纵
以上介绍的SQL命令只对表的结构进行描述,并未涉及到表中的数据。数据操纵是指对表中得数据进行增加、删除和修改操作。
1.插入(增加)数据
命令格式:insert into 表名(字段名1[,字段名2,…] value (表达式1[,表达式2,…]))
命令功能:在表尾追加一条指定字段值的记录。
命令说明:若指定的表未打开,则Visual Foxpro先在一个新工作区中以独占方式打开该表,然后再把新记录追加到表中。若所指定的表是打开的,insert命令就把新记录追加到这个表中。无论指定的表是否打开,当前工作区并未改变,仍为原当前工作区。
参数说明:字段名1,…为指定新记录的字段名。表达式1,…为新插入记录的字段值,若省略字段名,则必须按照表结构定义的顺序来指定字段值。
例3:向学生表中追加一条记录。
在Visual Foxpro命令窗口键入以下命令序列
insert into student (学号,姓名,性别,年龄) values ("911010001","张三","男",18)
2.修改数据
命令格式:update 表名 set 字段1=表达式1[,字段2=表达式2,…] where 命令功能:以新值更新表中的记录。Where字句用于限定条件,对满足条件的记录予以更新,若省略where字句则对所有记录更新为相同的值。
命令说明:该命令只能用于更新单个表中的数据。
3.删除数据
删除时必须以记录为单位,而不能以属性为单位。一次可以删除一个或几个记录,删除操作仅是逻辑删除。
命令格式:delete from where 命令功能:删除满足条件的记录。
四、SQL查询
SQL查询语句一般称为SQL-Select命令。基本形式是Select-From-Where查询块,多个查询块允许嵌套。SQL查询可以很方便地从一个或多个表中检索数据,查询是高度非过程化的,用户只需说明“做什麽”,而不必指出“如何做”。
SQL查询的基本格式如下:
Select ,,…,;
From ,,…,;
Where 其中:Select子句中的表达式为查询目标,一般为逗号分开的字段名。
From子句为此查询涉及到的所有数据表。
Where子句指出查询目标必须满足的条件。该子句可以省略。
1.简单查询
简单查询是最基本的查询。我们通过例子逐渐引入各种短语。
例4:给出王姓同学的姓名及籍贯。
Select 姓名,籍贯 from student where 姓名=“王”
无论student.dbf事先是否打开,该表将自动打开,查询结果将在弹出的Query窗口中给出。
例5:查看所有同学的全部情况。
Select * from student
Select子句里的*用于表示全部字段。
1)distinct和all
Selectd子句中可用Distinct去掉查询结果中的重复记录。系统默认为All,即输出所有记录。
例6:列出成绩库中所有同学及成绩。
Select distinct 学号,成绩 from cj
2)order by子句
order by子句可用于对查询结果排序。排序关键字可以是字段名或查询结果的序列号,DESC(Descending)表示降序,ASC(Ascending)表示升序。若缺省order by子句排序关键字默认升序,SQL允许多重排序。
例7:查找籍贯是河南的所有同学姓名及年龄,输出结果降序排列。
Select 姓名,籍贯,年龄 from student Where 籍贯=“河南省”order by 年龄 desc
3)between…and…和not between…and…
在where子句中,条件可用between…and…表示二者之间,not between…and…表示不在其间。
例8:查找学生表中年龄介于18和20之间的所有同学,结果按年龄升序排列。
Select 姓名,籍贯,年龄from student Where 年龄 between 18 and 20 Order by 年龄 asc
4)谓词in
在where子句中,条件可以用in表示包含在其后面括号指定的集合中。括号内的元素可以直接列出,也可以是一个子查询模块的查询结果(在嵌套查询中介绍)。
例9:查找学生表中籍贯是云南和贵州的同学。
Select 姓名,性别,籍贯 from student Where 籍贯 in (“云南省”,“贵州省”)
5)like及通配符
在where子句中,条件可以用like指出字符串模式匹配,其后面是字符串常量,其中可使用两个通配符:下划线_代表一个字符,百分号%代表任意多个字符。
例10:查找李姓的所有同学。
Select 姓名,性别,籍贯 from student Where 姓名 like “李%”
6)用as指定查询结果的列名
查询结果的列名一般为字段名,为了方便提示,SQL允许自定义一个新的列名,列名的命名与字段名的命名规则相同,列名与字段名之间用as隔开。
7)为表指定临时别名
有些查询涉及到同一表文件检索两次,就必须引入别名。用户可自行定义别名,只需在from子句中给出,并在select和where子句中用别名字段加以限定。
例11:检索出成绩库中计算机网络和计算机原理成绩都大于70分的同学。
Select x.学号,x.课程,x.成绩,y.课程,y.成绩 from cj x,cj y;
Where x.成绩>70 and x.学号=y.学号 and x.课程="计算机原理"and y.课程="计算机网络"
2.联接查询
前面介绍的简单查询只涉及到一个表,如果查询涉及到两个或多个表,就要进行联接运算。由于SQL是高度非过程化的,所以用户只需在from子句中指出各个表的名称,在where子句中指出联接条件即可,联接运算由系统去完成。
例12:查找出张三的所有成绩。
Select x.学号,x.姓名,y.课程,y.成绩 from student x,cj y;
Where x.学号=y.学号 and x.姓名=“张三”
3.嵌套查询
嵌套是指在Select-from-where查询块内部再嵌入另一个查询块,称之为子查询。由于order by子句是对最终查询结果按顺输出,因此它不能出现在子查询中。
1)用in指出包含在一个子查询模块的查询结果中
在嵌套查询中,where子句的条件常用到谓词in。由于查询的外层用到内层的查询结果,用户事先并不知道内层结果,这里in就不能用一系列or来替代。
例13:查询入团时间在1994年10月以前的所有同学的课程及成绩。
Select * from cj Where 学号 in;
(select 学号 from student where 入团时间 =2
3)存在量词exists和not exists
在嵌套查询钟主查询的where子句中,条件可用exists表示存在。如果子查询结果非空,则满足条件,not exists表示不存在,如果子查询结果为空,则满足条件。
五、数据控制
数据控制是指对数据库各种权限的授予或回收来管理数据库系统。每个用户在系统登录时都要输入用户名和口令,通过了系统的合法性检验后才能使用系统。由于Visual Foxpro 6.0不支持这部分功能,在此略去。
六、小结
通过以上实例我们能够了解到SQL具有高度非过程化、语言一体化、易于使用的特点。它从数据定义开始,能够完成数据的定义、查询、维护和安全控制等一系列操作,是一个功能非常完善的数据库语言,SQL查询可以实现多种查询如简单查询、联接查询、库函数查询等。本文用较为简单的例子进行介绍,以求达到抛砖引玉的作用。
分享到:
相关推荐
本教程“SQL基础教程-Mick-示例程序&习题答案”由Mick编写,旨在为初学者提供一个实用的学习资源,帮助他们快速掌握SQL的核心概念和操作。 1. SQL基础知识: - 数据类型:SQL支持多种数据类型,如整数(INT)、...
《SQL Server 2012 T-SQL基础教程——源码与示例数据库》 本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程...
本教程"SQL基础 (ppt)"是针对初学者设计的,旨在帮助你从零开始掌握SQL的基本概念和常用操作。 首先,我们从01.SQL命令基础.ppt开始。这部分主要介绍了SQL语言的基础构成,包括如何创建数据库、数据表以及对数据的...
本教程基于“SQL基础教程(第2版)”的高清扫描版,将带你深入理解和掌握SQL的基本概念和核心技能。 首先,我们要理解SQL的主要功能。SQL可以用来创建数据库、定义数据结构、插入和更新数据、查询数据以及管理...
本书是畅销书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高...
《SQL基础教程(第二版)_思维导图》是由日本作者MICK编写的一本关于SQL学习的经典著作,虽然这里无法提供完整的书籍内容,但通过提供的思维导图,我们可以深入探讨SQL的基础知识及其在数据库管理中的重要性。...
通过学习这个“SQL基础教程”,你将能够熟练地掌握SQL的基本操作,包括查询、插入、更新和删除数据,创建和管理数据库结构,以及使用视图和存储过程。在实践中不断练习,你将能够更有效地管理和利用数据库资源。
SQL基础是每个数据库管理员、数据分析师和开发者的必备技能。本文将深入讲解SQL的基础知识,包括数据库的基本操作,如创建、查询、更新和删除数据。 首先,我们从创建数据库开始。在SQL中,可以使用`CREATE ...
数据库SQL基础知识是IT领域中至关重要的一环,尤其对于初学者来说,掌握好SQL语言是进入数据管理和分析世界的敲门砖。SQL(Structured Query Language),结构化查询语言,是用于管理和处理关系型数据库的标准语言。...
《SQL基础知识第2版》是一本为新手同学特地准备的入门文档,由公众号【SQL数据库开发】原创出品。 内容涵盖了SQL基础语法的所有内容,不仅有SQL各个语法的解释,而且还附有大量的实例讲解和批注,通俗易懂。此外还...
本教程“SQL基础第二版”旨在帮助新手快速掌握SQL的核心概念和常用命令,为数据库管理和分析奠定坚实的基础。 首先,我们要了解SQL的基本结构。SQL包括四大类型语句:数据查询语言(DQL)、数据操纵语言(DML)、...
这个"SQL基础教程PPT"显然是一份详细的教育资源,旨在帮助初学者理解并掌握SQL的基础知识。以下将对教程可能涵盖的内容进行详细讲解。 1. **SQL简介**:首先,教程可能会介绍SQL的起源、发展以及其在现代信息技术中...
### SQL基础教程知识点详解 #### 一、SQL简介 **SQL**(Structured Query Language),即结构化查询语言,是访问和处理数据库的标准计算机语言。它不仅被广泛应用于各种数据库管理系统中,如MS Access、DB2、...
**SQL基础教程** 本教程是针对SQL初学者的全面指南,涵盖了多个主流数据库系统的使用,包括Oracle Database 12cR1、SQL Server 2014、DB2 10.5、PostgreSQL 9.5.3以及MySQL 5.7。SQL,全称Structured Query ...
这个压缩包文件"经典SQL语句大全+SQL基础教程.rar"包含了关于SQL的重要学习资源,包括"SQL语句教程.doc"和"经典SQL语句大全.doc"两份文档,旨在帮助初学者掌握SQL的基础知识和常见操作。 1. **SQL基础**: - ...
SQL基础学习代码,MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database ...
Oracle Database 11g:SQL 基础I 学生指南第1 册 学完本课后,应能完成下列工作: • 阐述本课程的目标 • 列出Oracle Database 11g 的功能 • 从理论和实际实施两方面讨论关系数据库 • 描述RDBMS 和对象关系数据库...
**PL/SQL基础** PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库中的一个重要组成部分,它结合了SQL的查询能力与结构化编程语言的控制结构,用于开发在Oracle环境中运行的数据库应用...