资源描述
简单查询由SELECT和FROM构成的无条件查询,或由SELECT、FROM和WHERE构成的条件查询。 一般格式: SELECT DISTINCT 字段名表 FROM 数据库名!表名 SELECT DISTINCT 字段名表 FROM 数据库名!表名 WHERE 条件 ( DISTINCT短语功能是去掉重复值)select 工资 from 职工select distinct 工资 from 职工select * from 仓库select 职工号 from 职工 where 工资1230select distinct 仓库号 from 职工 where 工资1210select 职工号 from 职工 where 工资1230)and(职工.仓库号=仓库.仓库号)select 职工号,城市 from 职工,仓库 where (面积400)and(职工.仓库号=仓库.仓库号)嵌套查询查询结果出自一个表但条件却涉及另外的多个相关表。 一般格式: SELECT DISTINCT 字段名表 FROM 数据库名!表名 WHERE 字段名 IN (SELECT 字段名 FROM 另一表名)select 城市 from 仓库 where 仓库号 in;(select 仓库号 from 职工 where 工资=1250)select * from 仓库 where 仓库号 not in;(select 仓库号 from 职工 where 工资=1210)select * from 仓库 where 仓库号 not in;(select 仓库号 from 职工 where 工资=12 OR =12 AND =12 OR 年龄=12 AND 年龄=46 2字符串匹配查询可以使用LIKE运算符。 select * from 供应商 where 供应商名 like “%公司” 通配符“%”表示0个或多个字符,另外还有一个通配符“_”表示一个字符或汉字。 3SQL中“!=”及“NOT”的应用。 select * from 供应商 where 地址!=北京select * from 职工 where 工资 not between 1220 and 1240 2008年4月份考试试题:(8)在SQL的WHERE子句的条件表达式中,字符串匹配(模糊查询)的运算符是 LIKE 。排序将查询结果排序可以使用ORDER BY短语,格式如下: ORDER BY 字段名1ASC|DESC,字段名2ASC|DESC select * from 职工 order by 工资select * from 职工 order by 仓库号,工资简单的计算查询SQL语言功能完备,它不仅具有一般的检索能力,而且还有计算方式的检索,用于计算机检索的函数有: COUNT计数 SUM求和 AVG计算平均值 MAX不最大值 MIN求最小值这些函数可以用在SELECT短语中对查询结果进行计算。select count(distinct 地址) from 供应商select count(*) from 供应商select sum(工资) from 职工select sum(distinct 工资) from 职工select sum(工资) from 职工 where 仓库号 in;(select 仓库号 from 职工 where 城市=北京 or 城市=上海)select avg(面积) from 仓库 where 仓库号 not in;(select 仓库号 from 职工 where 工资=1210)select avg(面积) from 仓库 where 仓库号 not in;(select 仓库号 from 职工 where 工资=2利用空值查询(IS NULL)select * from 订购单 where 供应商号 is nullselect * from 订购单 where 供应商号 is not null 2006年9月份考试试题:(10)在 SQL 语句中空值用【10】表示。(IS NULL) 2007年9月份考试试题:(6)如下命令查询雇员表中“部门号“字段为空值的记录SELECT * FROM 雇员WHERE部门号【6】 。 (IS NULL) 2008年4月份考试试题:(11)在SQL中,要查询表S在AGE字段上取空值的记录,正确的SQL语句为: SELECT * FROM S WHERE AGE IS NULL 别名与自联接查询SQL中允许在FROM短语中为关系名定义别名。 select 供应商名 from 供应商,订购单,职工,仓库;where 地址=北京 and 城市=北京;and 供应商.供应商号=订购单.供应商号;and 订购单.职工号=职工.职工号;and 职工.仓库号=仓库.仓库号select 供应商名 from 供应商 s,订购单 p,职工 e,仓库 w;where 地址=北京 and 城市=北京;and s.供应商号=p.供应商号;and p.职工号=e.职工号;and e.仓库号=w.仓库号以上的操作中别名不是必须的,但在关系的自联接操作中,别名是必不可少的。 SQL的自联接是将同一关系与其自身进行联接。这种联接是根据一个表中出自同一值域的两个不同字段进行一对多联系。 实例说明:有这样一个名称为雇员的关系: select s.雇员姓名, 领导 ,e.雇员姓名 from 雇员 s,雇员 e;where s.雇员号=e.经理内外层互相关嵌套查询是一种内外层互相关的查询,这种查询内层查询的条件需要外层查询提供,而外层查询的条件需要内层查询的结果。 以前的我们学的是外层查询需要内层查询提供条件值,而内部查询和外部查询无关。select out.职工号,out.供应商号,out.订购单号,out.订购日期,out.总金额;from 订购单 out where 总金额=;(select max(总金额) from 订购单 inner1;where out.职工号=inner1.职工号)使用量词和谓词的查询1. 量词查询格式: ANY|SOME|ALL(子查询)实例说明:select distinct 仓库号 from 职工 where 工资=any;(select 工资 from 职工 where 仓库号=wh1)select distinct 仓库号 from 职工 where 工资=;(select min(工资) from 职工 where 仓库号=wh1)select distinct 仓库号 from 职工 where 工资=all;(select 工资 from 职工 where 仓库号=wh1)select distinct 仓库号 from 职工 where 工资=;(select max工资) from 职工 where 仓库号=wh1)select distinct 仓库号 from 职工 where 工资=;(select max(工资) from 职工 where 仓库号=wh1) 2. 谓词查询格式: NOT EXISTS(子查询)实例说明:select * from 仓库 where not exists;(select * from 职工 where 仓库号=仓库.仓库号)select * from 仓库 where not in;(select 仓库号 from 职工)select * from 仓库 where 仓库号 not in;(select 仓库号 from 职工)select * from 仓库 exists;(select * from 职工 where 仓库号=仓库.仓库号)select * from 仓库 where exists;(select * from 职工 where 仓库号=仓库.仓库号)select * from 仓库 where 仓库号 in;(select 仓库号 from 职工)超联接查询前面我们学的联接只是查询出满足联接条件的信息,而超联接查询功能更加强大,可以根据需要查询出更多联接情况的信息,有四种联接情况的格式: 1普通联接(内部联接) 基本格式:SELECT FROM 左表 INNER JOIN 右表 ON 联接条件 WHERE 其它条件 select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 join 职工;on 仓库.仓库号=职工.仓库号select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 inner join 职工;on 仓库.仓库号=职工.仓库号select 仓库.仓库号,城市,面积,职工号,工资;from 仓库,职工 where 仓库.仓库号=职工.仓库号2左联接 基本格式:SELECT FROM 左表 LEFT JOIN 右表 ON 联接条件 WHERE 其它条件 除满足联接条件的记录出现在查询结果中外,左表中不满足联接条件的记录也出现在查询中,而相关的右表查询字段值是NULL。 例:select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 left join 职工;on 仓库.仓库号=职工.仓库号3右联接 基本格式:SELECT FROM 左表 RIGHT JOIN 右表 ON 联接条件 WHERE 其它条件 除满足联接条件的记录出现在查询结果中外,右表中不满足联接条件的记录也出现在查询中,而相关的左表查询字段值是NULL。 例:select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 right join 职工;on 仓库.仓库号=职工.仓库号4全联接 基本格式:SELECT FROM 左表 FULL JOIN 右表 ON 联接条件 WHERE 其它条件 查询的左右表各个字段的所用值全部显示,有满足联接条件的记录在同行输出,不满足联接条件的字段相应列将显示为NULL。 例: select 仓库.仓库号,城市,面积,职工号,工资;from 仓库 full join 职工;on 仓库.仓库号=职工.仓库号注意:超联接查询中多个表联接时,要注意FROM后中间表是连接前后表的纽带必是与前后表都有联接关系的,另外FROM后表名的顺序与条件ON的顺序是相反的。 例:select 仓库.仓库号,城市,供应商名,地址;from 供应商 join 订购单 join 职工 join 仓库;on 职工.仓库号=仓库.仓库号;on 订购单.职工号=职工.职工号;on 供应商.供应商号=订购单.供应商号集合的并运算SQL支持集合的并(UNION)运算,可以将具有相同查询字段个数且对应字段值域相同的SQL查询语句用UNION短语联接起来,合并成一个查询结果输出。 select * from 仓库 where 城市=北京;union;select * from 仓库 where 城市=上海 2006年4月份考试试题:(11)SQL支持集合的并运算,运算符是 【11】 。 (UNION)Visual FoxPro中SQL SELECT的几个特殊选项1显示排序查询中的部分结果 基本格式: SELECT TOP 数字 PERCENT FROM 表名 WHERE ORDER BY TOP短语必须与ORDER BY短语同时使用才有效。 “数字”在没PERCENT时是1至32767间的数,有PERCENT时是0.01至99.99间的实数。 select * top 3 from 职工 order by 工资 descselect * top 30 percent from 职工 order by 工资 2007年4月份考试试题:(11)“歌手”表中有“歌手号”、“姓名”和“最后得分”三个字段,“最后得分”越高名次越靠前,查询前10名歌手的SQL语句是 SELECT * 【11】 FROM 歌手 ORDER BY 最后得分 【12】 (TOP 10)、(DESC)2将查询结果存放到数组中 在SQL查询语句的尾部添加INTO ARRAY 可以将查询的结果放入指定的数组中。此操作的主要目的通常是将一个表中的查询数据添到另一个已存在的表中。 select * from 职工 into array tmp 3将查询结果存放到临时表中 在SQL查询语句的尾部添加INTO CURSOR 可以将查询的结果放入指定的临时表中。此操作的通常是将一个复杂的查询分解,临时表通常不是最终结果,可以接下来对临时表操作得到最终结果。生成的临时表是当前被打开的并且是只读的,关闭该文件时将自动删除。 select * from 职工 into cursor tmp4将查询结果存放到永久表中 在SQL查询语句的尾部添加INTO DBF|TABLE 可以将查询的结果放入新生成的指定表中。 select * top 3 from 职工 into table highsal order by 工资 desc 2006年9月份考试试题:(9)在 SQL SELECT 语句中为了将查询结果存储到永久表应该使用【9】短语。(INTO TABLE 或 INTO DBF)5将查询结果存放到文本文件中 在SQL查询语句的尾部添加TO FILE 可以将查询的结果放入新生成的指定.TXT文件中。 select * top 3 from 职工 to file tmp order by 工资 desc 6将查询结果直接输出到打印机 在SQL查询语句的尾部添加TO PRINTER PROMPT可以将查询的结果直接输出到打印机。 select * top 3 from 职工 to printer prompt order by 工资 desc7.将查询结果直接输出到屏幕使用短语TO SCREENselect * from 职工 to screen插入数据Visual FoxPro中有标准格式和特殊格式两中。标准格式: INSERT INTO 表名(字段名表) VALUES(插入值表达式1,插入值表达式2,) 例:insert into 职工(职工号,仓库号,工资) values(e9,wh9,1800)特殊格式: INSERT INTO 表名 FROM ARRAY 数组名 | FROM MEMVAR FROM ARRAY 数组名 说明从指定的数组中插入记录值 FROM MEMVAR 说明根据同名的内存变量来插入记录值,如果同名的变量不存在,那么相应的字段为默认值或空值。更新数据格式:UPDATE 表名 SET 字段名1=表达式1 ,字段名2=表达式2 WHERE 条件例:update 职工 set 工资=工资*1.10 where 仓库号=wh9“ 2006年4月份考试试题:(31)要使”产品”表中所有产品的单价上浮8,正确的SQL命令是A)UPDATE 产品 SET 单价=单价+单价*8 FOR ALL B)UPDATE 产品 SET 单价=单价*1.08 FOR ALLC)UPDATE 产品 SET 单价=单价+单价*8 D)UPDATE 产品 SET 单价=单价*1.08删除数据格式:DELETE FROM 表名 WHERE 条件是逻辑删除指定表中满足条件的记录,如果 要物理删除记录需要继续使用PACK命令。delete from 职工 where 仓库号=wh94.4.1 表的定义 一般格式:CREATE TABLE|DBF 表名(字段1名 类型(宽度)NULL|NOT NULLCHECK 规则ERROR 提示信息DEFAULT 默认值PRIMARY KEY|UNIQUE, 字段2名 类型(宽度),) create database 订货管理1create table 仓库1(;仓库号 c(5) primary key,;城市 c(10)表的删除一般格式:DROP TABLE 表名drop table 仓库1delete database 订货管理1 2005年4月份考试试题:(26)在Visual FoxPro中,删除数据库表S的SQL命令是_。A)DROP TABLE SB)DELETE TABLE SC)DELETE TABLE S.DBFD)ERASE TABLE S表结构的修改格式1:ALTER TABLE 表名 ADD|ALTER COLUMN 字段名1 类型(宽度,小数位) NULL|NOT NULLCHECK 规则表达式 ERROR 提示信息DEFAULT 默认值 PRIMARY KEY|UNIQUE 格式2:ALTER TABLE 字段名1 ALTER COLUMN 字段名2 NULL|NOT NULL SET DEFAULT 默认值SET CHECK 规则 ERROR 提示信息 DROP DEFAULTDROP CHECK 格式3:ALTER TABLE 表名1 DROP COLUMN 字段名 RENAME COLUMN 字段名1 TO 字段名2 SET CHECK 规则 ERROR 提示信息 DROP CHECK ADD PRIMARY KEY 字段表达式 TAG 索引名 DROP PRIMARY KEY ADD UNIQUE 字段表达式 TAG 索引名 DROP UNIQUE TAG 索引名 ADD FOREIGN KEY 字段表达式 TAG 索引名 REFERENCES 表名2 TAG 索引名 DROP FOREIGN KEY TAG 索引名alter table 仓库1 add 面积 idisp strualter table 仓库1 drop column 面积disp stru建立视图 视图是根据对表的查询定义的,命令格式是: CREATE VIEW 视图名 AS SELECT查询语句 例:create view e_w as;select 职工号,仓库号 from 职工select * from e_wcreate view v_sample as;select out.职工号,out.供应商号,out.订购单号,out.订购日期,out.总金额;from 订购单 out where 总金额=;(select max(总金额) from 订购单 inner1;where out.职工号=inner1.职工号)select * from v_samplecreate view e_emp as;select 职工号,工资,城市 from 职工,仓库;where 职工.仓库号=仓库.仓库号create view v_sal as;select 职工号,工资 as 月工资,工资*12 as 年工资 from 职工删除视图 首先打开它的数据库,然后使用下面的命令可以删除视图:DROP VIEW drop view v_empdrop view e_emp
展开阅读全文