220 likes | 378 Views
第五章结构化查询语言 SQL. 主讲人 于洪奎. 第五章 学习内容. 知识点. 知识点 1 : 几个特殊选项. 显示部分结果 ( 与 ORDER BY 短语同时使用 ) : TOP nExpr [PERCENT] 将查询结果存放在数组中: INTO ARRAY ArrayName 将查询结果存放在临时文件中 :INTO CURSOR CursorName 将查询结果存放到永久表中: INTO DBF|TABLE TableName 将查询结果存放到文本文件中: TO FILE FileName [ADDITIVE]
E N D
第五章结构化查询语言SQL 主讲人 于洪奎
知识点1:几个特殊选项 • 显示部分结果(与ORDER BY短语同时使用):TOP nExpr [PERCENT] • 将查询结果存放在数组中:INTO ARRAY ArrayName • 将查询结果存放在临时文件中:INTO CURSOR CursorName • 将查询结果存放到永久表中:INTO DBF|TABLE TableName • 将查询结果存放到文本文件中:TO FILE FileName [ADDITIVE] • 将查询结果直接输出到打印机:TO PRINTER [PROMPT]
例如: • select * top 5 from 职工档案 into table new order by 职工编号
知识点2:插入 • 格式1:INSERT INTO dbf_name[(fname1[,fname2,...])] VALUES(eExpression1[,eExpression2,...]) • INSERT INTO dbf_name说明向由dbf_name指定的表中插入记录,当插入的不是完整的记录时,可以用fname1,fname2,...指定字段;VALUES(eExpression1[,eExpression2,...])给出具体的记录值。 • 例如: • insert into 部门(部门编号, 部门名称) values("301","生物系")
格式2:INSERT INTO dbf_name FROM ARRAY ArrayName|FROM MEMVAR • FROM ARRAY ArrayName说明从指定的数组中插入记录值;FROM MEMVAR说明根据同名的内存变量来插入记录值,如果同名的变量不存在,那么相应的字段为默认值或空值。
例1: • dimension dd(10)dd(1)={^2003-1-1}dd(2)="10033"dd(3)=500……insert into 职工工资 from array dd
例2: • m.年月={^2003-1-1}m.职工编号="10055"m.基本工资=600insert into 职工工资 from memv • 注意:若某一个表定义了主索引或候选索引后,只能使用此法插入记录
知识点3:更新 • UPDATE TableName • SET Column_Name1=eExpression1[,Column_Name2=eExpression2...] • WHERE Condition • 使用where子句以更新满足条件的一些记录的字段值,并且一次可更新多个字段;若不是用WHERE子句,则更新全部记录。 • 例如: • update 部门 set 部门负责人="李花" where 部门编号="301"
删除 • DELETE FROM TableName[WHERE Condition] • 例如: • delete from 部门 • delete from 部门 where 部门编号="10_"
知识点4:表的定义 • CREATE TABLE|DBF TableName1 • (FieldName1 FileldType[(nFieldWidth)] [NULL|NOT NULL] • [CHECK lExpression1 [ERROR cMessageText1]] • [DEFAULT eExpression1] • [PRIMARY KEY |UNIQE] • [REFERENCES TableName2[TAG TagName1]] • [,FIeldName2…] • [,PRIMARY KEY eExpression2 TAG TagName2 • |,UNIQE eExpression3 TagTagName3] • [,FOREIGN KEY eExpression4 TAG TagName4[NODUP] • REFERENCES TablesName3[TAG TagName5]] • [,CHECK lExpression2[ERROR cMessage2]]) • |FROM ARRAY ArrayName
例如建立数据库:create database student • 例如建立数据表: • create table score(sno c(10) primary key, name c(8), English n(5,1))
知识点5:表的删除 • DROP TABLE table_name • 注意:删除数据库中的表时,最好该数据库处于打开状态。
知识点6:表结构的修改 • 1、添加新字段或修改已有字段 • ALTER TABLE TableName1 ADD|ALTER[column] FieldName1 • FieldType [(nFieldWidth[,nPrecision])] [NULL|NOT NULL] • [CHECK lExpression1 [ERROR cMessageText]][DEFAULT eExpression1] • [PRIMARY KEY|UNIQE] • [REFERENCES TableName2 [TAG TagName1]]
2、定义、修改和删除有效性规则和默认值定义2、定义、修改和删除有效性规则和默认值定义 • ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL|NOT NULL] • [SET DEFAULT eExpression2] • [SET CHECK lExpression2 [ERROR cMassageText2]] • [DROP DEFAULT] [DROP CHECK]
3、删除字段、修改字段名,定义、修改和删除表一级的有效性规则3、删除字段、修改字段名,定义、修改和删除表一级的有效性规则 • ALTER TABLE TableName1 [DROP|COLUMN]FieldName3] • [SET CHECK lExpression3 [ERROR cMassageText3] • [DROP CHECK] • [ADD PRIMARY KEY eExpression3 TAG TagName2 [FOR lExpression4]] • [DROP PRIMARY KEY] • [ADD UNIQUE eExpression4 [TAG TagName3 [FOR lExpression5]]] • [DROP UNIQUE TAG TagName4] • [ADD FOREIGN KEY [eExpression5] TAG TagName4 [FOR lExpression6] • REFERENCES TableName2 [TAG TagName5]] • [DROP FOREIGN KEY TAG TagName6 [SAVE]] • [RENAME COLUMN FieldName4 TO FieldName5]
知识点7:视图的定义 • 在Visual FoxPro中视图是一个定制的虚拟表。在关系数据库中,视图也称作窗口,可以把它看作是从表中派生的虚表。 • 1)可以是本地的、远程的或带参数的。 • 2)视图不独立存在,依赖于表,可引用一个或多个表,或者引用其他视图。 • 3)视图是可更新的。 • 4)限定和简化对数据的访问 • 命令格式:CREATE VIEW view_name AS select_statement
1.从单个表派生出的视图 • create view v_zg1 as select * from 职工档案 where 性别="女" • 注意:当视图从单个表导出时,可进行插入和更新操作,但不能进行删除操作。
2.从多个表派生出的视图 • create view v_zg2 as select 部门.部门名称,职工档案.姓名, 职工档案.性别, 职工档案.出生日期 from 部门, 职工档案 where 部门.部门编号=职工档案.部门编号 • 注意:当视图从多个表导出时,插入、更新和删除操作都不允许进行。
3.视图中的虚字段 • 虚字段是计算得来的一些算术表达式或函数,并不存储在表内。 • 4.视图的删除 • DROP VIEW <视图名>
选择题12 • 如果学生表STUDENT是使用下面的SQL语句创建的。 • CREATE TABLE STUDENT(SNO C(4) PRIMARY KEY NOT NULL,SN C(8),SEX C(2),AGE N(2) CHECK(AGE>15 AND AGE<30)) • 下面的SQL语句中,可以正确执行的是——。 • A) • B) • C) • D)