目录
实验3 表数据的插入、修改和删除
一、 实验目的
掌握使用T-SQL语句和企业管理器对数据表进行插入、修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
通过本实验,要熟练掌握INSERT、UPDATE、DELETE语句的语法和使用方法。
二、实验内容
(1)分别使用T-SQL语句和企业管理器,向数据库JWGL、数据库Market、数据库SPJ、数据库TSGL中的各张表输入一些(如10条)记录。
(2)使用T-SQL语句进行插入、修改和删除记录的操作。
① 插入数据时既要插入一些不违背数据完整性约束的记录,也要插入一些违背数据完整性约束的记录,观察插入后的结果,并利用相关知识解释此现象。在涉足参照完整性约束的参照表中插入数据时,理解系统是如何保证完整性的。
② 修改数据时除使用正确数据外,也可以对修改后的新值使用一些违背数据完整性约束的数据,观察系统执行后的结果。另外进一步观察在涉足参照完整性约束的参照表和被参照表中修改数据时系统的执行情况,如果违背参照完整性那么观察结果。
③ 删除记录时一般不会出现问题,但要是在有参照完整性约束的被参照表中删除数据时也存在破坏完整性的情况。观察删除记录时系统的执行结果。
三、实验环境
mysql-8.3.0-win64
MySQL Workbench 8.0 CE
四、实验前准备
复习MySQL插入、删除和修改记录的语句
五、实验步骤
insert into jwgl.student values ('04221153','赵敏','女',20,'15114531532','CS'),
('04221155','刘启蒙','女',20,'15191535683','CS'),
('04221157','韦一笑','男',19,'15764513080','MA'),
('04221188','李小龙','男',18,'13289227625','IS'),
('04221599','李一桐','女',21,'15829357522','MA');
insert into jwgl.course values('1','数据库',64,2,4,'数据结构'),
('2','Verilog',64,2,3,'微机原理'),
('3','微机原理',36,2,3,NULL),
('4','数据结构',64,2,4,NULL),
('5','软件工程',36,2,4,'C++'),
('6','计算机组成原理',64,2,4,'微机原理'),
('7','C++',32,2,3,'C语言'),
('8','嵌入式',64,2,4,'操作系统');
insert into jwgl.sc values('04221153',3,90),
('04221153',8,88),
('04221155',1,90),
('04221157',2,86),
('04221188',5,85),
('04221599',6,90);
update jwgl.student
set Sname='赵小敏' where Sno='04221153';
update jwgl.student
set Age=Age+1;
update jwgl.sc
set Grade=0
where Sno in(select Sno from jwgl.student where Sdept='IS');
/*
update jwgl.student
set Sex=20
where Sno='04221153';
*/
delete from jwgl.sc
where Cno='2';
insert into market.customers values
(1,'李红','长安区','西安','15114531522','百度','1980-10-20',1),
(2,'张三','海淀区','北京','18820221102','阿里巴巴','2000-04-15',1),
(3,'李旺','长宁区','上海','15546531234','京东','2004-10-25',1),
(4,'王平','余杭区','杭州','16964519876','腾讯','1997-11-03',1),
(5,'李雪','南开区','天津','14326543116','南开大学','2003-01-23',1);
insert into market.goods values
(1,'Red_Computer',1200,'红色电脑',200,'Red',0),
(2,'Green_Computer',1200,'绿色电脑',800,'Green',0),
(3,'Blue_Computer',1200,'蓝色电脑',1200,'Blue',0),
(4,'Red_Keyboard',800,'红色键盘',200,'Red',0),
(5,'Green_Keyboard',800,'绿色键盘',800,'Green',0),
(6,'Blue_Keyboard',800,'蓝色键盘',1200,'Blue',0);
insert into market.orders values
(1,1,1,100,120000,'2007-07-01'),
(2,2,2,100,120000,'2007-12-31'),
(3,3,3,100,80000,'2008-01-01'),
(4,4,4,100,80000,'2007-01-07'),
(5,5,5,100,80000,'2010-12-30');
insert into spj.j values
('J1','三建','北京'),
('J2','一汽','长春'),
('J3','弹簧厂','天津'),
('J4','造船厂','天津'),
('J5','机车厂','唐山'),
('J6','无线电厂','常州'),
('J7','半导体厂','南京');
insert into spj.p values
('P1','螺母','红',12),
('P2','螺栓','绿',17),
('P3','螺丝刀','蓝',14),
('P4','螺丝刀','红',14),
('P5','凸轮','蓝',40),
('P6','齿轮','红',30);
insert into spj.s values
('S1','精益',20,'天津'),
('S2','盛锡',10,'北京'),
('S3','东方红',30,'北京'),
('S4','丰泰盛',20,'天津'),
('S5','为民',30,'上海');
insert into spj.spj values
('S1', 'P1', 'J1',200),
('S1', 'P1', 'J3',100),
('S1', 'P1', 'J4',700),
('S1', 'P2', 'J4',700),
('S1', 'P2', 'J2',100),
('S2', 'P3', 'J1',400),
('S2', 'P3', 'J2',200),
('S2', 'P3', 'J4',500),
('S2', 'P3', 'J5',400),
('S2', 'P5', 'J1',400),
('S2', 'P5', 'J2',100),
('S3', 'P1', 'J1',200),
('S3', 'P3', 'J1',200),
('S4', 'P5', 'J1',100),
('S4', 'P6', 'J3',300),
('S4', 'P6', 'J4',200),
('S5', 'P2', 'J4',100),
('S5', 'P3', 'J1',200),
('S5', 'P6', 'J2',200),
('S5', 'P6', 'J4',500);
insert into tsgl.图书 values
('1','计算机组成原理','计算机','人民邮电出版社','董梁','40.00','2015-9-1'),
('2','微型计算机原理','计算机','人民出版社','董梁','40.00','2008-05-10'),
('3','C语言程序设计','计算机','人民出版社','陈浩','36.88','2011-7-21'),
('4','数据库系统概论','计算机','人民邮电出版社','孟彩霞','24.60','2008-07-10'),
('5','数据结构','计算机','人民出版社','王春梅','36.75','2005-6-4'),
('6','计算机导论','计算机','人民邮电出版社','刘建元','40.00','2015-9-1'),
('7','离散数学','计算机','人民出版社','刘建元','40.00','2008-05-10'),
('8','C++语言程序设计','计算机','人民出版社','张德慧','36.88','2011-7-21'),
('9','Python语言程序设计','计算机','人民邮电出版社','周远哲','24.60','2008-07-10'),
('10','Java语言程序设计','计算机','人民出版社','刘霞林','36.75','2005-6-4');
insert into tsgl.读者 values
('1','张三','计算机学院','男','西安市未央区','18066880688'),
('2','李四','自动化学院','女','西安市雁塔区','18394729403'),
('3','王五','理学院','女','西安市莲湖区','18093729403'),
('4','赵六','通信工程学院','男','西安市碑林区','18635373164'),
('5','炮二平五','象棋学院','男','西安市汉界区','16541520431'),
('6','马八进七','象棋学院','男','西安市楚河区','16541520432');
insert into tsgl.借阅 values
('1','2','2007-11-11'),
('1','1','2008-04-01'),
('2','4','2008-05-10'),
('3','5','2008-07-10'),
('5','3','2008-12-12');
实验4 数据库的简单查询和连接查询
一、 实验目的
数据查询是数据库中最基本的操作,也是使用最频繁的操作,因此必须掌握SQL的查询语句(SELECT语句)的使用方法。本实验要求掌握简单表的数据查询、数据排序和多表操作时数据连接查询的操作方法。
二、实验内容
(1)简单查询操作。该实验包括投影、选择条件表达、数据排序等。
① 在数据库JWGL中的学生表Student、课程表Course、学生选课表SC中完成第3章例3.16~例3.48中例题的查询操作。
② 在数据库Market的客户表Customers、货品表Goods、订单表Orders中完成下面ⅰ~ ⅳ 的查询。
ⅰ 查找所有上海客户的信息。
ⅱ 查找所有商品的名称、库存量、价格及折价25%后的价格,并使用别名“Discount”标识折扣价。结果按价格由低到高排序。
ⅲ 查找商品名中包含“Computer”的商品的编号、名称及价格。
ⅳ 查找库存量大于100小于500的商品的名称、库存量和单价。
③ 在数据库SPJ中的供应商表S、零件表P、工程项目表J、供应情况表SPJ中,用SELECT语句完成第2章习题6中(1)~(2)的查询。
④ 在数据库TSGL的图书、读者和借阅3个表中,用SELECT语句完成以下查询:查询类别为“计算机”的所有图书信息;查询数据库方面的图书信息;查询2008-05-10到2008-07-10之间的借阅资料。
(2)连接查询操作。该实验包括等值连接、自然连接、一般连接(内连接)、外连接、左外连接、右外连接和自然连接等。
① 在数据库JWGL中的学生表Student、课程表Course、学生选课表SC中完成第3章例3.49~例3.54中例题的查询操作。
② 在数据库Market的客户表Customers、货品表Goods、订单表Orders中完成查询:
查找2007年7月1日至2007年12月31日期间,订货金额大于30 000的所有订单的客户姓名,商品名称、单价、订货数量和订货金额。
③ 在数据库SPJ的供应商表S、零件表P、工程项目表J、供应情况表SPJ中,用SELECT查询语句完成第2章习题6中(3)的查询。
④ 在数据库TSGL的图书、读者和借阅3个表中,用SELECT语句完成以下查询:查询借书者的借书证号、姓名、单位、所借书号、书名和借阅日期。
三、实验环境
mysql-8.3.0-win64
MySQL Workbench 8.0 CE
四、实验前准备
复习查询语句
五、实验步骤
select Sname,Sno,Sdept
from jwgl.student;
select * from jwgl.student;
select Sname,2024-Age
from jwgl.student;
select Sname,'Year of Birth:',2024-Age,lower(Sdept)
from jwgl.student;
select Sname NAME,'Year of Birth:' BIRTH,2024-Age BITHDAY,lower(Sdept) DEPARTMENT
from jwgl.student;
select Sno
from jwgl.sc;
select distinct Sno
from jwgl.sc;
select Sname
from jwgl.student
where Sdept='CS';
select Sname,Age
from jwgl.student
where Age<20;
select distinct Sno
from jwgl.sc
where Grade<60;
select Sname,Sdept,Age
from jwgl.student
where Age between 20 and 23;
select Sname,Sdept,Age
from jwgl.student
where Age not between 20 and 23;
select Sname,Sex
from jwgl.student
where Sdept in('MA','IS');
select Sname,Sex
from jwgl.student
where Sdept not in('MA','IS');
select *
from jwgl.student
where Sno like '04221153';
select Sname,Sno,Sex
from jwgl.student
where Sname like '李%';
select Sname
from jwgl.student
where Sname like '李小_';
select Sname,Sno
from jwgl.student
where Sname like '_小%';
select Sname,Sno,Sex
from jwgl.student
where Sname not like '李%';
insert into jwgl.course values('9','DB_Design',32,2,3,NULL);
select Cno,credit
from jwgl.course
where Cname ='DB_Design';
insert into jwgl.sc values('04221153',2,NULL);
select Sno,Cno
from jwgl.sc
where Grade is NULL;
select Sno,Cno
from jwgl.sc
where Grade is not NULL;
select Sname
from jwgl.student
where Sdept='MA' and Age<20;
insert into jwgl.student values ('04221159','赵梅','女',22,'15114531533','CS');
insert into jwgl.sc values('04221159',3,88);
select Sno,Grade
from jwgl.sc
where Cno='3'
order by Grade desc;
select *
from jwgl.student
order by Sdept,Age desc;
select count(*)
from jwgl.student;
select count(distinct Sno)
from jwgl.sc;
select avg(Grade)
from jwgl.sc
where Cno='3';
select max(Grade)
from jwgl.sc
where Cno='3';
select sum(credit)
from jwgl.sc,jwgl.course
where Sno='04221153' and sc.Cno=course.Cno;
select Cno,count(Sno)
from jwgl.sc
group by Cno;
select Sno
from jwgl.sc
group by Sno
having count(*)>2;
select Sno,avg(Grade)
from jwgl.sc
group by Sno
having avg(Grade)>=90;
select student.*,sc.*
from jwgl.student,jwgl.sc
where student.Sno=sc.Sno;
select student.Sno,Sname,Sex,Age,Sdept,Cno,Grade
from jwgl.student,jwgl.sc
where student.Sno=sc.Sno;
select student.Sno,Sname
from jwgl.student,jwgl.sc
where student.Sno=sc.Sno and
sc.Cno='3' and sc.Grade>=90;
select first.Cname,second.Pcno
from jwgl.course first,jwgl.course second
where first.Pcno=second.Cname;
select student.Sno,Sname,Sex,Age,Sdept,Cno,Grade
from jwgl.student left outer join jwgl.sc on(student.Sno=sc.Sno);
select student.Sno,Sname,Cname,Grade
from jwgl.student,jwgl.sc,jwgl.course
where student.Sno=sc.Sno and sc.Cno=course.Cno;
select *
from market.customers
where City='上海';
select GoodsName,`Storage`,Price,Price/4 "Discount"
from market.goods
order by Price;
select GoodsID,GoodsName,Price
from market.goods
where GoodsName like '%Computer%';
select GoodsName,`Storage`,Price
from market.goods
where `Storage`>100 and `Storage`<500;
select CName,GoodsName,Price,Queantity,OrderSum
from market.orders
inner join market.goods
on orders.GoodsID=goods.GoodsID
inner join market.customers
on orders.OrderID=customers.CustomerID
where OrderDate>='2007-07-01' and OrderDate<='2007-12-31' and OrderSum>3000;
select distinct SNO
from spj.spj
where JNO='J1';
select SNO
from spj.spj
where JNO='J1' and PNO='P1';
select SNO
from spj.spj
inner join spj.p
on spj.PNO=p.PNO
where JNO='J1' and COLOR='红';
select *
from tsgl.图书
where `类别`='计算机';
select *
from tsgl.图书
where `书名` like '%数据库%';
select *
from tsgl.借阅
where `借阅日期`>='2008-05-10' and `借阅日期`<='2008-07-10';
select rb.`借书证号`,`姓名`,`单位`,b.`书号`,`书名`,`借阅日期`
from tsgl.读者 r
left join tsgl.借阅 rb
on r.`借书证号`=rb.`借书证号`
left join tsgl.图书 b
on rb.`书号`=b.`书号`;