第一篇:實驗四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.學號
查看所有學生的平均成績