第十二章 结构化查询语言 SQL简介
SQL( Structured Query Language,结构化查询语言)语言是大多数大型关系数据库管理系统都支持的通用语言。
高度非过程化,只要求用户提出“干什么”,而无需指出“怎么干”。
SQL简介数据定义 (DDL Data Definition Language),
Create,Drop,Alter
数据操纵 (DML Data Manipulation Language):
Insert,Update,Delete
数据查询 (DQL Data Query Language),Select
数据控制 (DCL Data Control Language),Grant,
Revoke
SQL 功能
1.数据库的数据定义语句
(1)建立数据库,数据表 。
命令格式,Create Database (Table) <文件名 >
【 例 12-1】 建立一个学生管理的数据库,取名为 xsgl.dbc
Create Database xsgl
Dir xsgl.*
【 例 12-2】 创立一个表 stud.dbf,该表中含有学号 (C,8),
姓名 (C,10),年龄 (N,3)字段,命令如下:
Create Table stud(学号 C(8),姓名 C(8),年龄 N(3))
Browse
(2)更改表的结构 。
命令形式一:
Alter Table <表名 > Add | Alter [Column] <字段名 ><
字段类型 > [(<字段宽度 >[<小数位数 >])]
本命令用来给表增加一个字段 (Add) 或修改一个已有字段 (Alter)。
命令形式二:
Alter Table <表名 > Drop [Column] <字段名 > |
Rename [Column] <字段名 1> to <字段名 2>
本命令用来删除一个字段或给一个字段改名 。
【 例 12-4】 删除表 stud.dbf中的一个字段,年龄,,其命令为:
Alter Table stud Drop 年龄
【 例 12-3】 将例 2中 stud.dbf中的“学号”改为“编号

Alter Table Stud Rename Column 学号 To 编号
【 例 12-5】 在 stud.dbf中增加一个字段工资:
Alter Table stud Add 工资 N(6,1)
(3)删除表 Drop Table
表的删除可以有多种方式,但用 SQL命令可在 VFP环境中直接发命令进行删除
【 例 12-4】 删除表 stud.dbf
Drop Table stud.dbf
2 数据查询语句 select
数据查询是数据库的重要操作,SQL语言提供了 select
语句用于数据库的查询 。 Select 功能强大,使用灵活,
既可以对单个表进行查询,也可以对多个表进行联合查询 。
【 例 12-7】 有一职工工资表 zggz.dbf,查询该表中,基本工资 >500”的所有记录 。 命令:
select * from zggz where 基本工资 >500
其中,*”表示选所有的字段。如果只要显示其中几个字段,可将字段一一列出,用“,”将字段分开。
3 数据操纵语句 (DML)
( 1) Insert语句
SQL的数据插入 insert语句通常有两种形式 。 一种是插入一条记录,另一种是插入子查询结果,后者一次可以插入多条记录 。
① 插入单个记录 。
Insert Into <表名 > [(<属性列 1>[,<属性列 2>… ])]
Values(<常量 1>[,<常量 2>… ]))
其功能是将新记录插入指定表中 。
【 例 12-8】 在 stud.dbf中插入一条记录:学号 01001001
,姓名 李进,年龄 23,命令如下:
Insert Into Stud(学号,姓名,年龄 ) Value(“01001001”,”
李进,,23)
② 插入多个记录 。
子查询嵌套在 insert语句中,可以将一张表的查询结果输入到另张表中 。 由于涉及到查询,此处不举例 。 其一般形式为:
Insert Into <新表名 >[(属性列 1>[,<属性列 2>…… ] )]
子查询
( 2) Update语句
Update 语句类似于,Replace All …,语句,其作用是对表中的字段值进行更新,一般形式为:
Update <表名 > Set <列名 > =<表达式 > [,<列名 >=<表达式 > [… [,… ] ]
[Where(条件 )]
【 例 12-9】 将 stud.dbf中的年龄字段增加 1:
Update Stud Set 年龄 =年龄 +1
Browse
结果如图 12-5所示,原来李进 23岁,张小明 22岁,每人均增加一岁
【 例 12-10】 用 SQL命令将 stud.dbf中的,工资,字段改为,高数,,并将王姓的同学填上 80分,将李姓的同学填上 81分 。 (执行此例之前,可用 insert命令或其他方式增加几条记录 )
Alter Table Stud Rename 工资 To 高数
Update Stud Set 高数 =80 Where,王,$姓名
Update Stud Set 高数 =81 Where,李,$姓名
Browse
( 3) Delete语句
Delete From <表名 > [Where<条件 >]
其功能是从指定表中删除满足 where子句条件的所有记录 (只作删除标记 )。 如果省略 where子句,则表示删除表中的全部记录 。
【 例 12-11】 对姓名为,李进,的学生作删除标记 。
Set Delete Off &&使作了删除标记的记录能显示
Delete From Stud Where 姓名 =“李进”
4 数据控制语句 (DCL)
( 1) Grant命令:
用于向用户授予操作权限
( 2) Revoke命令收回向用户授予的权限