数据库管理系统中的SQL语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库管理系统中的SQL语言
SQL的9条核心命令动词:
SELECT 数据查询
CREATE/DROP/ALTER 数据定义
INSERT/UPDATE/DELETE 数据操纵
GRANT/REVOKE 数据控制
数据库的定义
SQL的作法:CREATE DATABASE <数据库文件名>
VFP的作法:无直接创建数据库的SQL命令
数据库的管理
1、显示数据库信息
SP_HELPDB [数据库名]
2、配置数据库
SP_DBOPTION['数据库名'][,'选项名'][,'值']
3、重新命名
SP_RENAMEDB'原名','新名'
4、删除数据库
DROP DATABASE 数据库名
数据表的定义
在SQL Server 2000和Visual FoxPro中都可以使用SQL语言定、操作管理和删除数据表
SQL基本表作法:CREATE TABLE [数据库名,[所有者,]]<表名>
VFP基本表作法:CREATE TABLE|DBF <表名>[FREE](<字段名1><类型>(<长度>[,<小数位数>])
数据表的管理
1、查看表的结构
SQL作法:SP_HELP[[@OBJNAME=]NAME]
2、修改表结构
SQL作法:ALTER TABALE 表名
ADD |ALTER COLUMN | DROP COLUMN <字段名1>[类型[(长度)]]
[ NULL] [ NOT NULL]
VFP作法:ALTER TABALE 表名
ADD |ALTER [COLUMN ]<字段名1><类型>(<长度>[,<小数位数>]
[ NULL] [ NOT NULL]
3、表的删除
SQL作法和VFP作法相同
DROP TABALE <表名>
4、数据的插入
SQL作法:INSERT [INTO]<表名>[(列名)] VALUES (表达式)
VFP作法:INSERT INTO <表名>(<字段名1>[,<字段名2>]…)VALUES (<表达式1>,<表达式2>]…)
5、数据的更新
SQL作法:UPDATE <表名>SET 列名=<表达式| DEFAULT | NULL>[,…]
[WHERE <条件>]
VFP作法:UPDATE [库名!] <表名>SET 字段=<表达式>[,…]
[WHERE <条件>]
6、数据的删除
SQL作法:DELETE [FROM] <表名>[WHERE <条件>]
VFP作法:DELETE FROM <表名>[WHERE <条件>]
索引的建立与删除
索引的创建
SQL作法:CAEATE [UNIQUE] [ CLUSTERED] INDEX <索引名>ON <表名>
VFP作法:无创建索引的SQL语句
索引的删除
SQL作法:DROP INDEX <表名>. <索引名>[,…]
VFP作法:无
视图的定义与删除
定义视图
SQL作法:CREATE VIEW <视图名>[(列名1, 列名2[,…])]
[WITH ENCRYRTION]
AS查询语句
[WITH CHECK OPTION]
VFP作法:CREATE VIEW <视图名>[(列名[,列名…])] AS 任意SELECT 语句
视图的删除
SQL作法:DROP VIEW <视图名>[,…]
VFP作法:DROP VIEW <视图名>
SQL语言的数据查询功能
SQL中SELECT作法:SELECT [ALL | DISTINCT] <[表名.]列名表达式| [表名.] *>[ AS 列标题] [,…] FROM <表名或视图名>[,…]
[WHERE <条件表达式>]
VFP中SELECT作法:SELECT [ALL | DISTINCT] [别名.]<字段表达式>[ AS 列名][,…]
FROM [库名!] <表名或视图名>[ [AS] 本地别名]
简单查询
1、查询单表所有字段
SQL作法和VFP作法相同
SELECT *FROM 表名
2、查询数据表的指定列
EG:
在QL Server 2000中查找表STUDENT1中XH、XM、CJ三列的全部行,并将CJ列用“成绩”标题表示SQL作法:SELECT XH、XM、CJ AS 成绩FROM STUDENT1
在Visual FoxPro中,查询课程KC的KM、XF字段的全部记录,并将KM字段用“课程名”表示
VFP作法:SELECT KM AS 课程名,XF FROM KC
3、使用列表达式查询
EG:
在QL Server 2000中,查询表STUDENT1中XM列及4门课程的平均成绩,并且查询每人的出生年份
SQL作法:SELECT XM ,ROUND (CJ/4,1) AS 平均成绩, YEAR (GETDATE ())-NL AS 出生年份FROM STUDENT1
在Visual FoxPro中,查询课程表KC的KH、KM、XF的全部记录,并将XF字段值加1用“总学分”表示
VFP作法:SELECT KH、KM、XF+1 AS 总学分FROM KC
4、不输出重复行的查询
EG:
在QL Server 2000中,查询表STUDENT1全部行的XB和NL列值,再查询不符合重复行的情况
SQL作法:SELECT XB,NL FROM STUDENT1
在Visual FoxPro中,查询课程表KC的XF字段的全部记录,不显示重复记录
VFP作法:SELECT DISTINCT XF FROM KC
5、查询结果排序输出
EG:
在QL Server 2000中,查询表STUDENT1时要求先按年龄由小到大,再按总平均成绩由大到小显示学生信息
SQL作法:SELECT *FROM STUDENT1 ORDER BY NL,CJ/4 DESC
在Visual FoxPro中,查询课程表KC中XF按降序排列,KH按升序排列后的的结果
VFP作法:SELECT *FROM KC ORDER BY XF DESC,KH
6、只输出部分行的查询
EG:
在QL Server 2000中,查询表STUDENT1时要求先按年龄由小到大排序后显示前3条学生信息,或显示前60%记录SQL作法:SELECT TOP *3 FROM STUDENT1 ORDER BY NL
SELECT TOP 60 PERCENT *FROM STUDENT1 ORDER BY NL
在Visual FoxPro中,只显示KC 表排序后的70%的记录,再显示前3条记录
VFP作法:SELECT *FROM KC ORDER BY XF DESC TOP 70 PERCENT
SELECT *FROM KC ORDER BY XF DESC TOP 3
7、满足逻辑条件的查询
EG:
在QL Server 2000中,查询表STUDENT1中总成绩大于等于300分的男学生
SQL作法:SELECT *FROM STUDENT1 WHERE CJ>=300 AND XB='男'
在Visual FoxPro中,查询课程表KC中XF字段值不为5的全部记录
VFP作法:SELECT *FROM KC WHERE XF!=5
8、查询含有空值NULL的记录
语法格式:IS NULL / IS NOT NULL
EG:
在QL Server 2000中,查询表STUDENT1中性别XB为空的行
SQL作法和VFP作法相同:
SELECT *FROM STUDENT1 WHERE XB IS NULL
9、控制输出方向
EG:
在QL Server 2000中,查询表STUDENT1中只有女生数据的子集作为查询结果备份
SQL作法:SELECT *INTO STUDENT_A FROM STUDENT1 WHERE XB='女'
在Visual FoxPro中,查询KC表所有字段的全部记录,并用打印机方式输出
VFP作法:SELECT *FROM KC TO PRINTER
10、使用统计(聚合)函数查询
EG:
在QL Server 2000中,在表STUDENT按NL平均值和CJ总分统计查询