数据库上机脚本

论U盘备份的重要性。。。

U盘突然间坏了,而且是硬件问题。。。软件工程文档,并行计算大作业,所有数据库上机脚本都没有了。。哭死。。。

CREATE table Student(sno char(10) not null,
                     sname varchar(10) null,
                     sage tinyint,
                     ssex char(1),
                     sdept char(2),
                     primary key(sno),
                     check(ssex in ('M','F')))

INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('20123221','毛通',22,'M','CS');
INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('20123219','吕建',22,'M','IS');
INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('20123218','刘同宾',19,'M','MA');
INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('20123217','解晓东',20,'M','MS');
INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('20123207','孙锐',20,'M','MS');
INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('20121226','夏长兴',20,'M','MS');


SELECT * FROM Student;

create table ss(sno int not null,
                sname varchar(10) null,
                sbirth datetime ,
                primary key(sno) 
                )
drop table ss;
insert into ss(sno,sname,sbirth)values(0001,'张三','2014-02-01');
select * from ss;

create table Course(cno char(10) not null,
                    cname varchar(10),
                    cpno char(10) null,
                    credit tinyint,
                    primary key(cno),
                    foreign key(cpno) references Course
                    )


INSERT INTO Course(cno,cname,cpno,credit)VALUES('2','数学',null,2);
INSERT INTO Course(cno,cname,cpno,credit)VALUES('6','数据结构',null,2);
INSERT INTO Course(cno,cname,cpno,credit)VALUES('7','PASCAL语言','6',4);
INSERT INTO Course(cno,cname,cpno,credit)VALUES('4','操作系统','6',3);
INSERT INTO Course(cno,cname,cpno,credit)VALUES('5','数据结构','7',4);
INSERT INTO Course(cno,cname,cpno,credit)VALUES('1','数据库','5',4);
INSERT INTO Course(cno,cname,cpno,credit)VALUES('3','信息系统',4,5);


SELECT * FROM Course;

create table SC(sno char(10) not null,
                cno char(10) not null,
                grade tinyint,
                primary key(sno,cno),
                foreign key(sno) references Student,
                foreign key(cno) references Course,
                check(grade>=0 and grade<=100)
               )


INSERT INTO SC(sno,cno,grade)VALUES('20123219','1',100);
INSERT INTO SC(sno,cno,grade)VALUES('20123218','2',100);
INSERT INTO SC(sno,cno,grade)VALUES('20123221','3',100);
INSERT INTO SC(sno,cno,grade)VALUES('20123217','4',100);
INSERT INTO SC(sno,cno,grade)VALUES('20123207','5',100);
INSERT INTO SC(sno,cno,grade)VALUES('20121226','6',100);





SELECT * FROM SC;
SELECT * FROM Student;
--查找select
SELECT * FROM Student Where sname='夏长兴';
SELECT * FROM Student Where sname='吕建' AND sage=22;
SELECT sname,ssex FROM Student where  sage=20; 
SELECT sname,ssex,2014-sage FROM Student; --*的位置可以是列,也可以是有列参与的表达式,也可以是单纯的表达式
SELECT Distinct sage From Student;--除去重复的年龄,只显示年龄组成(多个相同的年龄只显示一个)
SELECT sage as age FROM Student;--给表中某列改属性名,作用域:只在执行此条语句中起作用
SELECT * FROM Student as ALL_Student;--给表起别名
SELECT * FROM Student Where sage in(20,22);-- in,选择年龄在(20,22)范围内的数据
SELECT * FROM Student Where sage BETWEEN 20 and 22;--between,选择年龄在20到22之间的数据(包括20,22)
SELECT * FROM Student Where sage>=18 and sage<=20;
SELECT Student.sno,Student.sname,SC.grade FROM Student,SC Where Student.sno=SC.sno and SC.grade>90;--从两张表中选择数据组合输出
SELECT * FROM SC Where grade>80 order by grade ASC;--升序(ASC),按成绩升序排序
SELECT * FROM SC Where grade>80 order by grade desc;--降序(DSC),按成绩降序排序

  --字符匹配,通配符: % _
SELECT sname FROM Student Where sname like '夏%';
SELECT sname FROM Student Where sname like '吕_';
  --字符匹配,转义字符
SELECT sname FROM Student WHERE sname like '吕建\_' ESCAPE '\';
SELECT sname FROM Student Where sno is not null;--(not) null 空值判断,选择学号不为空的所有姓名数据
  --聚合函数(写在紧跟聚合函数后的变量 为聚合函数统计后的结果表 列属性名)
SELECT COUNT(*)num,AVG(sage)num1 FROM Student Where ssex='M';--聚合函数COUNT , AVG;选择男同学人数(存在num列属性下)和年龄平均值(num1)
SELECT Count(*)num,AVG(grade),MAX(grade),MIN(grade),SUM(grade) FROM SC WHERE grade>90; --五个聚合函数

--分组语句group by
SELECT count(*) FROM SC group by grade;--按成绩分组,返回一条成绩计数的语句
SELECT grade FROM SC group by grade;--分组语句中,SELECT语句后的数据项可为聚合函数,也可为group by后的数据项;
                                    --此例返回分组中所有不同的成绩
SELECT sdept,max(sage) from Student group by sdept;

--having对对分组计算的结果集进行筛选
SELECT sdept,count(*) From Student group by sdept having count(*)>0;--对group by的分组结果,按学院分组并计算每组个数
                                                                    --在分组基础上只返回输出个数>0的组的学院和个数

--三个表连接
SELECT Course.cno,Course.cname from Student join SC on Student.sno=SC.sno
                                join Course on SC.cno=Course.cno where
                                Student.ssex='M';--join前后两个表的共同属性为连接条件
 
--子查询
SELECT sno from SC where cno in(select cno from Course where cname like '%数据库');--查询选数据库课程的学生学号
--嵌套子查询
SELECT sname,sno from Student where sno in(select sno from SC where cno 
in (select cno from Course where cname like '%数据库'));--查询选数据库课程的学生姓名和学好 
--嵌套子查询中=和in的用法
select * from Student where sage=(select sage From Student where sno='20123219');--子句筛选出学号为20123219学生的年龄
--当子句返回值有多个时要用in,不要用=
select * from Student where sno in (select sno from Student where sage=22);  
 
--TOP  或 TOP percent 
select top 2 * from Student order by sage desc; --默认升序(asc),将表中年龄按降序排列,筛选出前2个
select top 90 percent  * from Student order by sage desc;--将年龄 
--增删
--ALTER TABLE Student DROP ssex RESTRICT;--删除一列数据
ALTER TABLE Student ADD birth VARCHAR(30);--增加一列数据
delete  from Student where sname='吕建';--删除记录前,确保这条记录中的所有列与其他表无关,此句不可执行
SELECT * FROM Student;

--删除表
drop table Student;

--修改
UPDATE Student SET sage=18 Where sname='解晓东';--修改学号为...的姓名为...
UPDATE SC SET grade=80 Where sno=20123221;--修改成绩
UPDATE SC SET grade=grade*1.2 Where grade<90;

--帮助
sp_help Student;

--视图
create view SCS2(sno,sname,cname,cno)  AS 
SELECT Student.sno,Student.sname,Course.cno,Course.cname from Student as a join SC as b on a.sno=b.sno
                                join Course as c on b.cno=c.cno ;
create view SCS1(sno,sname,cname,cno)  AS 
SELECT Student.sno,Student.sname,Course.cno,Course.cname from Student join SC on Student.sno=SC.sno
                                join Course  on SC.cno=Course.cno ;

select * from SCS1;--查看视图
drop view SCS1;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于MySQL,设计并实现一个简单的旅行预订系统。该系统涉及的信息有航班、大巴班车、宾馆房间和客户数据等信息。其关系模式如下: FLIGHTS (String flightNum, int price, int numSeats, int numAvail, String FromCity, String ArivCity); HOTELS(String location, int price, int numRooms, int numAvail); BUS(String location, int price, int numBus, int numAvail); CUSTOMERS(String custName,custID); RESERVATIONS(String custName, int resvType, String resvKey) 为简单起见,对所实现的应用系统作下列假设: 1. 在给定的一个班机上,所有的座位价格也一样;flightNum是表FLIGHTS的一个主码(primary key)。 2. 在同一个地方的所有的宾馆房间价格也一样;location是表HOTELS的一个主码。 3. 在同一个地方的所有大巴车价格一样;location是表 BUS的一个主码。 4. custName是表CUSTOMERS的一个主码。 5. 表RESERVATIONS包含着那些和客户预订的航班、大巴车或宾馆房间相应的条目,具体的说,resvType指出预订的类型(1为预订航班,2为预订宾馆房间,3为预订大巴车),而resvKey是表RESERVATIONS的一个主码。 6. 在表FLIGHTS中,numAvail表示指定航班上的还可以被预订的座位数。对于一个给定的航班(flightNum),数据库一致性的条件之一是,表RESERVATIONS中所有预订该航班的条目数加上该航班的剩余座位数必须等于该航班上总的座位数。这个条件对于表BUS和表HOTELS同样适用。 应用系统应完成如下基本功能: 1. 航班,大巴车,宾馆房间和客户基础数据的入库,更新(表中的属性也可以根据你的需要添加)。 2. 预定航班,大巴车,宾馆房间。 3. 查询航班,大巴车,宾馆房间,客户和预订信息。 4. 查询某个客户的旅行线路。 5. 检查预定线路的完整性。 6. 其他任意你愿意加上的功能。 作业检查: 1. 提交源程序,可执行程序,以及程序运行说明。 2. 系统分析、设计与实现报告。 3. 考试前检查完毕,延迟拒收。 4. 提交word文件,形式为:学号_姓名

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值