sql例子2007
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL 命令练习例子
1、建表 ( 建表后 ,可用 modify structure 修改表结构命令 来看表的结构 ) 前提条件 :create database SQLLX && 建立数
据库 SQLLX ,该数据库是打开的 create table zgda1.dbf ;
(编号c(6) not null,姓名c(6),年龄n(2,0),工资f(6,2),获奖次数I,出生日期d,工作时间t,婚否I,简历m,照片g)
c(6) not null,姓名 c(6),年龄 n(2,0),工资 f(6,2))
create table zgda3.dbf (编号 c(6) not null primary key,姓名 c(6),年龄 n(2,0),工资 f(6,2))
create table zgda3.dbf (编号 c(6),姓名 c(6),年龄 n(2,0) check 年龄 >0 error "年龄要大于 0" default 30) create table zgda4 free (编号 c(6),姓名 c(6),年龄 n(2,0)) &&zgda4 是自由表 注意:(表 zgda1 ---- zgda4 是数据库表,并自动加到当前数据库 SQLLX 中) (1) c n f 类型需要指定宽度 n f b 类型要指定精度 (2) UNIQUE 候选索引 primary key 主索引
2 、 alter table 修改表结构
alter table zgda3 add column 性别 c(2) check 性别="女" or 性别="男" error "性别只能为男或者女 " default "男" 功能:添加性别字段并设置有效性规则,默认值为男。
c(4) default "女" && 无有效性规则,默认值为女
c(4) check 性别="女" or 性别="男" error " 性别只能为男或者女 " default "女" drop default &&
删除性别字段的默认值 drop check && 删除性别字段的有效性规则 set check 性别="男" or 性别="女" error " 男或女?"
set default "男" && 设置或更改性别字段的默认值 && 删除性别字段 && 姓名字段改名为 name
alter table zgda3 rename column name to NM 3、 d rop table zgda4 &&删除自由表 zgda4 (请用close database 把数据库关掉,否则删除不掉) 4、 i nsert into: open database SQLLX
&& 请打开数据库 SQLLX
create table zgda4.dbf (编号 c(6),姓名 c(6),年龄 n(2,0),出生日期 d,婚否 L)
insert into zgda4(编号,姓名,年龄,出生日期,婚否)values ("990011","张三",35,{X975-7-25},.t.) insert into zgda4(编号,姓名,年龄,出生日期,婚否)values("990012","李四",40,{A 1966-7-25},.f.) insert into zgda4(编号,姓名,年龄,出生日期,婚否)values("990013","王五",46,{人1960-7-25},.1) 5、 d elete
dele from zgda4 where 年龄 >=40 && 用 list 命令显示记录,可看到 2 条记录加上了删除标记。
6、 u pdate
update zgda4 set 年龄=年龄+1,出生日期 =出生日期 -1
&& 没有 where 条件,则更新全部记录 update zgda4 set 年龄=年龄+1,出生日期=出生日期-1 where 婚否=.t. &&更新已婚记录
7、 select 查询(运行下面的语句,说出其含义 )
select * from zgda select all 职称 from zgda
&&all 可省略,查出所有记录的职称字段值
select distinct 职称 from zgda && 查出所有记录的职称字段值,去掉重复行。
select 姓名 ,性别,年龄,职称 from zgda select top 3 * from zgda order by 编号 desc
&& 查编号最大的前 3 条记录
create table zgda2.dbf (编号
create table zgda3.dbf (编号 c(6),姓名 c(6),年龄 n(2,0) check 年龄>0 error "年龄要大于 0" default 30) 性别 性别 性别 性别 性别 性别 性别 to name alter table zgda3 alter column alter table zgda3 alter column alter table zgda3 alter column alter table zgda3 alter column alter table zgda3 alter column alter table zgda3 alter column alter table zgda3 drop column alter table zgda3 rename 姓名
select * from zgda where select * from zgda where select * from zgda where select * from zgda where 性别='女'into table dagirl 性另 U ='男'into cursor temp 性别='男'into array AA 性别='男'to file da additive &&以追加方式存于文本文件 &&查女生记录,存于表 dagirl 中(use dagirl/list 看结果) &&查男生记录,存于临时表 temp 中(list 看结果) &&查男生记录,存于数组
AA 中(display memory 看结果)
da.txt 中(无additive,覆盖方式)
将上一条语句改为: to screen &&结果送到主屏幕;to printer &&结果送到打印机
select 供应商号,供应商名,地址from 供应商 where 供应商号 in (select 供应商号 from 订购单 where 职工号
="E3"
select * from 供应商 g where exist (select * from 订购单
查询出没有给职工 E3发订购单的供应商的信息.
d wher
e d.职工号=“ E3
and d.供应商号=g.供应商号) select * from 供应商 g where not exist (select * from 订购单 d where d.职工号=“ E3” and d.供应商号=g.供应商号)
上机调试教材中的下列例子:
(所用的源文件在教材中光盘中的 vfpl 文件夹,拷贝后要去掉”只读”属性)
13.9---13.10---13.11---13.12---13.13---13.14----13.24---13.25---13.26---13.27---13.29---13.30---13.35
select top 50 percent * from zgda order by 年龄 desc && 查年龄最大的前一半记录 select 姓名 性别,年龄 职称from zgda where 性别="男"号 && 等同于:where 性别like ”男”
select 姓名 性别,年龄,工资,职称from zgda where 姓名 ="刘"or 姓名="王” select 姓名,性别,年龄,职称from zgda where 职称in (”讲师","副教授") select 姓名性别,年龄职称from zgda where 职称="讲师” or 职称="副教授” 注:in 运算符:判断表达式的值是否等于指定列表中几个值中的一个
select 职称,avg (年龄)from zgda group by 职称 &&查每种职称的职工平均年龄
select 职称,avg (年龄)平均年龄from zgda group by 职称 &&同时给表达式 avg (年龄)命名为 平均年龄 ***将上面的两条语句中的
avg 换成sum 后,再运行,看功能是什么?
select 职称,avg (年龄)from zgda group by 职称 having avg (年龄)>40 &&平均年龄>40的分组会显示
select max (年龄)from zgda
&&查表中最大年龄值,最小用 min
select 姓名性别,年龄职称
from zgda where 职称="讲师” order by 性别 asc,年龄 desc select 姓名性别,年龄,职称 select 姓名,性别,年龄,职from zgda where from zgda where select 姓名性别,年龄职称 from zgda where 年龄 between 40 and 50
&& 包括 40 和 50 年龄>=40 and 年龄 <=50 &&与上一句等价
年龄not between 40 and 50
&&年龄不在 40和50范围内
select * from zgda where 姓名 like "刘 %" &&查询所有姓刘的记录
select * from zgda where 姓名 like "王_" select
姓名 性别,年龄职称from zgda where &&查询所有姓王且姓名只有两个字符的记录 姓名not like "王%"
&&查询所有不姓王的记录
where 后面的特殊运算符( in ;between and ;like ) select 姓名性别,年龄职称
from zgda where 姓名 in ("刘","王”)
&&查姓刘和姓王的记录,与下一语句等价。
select 职称,max (年龄)from zgda group by 职称 select count (*) 职工人数 from zgda select count (性另U ) from zgda
select count (distinet ,性另U ) from zgda select 性另U ,count (*) 职工人数 from zgda group
by 查询去向:
&&查每种职称的职工最大年龄,最小用 min &&查表中人数,职工人数为自定义别名 &&查性别字段值的行数(计重复值)
结果为:8
&&查性别字段值的行数(不计重复值)结果为: 2 性别 &&查男女职工人数,职工人数为自定义别名
连接查询:
查询出给职工E3发订购单的供应商的信息.(下面的几条语句功能相同)
select g.供应商号,供应商名,地址from 供应商 g,订购单 d where d.供应商号=g.供应商号 and 职工号="E3" select g.供应商号,供应商名,地址from 供应商 g inner join 订购单 d on d.供应商号=g.供应商号 where 职工号
上机考试基本操作题知识点分布
*****select
注:关于下列知识点的操作必会
select * from zgda where姓名is null &&选出zgda表中姓名为空的记录
注:表中空值(NULL )的输入方法,在浏览(browse命令)窗口中,选中要输入的字段,用组合键ctrl+0来输入。
(ctrl键和数字0键)
补充知识点
工作区:vfp将内存划分多个区域
工作区标识:
1、工作区号:1开始----32767结束
select 32767
select 0 &&选择号最小的空闲工作区,注意:没有0号工作区
2、工作区别名:
a)系统默认指定:
*1---10 分别为A---J;
*11---32767 分别为W11---W32767
sele 1=======sele a
sele 2=======sele b
sele 12=====sele w12
b)用户自定义别名:
sele 1
use da.dbf alias ok
sele 1====sele a====sele ok
sele 2
use zg.dbf && 别名zg
sele 2===sele b====sele zg
*用户没有指定别名时:工作区中打开的表名,为工作区的别名。
*用户指定别名时,要用用户指定的别名。
3、一个工作区同一时刻只能打开一个表,自动关闭前一个表。
4、一个表可以在多个工作区打开。
use zgda again
5、访问别名工作区中打开表的字段:别名.字段名或者别名->字段名
数据比较规律:
1)数值和货币:数越大,值越大。
如:1000>800 $90>$10
2)日期:未来>历史
3)逻辑:.t.>.f.
4)字符串比较:依次对应比较两个串的字符,直到比较出结果。
如:"abc">"ab"
"abc">"aBc"
***字符的比较规律:
⑻ASCII字符:比较字符的ASCII码值的大小。
空格<0-9<A-Z<a-z
(b)汉字是按照汉字的机内码值比较的,即比较汉字的拼音字符串的大小。
注:上述字符的比较规律的前提是设置比较序列为机内码方式,设置的命令为:set collate to machine”或者依次单击“工具”菜单/选项/数据/排序序列/选择“ machine”。