第一篇:实验五 SQL语言的DML初步
实验五 SQL语言的DML初步
一、实验目的SQL的数据操纵功能通过DML(数据库操作语言)实现。DML包括数据查询和数据更新两种数据操作语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、删除和修改等数据维护操作。
本次实验了解DML语言的INSERT、UPDATE、DELETE对数据的操作,学会SQL Server 2000的查询分析器中用DML语言对表中的数据进行插入、删除和修改。
本实验需2学时
二、实验内容
1. 启动数据库服务软件SQL Server 2000的查询分析器,用INSERT语句对表进行插入操作,语法格式如下:
Insert Into <表名> [(<属性列1>[,<属性列2>]…)]
Values(<常量1>[,<常量2>]…);
2. 用UPDATE语句对表中已有的记录进行修改,语法格式如下:
Update <表名> Set <列名>=<表达式>[,<列名>=
<表达式>][,…n] [Where <条件>];
3. 用DELETE语句对表中已有的记录进行删除,语法格式如下:
Delete From <表名> [Where <条件>];
三、实验任务
1. 打开数据库SQL Server 2000的查询分析器,用INSERT语句对表插入记录 查询分析器窗体下完成以下题目,分别运行,观察结果
(1)将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:
18)插入到Student表中。
(2)插入一条选课记录(‘95020’,‘1’)
(3)对每个系求学生的平均年龄,并把结果存入表Deptage2、利用查询分析器用UPDATE语句更改表中数据。完成以下题目,分别运行,观察结果。
(1)将学生95001的年龄改为22岁。
(2)将所有学生的年龄增加1岁
(3)将计算机科学系全体学生的成绩置零。
3、利用查询分析器用DELETE语句删除表中数据。完成以下题目,分别运行,观察结果。
(1)删除学号为95019的学生记录。
(2)删除计算机科学系所有学生的选课记录
(3)删除所有的学生选课记录
4.将以上的SQL语言存盘,以备老师检查。
第二篇:实验四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语言的DDL
实验三 视图、存储过程的定义和使用
一、实验目的SQL(Structured Query Language)语言是关系数据库的标准语言。是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询,SQL语言是一个通用的、功能极强的关系数据库语言。
本次实验了解DDL语言的CREATE、DROP、ALTER对视图和存储过程的操作,学会SQL Server 2000的查询分析器中实现视图的创建、查看、修改和删除;实现对存储过程的创建、修改、撤消和运行。
本实验需2学时。
二、实验内容
1. 启动数据库服务软件SQL Server 2000的查询分析器,用如下语句对视图进行操作,详
细的语法格式参看课本相应章节:
Create view 创建视图
Drop view删除视图
Select * from 视图名查询视图
2. 如下语句对存储过程进行操作,详细的语法格式参看课本相应章节:
Create proc 过程名
Dropproc 过程名
三、实验任务
1.打开数据库SQL Server 2000的查询分析器,用Create Table建表student。
2.向表中填入教材P82数据
3.根据student表创建视图V_stud.4.使用视图v_stud,向原student表中插入一行记录。
5.根据P82,创建SC表,创建视图,通过视图查看学生的姓名和选课情况。
6. 删除视图v_stud.7.根据student,sc,c三个表,创建存储过程proc1,查看学生的姓名,选课的课程名和相应的成绩。
8. 执行proc1
9.修改该存储过程为p_proc,并删除proc1.运行以上语句,并观察结果.10.将以上的SQL语言以报告的形式写出来,以备老师检查。
第四篇:sql语言
11.2.2 数据定义命令
1.CreateTable命令
Create Table <表名>(<列名1><数据类型1>[<列级完整性约束1>][,<列名2>] <数据类型2>[<列级完整性约束2>][,……][,<列名n>] <数据类型n>[<列级完整性约束n>][<表级完整性约束n>]); 语句功能:创建一个以<表名>为名的、以指定的列属性定义的表结构。
2.Alter Table命令
Alter Table<表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ MODIFY <列名> <数据类型> ];
语句功能:修改以<表名>为名的表结构。
3.Drop命令
Drop Table <表名>
语句功能:删除以<表名>为名的表。
11.2.3 数据查询命令 SELECT
语法形式为:
SELECT [ALL|DISTINCT] 目标列FROM 表(或查询)
[WHERE 条件表达式]
[GROUP BY 列名1 HAVING 过滤表达式]
[ORDER BY 列名2[ASC|DESC]]
功能
根据WHERE子句中的表达式,从指定的表或视图中找出满足条件的记录,按目标列显示数据GROUP BY子句按列名1的值进行分组,每一组产生一条记录,HAVING短语对组进行输出过滤
ORDER BY子句按列名2 对查询结果的值进行排序
1.SELECT语句示例
例11.1查询所有学生的基本情况
SELECT学号,姓名,性别,出生日期,专业
FROM Student;
例11.2查询所有男生的信息记录。
SELECT *
FROM student
WHERE 性别=“男”;
例11.1查询所有的专业,查询结果中不出现重复的记录。
SELECT DISTINCT 专业 FROM Student ;
例11.4 查询学生的人数和平均年龄
SELECT Count(*)AS 人数,Avg(Year(Date())-Year(出生年月))AS平均年龄 FROM Student ; 例85 查询计算机专业学生的学号、姓名和专业
SELECT 学号,姓名,专业 FROM Student WHERE 专业=“计算机” ;
例11.6显示所有非计算机专业学生的学号、姓名和年龄
SELECT 学号, 姓名, Year(Date())-Year(出生年月)AS 年龄
FROM StudentWHERE 专业<>“计算机” ;
例11.7 查询1981年(包括1981年)以前出生的女生姓名和出生年月。
SELECT 姓名,出生年月 FROM Student
WHERE 出生年月 < #1/1/1982# AND 性别=“女” ;
例11.8 查询选修了1号课程的学生的学号及其成绩,查询结果按分数降序排列。
Select 学号,成绩Fromsc
Where课程号= “1”
Order By 成绩 DESC;
例11.9查询选修了2门(包括2门)以上课程的学生的学号和课程数
SELECT 学号, Count(*)AS 课程数 FROM Sc
GROUP BY 学号HAVING Count(*)>=2 ;
例11.10查询所有课程的成绩在70分以上的学生的学号
SELECT 学号 FROM ScGROUP BY 学号
HAVING Min(成绩)>=70 ;
例11.11 查询所有学生的学号、姓名、课程和成绩
SELECT Student.学号,Student.姓名,Sc.课程, Sc.成绩
使用内连接格式
SELECT Student.学号,Student.姓名,Sc.课程,Sc.成绩
2.ORDER BY、GROUP BY、HAVING子句示例
例11.12 对学生成绩表,统计每人的平均分和课程数,按学号递减排序
SELECT学号, COUNT(课程号)AS 课程数, AVG(成绩)AS平均成绩
FROM sc
学号
ORDER BY学号DESC;
例11.13查询选修了2门(包括2门)以上课程、最低成绩在60分以上的学生的学号、课程数和最低分 SELECT 学号, Min(成绩)AS 成绩之Min, Count(课程)AS 课程之Count FROM ScGROUP BY Sc.学号
HAVING(((Min(成绩))>=60)AND((Count(课程))>2));
3、多表连接查询SELECT语句
WHERE 条件,在两表中有相同的属性值
例11.14 查询所有学生的学号、姓名、课程和成绩
SELECT Student.学号,Student.姓名,Sc.课程, Sc.成绩
FROM Student,Sc WHERE Student.学号 = Sc.学号;
4.嵌套查询
在SQL中,将一个SELECT语句查询块嵌套在另一个SELECT语句的WHERE子句或HAVING子句中称为嵌套查询
例11.15 查询没有学过大学计算机基础的学生的学号、姓名和专业
SELECT Student.学号, Student.姓名, Student.专业
FROM Student
(SELECT Sc.学号
FROM Sc
WHERE Sc.课程=“大学计算机基础”);
嵌套查询示例
例11.16 查询与“邓倩梅”在同一个专业的学生的学号和姓名
SELECT Student.学号, Student.姓名
FROM Student
WHERE
FROM Student
11.2.4SQL中的数据更新命令
结构化查询语言SQL是操作关系数据库的工业标准语言
在SQL中,常用的语句有两类:
数据查询语句 SELECT
数据更新命令 INSERT、UPDATE、DELETE
INSERT语句用于数据插入 其语法格式为:
插入一条记录
INSERT INTO 表名 [(字段1,…,字段n)] VALUES(值1,…,值n)
插入查询的结果
INSERT INTO 表名(字段1,…,字段n)VALUES 子查询
数据更新-INSERT语句实例
例11.17向表Students中插入一条记录
Insert Into student(学号, 姓名, 出生日期,性别, 专业)VALUES(“20031011”, “陈伟”,男“, ”化学“)
注意:
字符型常量用 单引号 或 双引号 括起来
逻辑型字段的值是 True/False、Yes/No 或 On/Off
日期的表示形式为 MM/DD/YY 或 MM/DD/YYYY
数据更新-DELETE语句
DELETE语句用于数据删除其语法格式为:
DELETE FROM 表 [WHERE 条件]
注意: WHERE子句缺省,则删除表中所有的记录(表还在)
例11.18 删除表Students中所有学号为990301的记录
DELETE FROM Students WHERE 学号=“990301”
例11.19 删除表Sc中成绩低于70分的记录
DELETE FROM Sc WHERE 成绩<70
数据更新-UPDATE语句
UPDATE语句用于数据修改其语法格式为:
UPDATE 表 SET 字段1=表达式1, …,字段n=表达式n [WHERE 条件]
注意: WHERE子句缺省,则修改表中所有的记录
例11.20 将表Student中学生王涛的姓名改为王宝 #12/28/80#,”
UPDATE Students SET 姓名=“王宝” WHERE 姓名=“王涛”
UPDATE语句一次只能对一个表进行修改
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。包括数据定义、数据操纵、数据查询和数据控制四个方面,共9个命令。
SQL语言使用使用数据定义语言(Data Definition Language,简称DDL)实现数据定义功能。1、创建数据表
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]
[CHECK<表达式>[error<提示信息]
<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]
[CHECK<表达式>[error<提示信息]
[DEFAULT<表达式>]
<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]
[CHECK<表达式>[error<提示信息]
[DEFAULT<表达式>]
[PRIMARY KEY/UNIQUE]
<字段名2>…])
【功能】定义(也称创建)一个表结构。
【例11-1】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3);三好生(L);特长(M);照片(G)。
CREATE TABLESTUD
(学号C(8),姓名C(8),性别 C(2),出生年月 D, 入校总分 N(3),;三好生 L,特长 M,照片 G)
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8),;性别C(2),;出生年月 D,;入校总分 N(3))
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8), NOT NULL;性别C(2),;出生年月 D,;入校总分 N(3))
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8), NOT NULL;
性别C(2), DEFAULT=“男”CHECK 性别=“男”OR 性别 =“女” ERROR“性别必须是男或女”;出生年月 D,;入校总分 N(3))
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8), NOT NULL;
性别C(2), DEFAULT=“男”CHECK 性别=“男”OR 性别;
=“女” ERROR“性别必须是男或女”;
出生年月 D, CHECK(出生年月)<={^1990-01-01} and 出生;
年月>={^1970-01-01},;
入校总分 N(3))
2、修改数据表
【命令格式1】
ALTER TABLE <表名>[ADD/ ALTER
[COLUMN] <新字段名><数据类型>[<宽度>[,<小数位数>]]
[NULL |NOTNULL]]
[CHECK<表达式>[error<提示信息>]]
[DEFAULT <表达式>]
[PRIMARY KEY/UNIQUE]]
【功能】修改表结构。、插入记录
【格式1】INSERTINTO<表名>[<字段名表>]VALUES(<表达式表>)
【格式2】INSERTINTO<表名>FROMARRAY<数组名>|FROMMEMVAR
【功能】在指定的表文件末尾追加一条记录。格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。格式2用数组或内存变量的值赋值给表文件中各字段。
【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。但必须注意的是,在表定义说明了NOTNULL的字段名不能取空值。
<字段名表>:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。
<表达式表>:指定要追加的记录各个字段的值。
【例11-6】在表文件STUD的末尾追加三条记录。
***用表达式方式追加第一条记录***
INSERTINTOSTUD
(学号,姓名,性别,班级名,系别代号);
VALUES
(“011110”,“李建国”,“男”,“计0121”,“01”)
DIMENSIONDATA[5]
DATA(1)=“011103”
DATA(2)=“李宁”
DATA(3)=“女”
DATA(4)=“电0134”
DATA(5)=“02”
INSERTINTOSTUDFROMARRAYDATA
第五篇: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