一.数据定义
1.创建表
CREATE TABLE JS( Tno varchar(7), Tname varchar(10), Tsex varchar(2), Birthday date, Dept varchar(20), Sid varchar(18) ); CREATE table course( Cno varchar(10), Cname varchar(20), Credit SMALLINT, property varchar(10), Hours INT ); CREATE TABLE Sk( Tno varchar(7), Cno varchar(10), Hours int ); create table student( sno char(10) not null PRIMARY key, sname char(8), age NUMERIC(3,0), sex char(2), bplace char(20), polity char(20) ); create table GIRL( sno char(10) not null PRIMARY key, sname char(8), age NUMERIC(3,0) ); create table score( SNO CHAR(10), CNO CHAR(10), score NUMERIC(6,0) ); CREATE TABLE JS1( Tno varchar(7), Tname varchar(10), Tsex varchar(2), Birthday date, Dept varchar(20), Sid varchar(18) ); create unique index I_js_sid on js1(Sid); create index I_cource_xf on course(Cno,Credit);
2.插入数据
-- JS表 INSERT INTO Js VALUES('Too1','刘威','女','1971-3-20','电信','551021197103203121'); INSERT INTO Js VALUES('Too2','张琪劲','男','1963-7-21','数理','32010119630713318X'); INSERT INTO Js VALUES('Too3','李子文','女','1973-9-15','电信','551021197103203121'); INSERT INTO Js VALUES('Too4','江海防','女','1960-2-18','社科','560102196002185623'); INSERT INTO Js VALUES('Too5','李铁','男','1977-10-11','数理','230103197710118632'); INSERT INTO Js VALUES('Too6','吴天一','男','1962-4-23','电信','320104196204237516'); INSERT INTO Js VALUES('Too7','赵志华','男','1968-8-27','社科','321102196808277214'); INSERT INTO Js VALUES('Too8','钱进','男','1980-7-10','电信','570102198007103452'); INSERT INTO Js VALUES('Too9','孙星南','女','1981-3-2','外语','110102198103024125'); -- Course 表 INSERT into course values('01010101','大学英语1',4,'考试',64); INSERT into course values('01010102','普通物理1',4,'考试',64); INSERT into course values('01010103','高等数学1',6,'考试',96); INSERT into course values('01010104','形势政策',2,'考查',32); INSERT into course values('01010105','计算机基础',4,'考查',64); -- SK 表 INSERT INTO SK VALUES('Too1','01010105',64); INSERT INTO SK VALUES('Too2','01010102',64); INSERT INTO SK VALUES('Too9','01010101',64); INSERT INTO SK VALUES('Too4','01010104',32); INSERT INTO SK VALUES('Too5','01010103',96); INSERT INTO SK VALUES('Too6','01010105',64); INSERT INTO SK VALUES('Too3','01010101',64);
3.修改表结构
alter table SK add column Type char(4); alter table SK modify column Hours SMALLINT; alter table course drop column hours; alter table Js add column ADDR char(50);
二.完整性约束
alter table js add PRIMARY KEY(Tno); alter table js modify Tname varchar(10) NOT NULL; alter table js add CONSTRAINT c_Tsex CHECK (Tsex in ('男','女')); alter table js add UNIQUE(Sid); alter table course add PRIMARY KEY(Cno); alter table course modify Cname varchar(20) NOT NULL; alter table course add CONSTRAINT c_Credit CHECK (Credir>0); alter table course modify property varchar(10) DEFAULT '必修'; alter table SK add primary key(Tno,Cno); alter table SK add foreign key(Tno) references js(Tno); alter table SK add foreign key(Cno) references course(Cno); alter table sk add CONSTRAINT c_hours CHECK (hours>0);
三.数据操纵
select Tname,birthday from js; select count(*) from js; select sno,sname,age from student where 20<age<23 order by age asc; select student.sname,student.sno,cname,score from student,course,score where score<60 and score.sno=student.sno and score.cno=course.cno; select sname from student group by age having age>=avg(age); select js.* from js,sk where sk.cno=01010105 and js.tno=sk.tno; select Tname,birthday,cname,hours from js,sk,course where birthday<'1971-1-1' and js.tno=sk.tno and course.cno=sk.cno; select * from js where js.tno not in (select sk.tno from sk); update student set age=age+1; update score set score=score+5 where cno=01010101; update score set score=0 where sno=102; delete from js where DATEDIFF('2019-11-19',Birthday)>21900; 删除某个学生 delete from student where sno=104; delete from score where sno=104;
四.数据库编程
1 SELECT score.sno, student.sname, course.cname, score.score FROM score, student, course WHERE score.cno = '01010101' AND ( score.score = ( SELECT min( score ) FROM score WHERE cno = '01010101' ) OR score.score = ( SELECT max( score ) FROM score WHERE cno = '01010101' ) ) AND course.cno = score.cno AND score.sno = student.sno; 2 SELECT class, csno, sex, DATE_SUB( '2019-11-20', INTERVAL CAST( age AS CHAR(10) ) YEAR ) birthday, polity from student,class WHERE class.class = '1' AND class.sno = student.sno; 3 SELECT sno,sname,age,sex,bplace,IFNULL(polity,"群众") as polity FROM student; 4 select avg(score) '平均成绩' from score where sno LIKE '10_' and cno='01010101'; 5 SELECT sno '学号', CASE cno WHEN '01010101' THEN '大学英语1' when '01010102' THEN '普通物理1' WHEN '01010103' THEN '高等数学1' when '01010104' THEN '形势政策' WHEN '01010105' THEN '计算机基础' end '课程名', score '成绩' FROM score WHERE sno LIKE '10_' ORDER BY SNO; 6 SELECT sno '学号', cno '课程号', score '成绩', CASE WHEN score<60 THEN '不及格' WHEN 60<score AND score<70 THEN '及格' WHEN 70<score and score<80 THEN '中' WHEN 80<score and score<90 THEN '良' WHEN 90<score and score<100 THEN '优' END '等级' FROM score WHERE sno LIKE '10_' ORDER BY SNO; DELIMITER $$ CREATE PROCEDURE stuscoreinfo() BEGIN SELECT class.class, student.sno, student.sname, sex, course.cname, score FROM student, class, score, course WHERE student.sno=class.sno and score.sno=student.sno and score.cno=course.cno; END $$ DELIMITER $$ CREATE PROCEDURE stu_info(in_sno VARCHAR(10)) BEGIN select * from student where sno=in_sno; END $$ DELIMITER $$ CREATE PROCEDURE stu_age(IN in_sno VARCHAR(10),OUT out_age NUMERIC(3,0),OUT result INT) BEGIN set result=0; set out_age=(select age from student where sno=in_sno); END $$ call stuscoreinfo(); call stu_info('101'); call stu_age('101',@out_age,@result); select @result; DROP PROCEDURE stu_age; DROP PROCEDURE stuscoreinfo; 1 DELIMITER $ create function fun_sumscores() returns int begin declare c int; SELECT avg(score) from score into c; return c; END $ select fun_sumscores(); 2 DELIMITER $ create function fun_sumscores2(in_class VARCHAR(10),in_cno VARCHAR(10)) returns int begin declare c int; SELECT sum(score) from score where cno=in_cno and sno like CONCAT(in_class,'0_') into c; return c; END $ 3 DELIMITER $ create function fun_sumscores3(in_sname VARCHAR(10)) returns int begin declare c int; SELECT count(*) from student where sname=in_sname into c; return c; END $ select fun_sumscores(); select fun_sumscores2('1','01010101'); select fun_sumscores3('李浩');
五.图书馆部分
创建
create table JS( Jsno varchar(6) key, Jname varchar(10), Jdw varchar(20) ); create table TS( Tsno varchar(15) key, Tname varchar(20), Tnum SMALLINT, Tpos varchar(30), Cno varchar(4) ); create table CBS( Cno varchar(4) key, Cname varchar(20), Ctel varchar(12), Cyb varchar(6), Caddr varchar(40) ); create table JY( Jsno varchar(6), Tsno varchar(15), Jydate DATE, Hdate DATE, primary key(Jsno,Tsno) ); 修改数据库 alter table JS modify column Jsno char(6); 创建视图 create view Ts_view as select TS.Tsno,TS.Tname,CBS.Cname,TS.Tnum from TS,CBS where TS.Cno=CBS.Cno; create view Jy_view as select JY.jsno,Js.Jname,Ts.Tname,CBS.cname,JYdate,Hdate from JS,TS,CBS,JY where JY.jsno=Js.jsno and JY.Tsno=TS.Tsno and TS.Cno=CBS.cno; 创建视图 create index I_JS_Jsno on Js(Jsno); create index I_TS_Tsno on Ts(Tsno); create index I_CBS_Cno on CBS(Cno); create index I_JY_Jsno on JY(Jsno);
插入数据
insert into js values('111111','q','q'); insert into js values('222222','w','w'); insert into js values('333333','e','e'); insert into TS values('1','1',1,'1','1'); insert into CBS values('1','1','1','1','1'); insert into JY values('1','1','2019-1-1','2019-1-10');
完整性约束
alter table js add primary key(Jsno); alter table js modify jname VARCHAR(10) not null; alter table ts add primary key(Tsno,cno); alter table ts modify Tname VARCHAR(20) not null; alter table TS add CONSTRAINT c_Tnum CHECK (Tnum>0); alter table TS add foreign key(Cno) references CBS(Cno); alter table CBS add primary key(Cno); alter table CBS modify Cname VARCHAR(20) not null; alter table CBS add CONSTRAINT c_Cyb CHECK (Cyb in ('0','1','2','3','4','5','6','7','8','9')); alter table JY add primary key(Jsno,Tsno); alter table jy add foreign key(Jsno) references Js(Jsno); alter table jy add foreign key(Tsno) references Ts(Tsno); alter table TS add CONSTRAINT c_date CHECK (Jydate>Hdate);
来源:https://www.cnblogs.com/cky-2907183182/p/11898984.html