第一篇:实验四SQL语言
实验四 SQL语言——数据更新操作
2007-06-16 01:12:44|分类: 课程作业 |标签:数据更新操作sql语言|字号大中小 订阅
实验四 SQL语言——数据更新操作
三、实验条件与环境
1.通用PC机
2.PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台 3.PC机还须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)
4.最好有一台公用的SQL Server 2000 服务器
四、实验目的1.通过上机实验进一步加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌
握
2.通过上机实验掌握单个元组插入操作的实现过程
3.通过上机实验掌握多个元组插入操作的实现过程
4.通过上机实验掌握单个元组修改操作的实现过程
5.通过上机实验掌握多个元组修改操作的实现过程
6.通过上机实验掌握单个元组删除操作的实现过程
7.通过上机实验掌握多个元组删除操作的实现过程
8.通过上机实验加深对更新操作时数据库中数据一致性问题的了解
9.通过上机实验加深对约束条件在数据更新操作执行中的作用问题的了解
五、实验要求
1.本实验所有实验内容要求在规定时间(2课时)内完成2.实验内容中涉及到的各更新操作均通过SQL语言来实现
3.本实验中各操作内容的执行均会更新当前数据库,为便于下一实验内容的顺利执行,请在每成功完成一个实验内容后重新导入初始状态下的实验数据库
4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交
六、实验内容:
1.在S表中插入元组“s6,华誉,40,广州,02085268888”
2.在J表中插入元组“j8,传感器厂”
3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库
4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60
5.将SPJ表中前4个元组的qty属性值统一修改为300
6.将S表中city属性名含有“京”或“津”的相应status属性值增加100
7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000
8.将全部红色零件的颜色修改为浅红色
9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改
10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列
上填上实验当时的日期和时间
11.删除所在城市为“广州”的供应商记录
12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录
13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数
据信息
七、实验总结:
数据更新操作(插入操作[INSERT]、修改操作[UPDATE]、删除操作[DELETE])是关系数据库系统中一种极为重要、数据更新能力强、使用灵活的数据操纵方式,此数据操作的使用不是完全独立的,而是和数据定义操作、数据查询操作有着紧密联系的。实验完成后,请同学们总结一下SQL语言在实现各种数据更新操作时与数据定义操作和数据查询操作两类操作之间的相互联系,通过深入总结,从而学会利用SQL语言实现较为复杂的数据更新任务。
实验四 SQL语言——数据更新操作
实验内容参考答案
六、实验内容
1.在S表中插入元组“s6,华誉,40,广州,02085268888”
use shiyan
go
insert
into s
values('s6','华誉',40,'广州','02085268888')
2.在J表中插入元组“j8,传感器厂”
use shiyan
go
insert
into j(jno,jname)
values('j8','传感器厂')
3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库
use shiyan
go
create table TotalQTYofS(SNO char(4)not null unique,TotalQTY int);
insert
into TotalQTYofS
select sno,sum(qty)
from spj
group by sno;
4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60
use shiyan
go
update p
set color='绿',weight=60
where pno='p6'
5.将SPJ表中前4个元组的qty属性值统一修改为300
use shiyan
go
update spj
set qty=300
from(select top 4 * from spj order by sno)as table1
where spj.sno=table1.sno
6.将S表中city属性名含有“京”或“津”的相应status属性值增加100
use shiyan
go
update s
set status=status+100
where city like '%京%' or city like '%津%
7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000
use shiyan
go
update spj
set qty=2000
where sno='s2' and jno=(select jno
from j
where jname='一汽')
8.将全部红色零件的颜色修改为浅红色
use shiyan
go
update p
set color='浅红'
where color='红'
9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改
use shiyan
go
update spj
set sno='s3'
where sno='s5' and jno='j4' and pno='p6'
10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列
上填上实验当时的日期和时间
use shiyan
go
alter table spj
add SDATE datetime
update spj
set SDATE=getdate()
11.删除所在城市为“广州”的供应商记录
use shiyan
go
delete
from s
where city='广州'
12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录
use shiyan
go
delete
from p
where pname like '螺%'
delete
from spj
where pno in(select pno
from p
where pname like '螺%')
13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数据信息
use shiyan
go
delete
from spj
where(sno='s3' or sno='s4')and jno in(select jno
from j
where jname='三建')and pno in(select pno
from p
where pname='螺母' or pname='螺丝刀')
第二篇:SQL语言汇总
1.UPDATE MARK
SET 总分=语文+数学+英语
SELECT 准考证号,姓名,总分
FROM MARK
WHERE 语文>=75 AND数学>=75 AND 英语>=75 AND 语文+数学+英语>=240
ORDER BY 总分 DESC
UPDATE MARK
SET 修正分数=高考分数*1.3
WHERE 籍贯='云南' OR 籍贯='福建'
SELECT AVG(高考分数)as平均分
FROM MARK
GROUP BY 性别
SELECT *
FROM cj
WHERE 期中成绩>=80 OR 期末成绩>=80 ORDER BY 课程号 ASC
UPDATE cj
SET平均成绩=期中成绩*0.2+期末成绩*0.8
SELECT 书号,书名,作者
FROM gm
WHERE 书号 LIKE '理*' AND 单价>20 ORDER BY 单价 ASC
UPDATE gm
SET 金额=单价*数量
UPDATE Sale
SET 销售金额=销售数量*单价
UPDATE Wage
SET 实发工资=工资+奖金
SELECT 姓名,实发工资
FROM Wage
WHERE 姓名 LIKE '*辉'OR 姓名 LIKE ' *辉*' ORDER BY 年龄 DESC
SELECT 部门号, COUNT(*)as人数
FROM zhigong
GROUP BY 部门号
UPDATE kaoshi
SET平均成绩=笔试成绩*0.6+上机成绩*0.4
SELECT 考号,姓名,平均成绩
FROM kaoshi
WHERE 姓名 LIKE '黄*'
DELETE *
FROM mark
WHERE 学号='1003'
SELECT 学号,课程号,期末成绩
FROM mark
WHERE 学号 LIKE '*1'
ORDER BY 期末成绩 DESC
UPDATE fk
SET 超期罚款=单价*超期天数*0.005
SELECT *
FROM fk
WHERE 单价>=50 OR 超期天数>30 ORDER BY 超期罚款 DESC
UPDATE gp
SET 浮动盈亏=(市场现价-买入加个)*买入数量
SELECT 股票代码,买入时间,浮动盈亏 FROM gp
WHERE 股票代码 LIKE '6*' AND 浮动盈亏>0 ORDER BY 买入时间 ASC
UPDATE ah
SET 年龄=年龄+1
SELECT 寝室,COUNT(*)as 爱好球类人数 FROM ah
WHERE 爱好 LIKE '*球'
GROUP BY 寝室
UPDATE JHKC
SET 总价=单价*库存量
SELECT 设备编号,设备名称,单价
FROM JHKC
WHERE 库存量<300 AND 单价<500 ORDER BY 单价 DESC
UPDATE HCSK
SET 票价=600
WHERE 航班号=F807
SELECT 航班号,起飞日期,票价
FROM HCSK
WHERE 出发地='福州' AND 目的地='巴黎' ORDER BY 票价 ASC
第三篇:SQL语言
1.输出任意两个字符串变量的值(参考代码)
declare @v1 varchar(12),@V2 varchar(12)
set @v1='中国'
set @v2='你好!'
select @v1+@v2
2.为以下程序纠错
declare @v1 varchar(12),@V2 varchar(10)
set @v1='中国'
set @v2='你好!'
set @s='吗!'
select @v1+@v2+@s
3.运行以下代码,观察以下全局变量的功能
select 34@@connections 返回当前服务器的连接数目
select 1@@rowcount 返回上一条T-SQL语句影响的数据行数 select @@error返回上一条T-SQL语句执行后的错误号 select @@procid返回当前存储过程的ID号
select @@remserver 返回登录记录中远程服务器的名字 select @@spid返回当前服务器进程的ID标识
select @@version 返回当前SQL Server服务器的版本和处理器类型 select @@language 返回当前SQL Server服务器的语言
select @@connections
4.输入以下代码并理解其含意
bggin
if 3>5
select 'true'
else print 'false'
end
go
begin
if 'a'<'A'
select 'true'
else print 'false'
end
go
begin
if '张'>'李'
select 'true'
else print 'false'
end
go
begin
if getdate()>2008-10-10
print'true'
else print'false'
end
5.附加数据库student,并进行以下操作
use student
select * from xsda
以XSDa表为例,如果平均成绩高于75分,则显示“不错!”,否则,显示“加油呀!”。
declare @av1 char(12), @av2 char(12)
set @av1='不错!'
set @av2='加油!'
if(select avg(总学分)from xsda)>75
begin
select @av1
end
else
select @av2
编写一个程序,显示每一同学的成绩等级
select xh,zf,dj=
case
when zf>70 then '优秀'
when zf>65 then '良好'
when zf>=60 then '合格'
else '不合格'
end
from xsdn
6.求1-100偶数和(参考代码)
declare @i int,@s int/*定义变量*/
set @i=0/*变量赋初值*/
set @s=0
while @i<=100/*条件*/
begin
set @s=@s+@i/*累加求和*/
set @i=@i+2/*偶数*/
end
print @s
7.求10!
8.为以下程序纠错(求1-100的积)
declare @i int,@s int
set @i=0
set @s=0
while @i<=100 begin
set @s=@s*@iset @i=@i+2 end
print @s
第四篇:SQL语言以及SQL
SQL语言以及SQL*PLUS工具
1.SQL语言组成:
数据查询语言(DQL):SELECT;
数据操纵语言(DML):INSERT、UPDATE、DELETE; 事务控制语言(TCS):COMMIT、ROLLBACK;
数据定义语言(DDL):CREATE、DROP、ALTER;
数据控制语言(DCL):GRANT、REVOKE;
2.数据查询语言(DQL):
一般格式:
1.SELECT [ALL|DISTINCT] <目标列表达式> [, <目标列表达式>]…
2.FROM <表名或者视图名> [, <表名或者视图名>]…
3.[WHERE <条件表达式>]
4.[GROUP BY <列名1> [HAVING <条件表达式>]]
5.[ORDER BY <列名2> [ASC|DESC];
实例:
6.SELECT empno,ename FROM emp WHERE ename<>'a' order by empno;
3.数据操纵语言(DML):
INSERT:
一般格式:
7.INSERT
8.INTO <表名> [(<属性列1>[, <属性列2>]…)]
9.VALUES(<常量1>[, <常量2>]…);
实例:
INSERT INTO emp(empno,ename)VALUES(1,’test1’);
UPDATE:
一般格式:
10.UPDATE<表名>
11.SET <列名>=<表达式> [,<列名>=<表达式>]…
12.[WHERE <条件>];
实例:
13.UPDATE emp SET ename=’test2’ WHERE empno=1;
DELETE:
一般格式:
14.DELETE
15.FROM <表名>
16.[WHERE <条件>];
实例:
DELETE FROM emp WHERE empno=1;
4.事务控制语言(TCS):
COMMIT:
说明:
5.6.7.8.17.放在DML之后,提交事务。 一般格式: 18.COMMIT; 实例: INSERT INTO emp(empno,ename)VALUES(1,’test1’);COMMIT; ROLLBACK: 说明: 19.放在DML之后,回滚事务。 一般格式: 20.ROLLBACK; 实例: INSERT INTO emp(empno,ename)VALUES(1,’test1’); ROLLBACK;课后练习(2小时): 用各种组合反复练习数据查询语言DQL; 用各种组合反复练习数据操纵语言DML; 和DML结合反复练习事务控制语言TCS。SQL*PLUS简介: 是Oracle数据库提供的用于和数据库交互的工具; 数据库管理员管理数据库的主要工具; 支持SQL-2和SQL-3标准; 支持Oracle PL/SQL语言; 支持一套Oracle公司定义的SQL*PLUS操纵语言。SQL*PLUS语言介绍: 不是标准语言; 可以缩写(一般取英文单词的前4位); 不用加分号; 分成数据库访问、输出格式设置、文本编辑、执行程序、环境设置、其他等几类。常用的SQL*PLUS命令:
CONNECT(CONN):连接数据库:
21.CONN SCOTT/TIGER@FIS
EXIT:退出SQL*PLUS;
DESCRIBE(DESC):显示数据库对象的结构:
22.DESC emp
SHOW:显示系统信息:
23.SHOW user
EDIT:文本编辑;
RUN(/):运行前一命令;
SAVE:保存前一命令:
24.SAVE c:temptest.txt
PASSWORD(PASSW):修改当前用户的口令; SPOOL:将输出结果保存到本地硬盘上
SPOOL c:temptest.txt SELECT * FORM emp;SPOOL OFF
START(@):路径*.sql执行脚本 column 字段名 format a35set line 100
第五篇:SQL 语言
SQL语言
create database student
on primary
(name=student_data1,filename='c:student_data1.mdf',size=10M,maxsize=100M,filegrowth=10%)
filegroupstudent_group分组
(name=student_data2,filename='c:student_data2.ndf',size=10M,maxsize=100M,filegrowth=10%)
log on
(name=student_log1,filename='c:student_data1.ldf',size=10M,maxsize=100M,filegrowth=10%)
create table xi
(系编号 char(2)primary key,系名varchar(20))主码
insert into xi values('01','物理系')
insert into xi values('02','化学系')
select *from xi查询
create table student
(学号 char(11)primary key,姓名varchar(10),民族 char(2)default'汉',出生日期datetime ,奖学金 money check(奖学金<=8000), 系编号 char(2)foreign key references xi(系编号))
默认值,约束,外码
insert into student values('20090214201','马帅', '汉','1990-1-8',1500, '01')
insert into student values('20100214202','周伊','回' ,'1989-2-4',500,'02')
update student set 出生日期='1911-3-1'where 学号 ='20100214201'
更新数据
select* from student/ 3
alter table student add 性别 char(2)check(性别='男'or 性别='女')
增加列
update student set 性别 ='男' where 学号 ='20090214201' update student set 性别 ='女' where 学号 ='20100214202' select student* from student where left(学号,4)=’2009’ 查询大三学生的详细信息
create table kc
(课程编号 char(2),课程名varchar(20))
alter table kc alter column 课程编号 char(2)not null 修改字段
alter table kc addconstraint pk_kcprimary key(课程编号)加主码(加主码的字段不能为空)
insert into kc values('01','语文')
insert into kc values('02','数学')
insert into kc values('03','英语')
update kc set课程名 ='历史学' where 课程编号= '05' execute sp_rename '课程编号','课程名','column'
改名
create table cj
(学号 char(11)foreign key references student(学号))alter table cj add 课程编号 char(2)
增加列
alter table cj add foreign key(课程编号)references kc(课程编号)
增加外码
alter table cj add 成绩varchar(3)
insert into cj values('20100214201','01','69')
insert into cj values('20100214201','02','90')
insert into cj values('20100214201','03','56')
insert into cj values('20100214202','01','26')
insert into cj values('20100214202','02','54')
insert into cj values('20100214202','03','89')
1.select student.*,课程名,成绩 ,系名 from student ,kc,cj ,xi where student.系编号 = xi.系编号and cj.学号=student.学号 and kc.课程编号=cj.课程编号 and student.学号='20100214202'
查询学号为20100214202的学生student表的全部内容和每门课的成绩及所在系
2.select 姓名,课程名,成绩,系名 from student,kc,cj,xi where student.学号 = cj.学号 and student.系编号=xi.系编号 and cj.课程编号= kc.课程编号 and month(getdate())=month(student.出生日期)and day(getdate())= day(student.出生日期)
查询今天过生日的学生的姓名每门课的成绩及系名
3.select student.学号,课程名,成绩,系名 from student,kc,cj,xi where student.学号=cj.学号 and kc.课程编号=cj.课程编号 and student.系编号=xi.系编号 and cj.学号 =student.学号 查看所有学生的学号的每门课的成绩及系名
4.Select count()as 学生数 from student ,xi where student.系编号=xi.系编号and xi.系名=’物理系’
查看物理系的学生数
5.Select student.姓名,avg(cj.成绩)as平均成绩 from student, cj where student.学号=cj.学号
查看所有学生的平均成绩