小工具知识网

当前位置: 首页 > 行业知识 > 数据库原理及应用(MySQL版)MySQL实验指导参考答案(实验一到实验八)

行业知识

数据库原理及应用(MySQL版)MySQL实验指导参考答案(实验一到实验八)

2026-11-06 17:26:52 来源:互联网转载
点赞,收藏,慢慢看。实验一CREATE DATABASE STUDENTSDB;USE STUDENTSDB;CREATE TABLE STUDENT_INFO(    学号 CHAR(4) NOT NULL PRIMARY KEY,    姓名 CHAR(8) NOT NULL,    性别 CHAR(2),    出生日期 DATE,    家庭住址 VARCHAR(50));CREATE TABLE CURRICULUM(    课程编号 CHAR(4) NOT NULL PRIMARY KEY,    课程名称 VARCHAR(50),    学分 INT);CREATE TABLE GRADE(    学号 CHAR(4) NOT NULL,    课程编号 CHAR(4) NOT NULL,    分数 INT,    PRIMARY KEY(学号,课程编号));INSERT INTO STUDENT_INFO VALUES('0001','张青平','男','2000-10-01','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0002','刘东阳','男','1998-12-09','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0003','马晓夏','女','1995-05-12','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0004','钱忠理','男','1994-09-23','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0005','孙海洋','男','1995-04-03','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0006','郭小斌','男','1997-11-10','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0007','肖月玲','女','1996-12-07','衡阳市东风路77号');INSERT INTO STUDENT_INFO VALUES('0008','张玲珑','女','1997-12-24','衡阳市东风路77号');INSERT INTO CURRICULUM VALUES('0001','计算机应用基础',2);INSERT INTO CURRICULUM VALUES('0002','C语言课程设计',2);INSERT INTO CURRICULUM VALUES('0003','数据库原理及应用',2);INSERT INTO CURRICULUM VALUES('0004','英语',4);INSERT INTO CURRICULUM VALUES('0005','高等数学',4);INSERT INTO GRADE VALUES('0001','0001',80);INSERT INTO GRADE VALUES('0001','0002',91);INSERT INTO GRADE VALUES('0001','0003',88);INSERT INTO GRADE VALUES('0001','0004',85);INSERT INTO GRADE VALUES('0001','0005',77);INSERT INTO GRADE VALUES('0002','0001',73);INSERT INTO GRADE VALUES('0002','0002',68);INSERT INTO GRADE VALUES('0002','0003',80);INSERT INTO GRADE VALUES('0002','0004',79);INSERT INTO GRADE VALUES('0002','0005',73);INSERT INTO GRADE VALUES('0003','0001',84);INSERT INTO GRADE VALUES('0003','0002',92);INSERT INTO GRADE VALUES('0003','0003',81);INSERT INTO GRADE VALUES('0003','0004',82);INSERT INTO GRADE VALUES('0003','0005',75);ALTER TABLE CURRICULUM    MODIFY COLUMN 课程名称 VARCHAR(50) NULL;ALTER TABLE GRADEMODIFY COLUMN 分数 DECIMAL(5,2);ALTER TABLE STUDENT_INFO    ADD 备注 VARCHAR(50);CREATE DATABASE STUDB;USE STUDB;CREATE TABLE STU    AS SELECT * FROM STUDENTSDB.STUDENT_INFO;SET SQL_SAFE_UPDATES=0;DELETE FROM STU WHERE 学号 ='0004';UPDATE STU SET 家庭住址='滨江市新建路96号'WHERE 学号='0002';ALTER TABLE STU    DROP COLUMN 备注;DROP TABLE STU;DROP DATABASE STUDB;

实验二

USE STUDENTSDB;SELECT 学号,姓名,出生日期 FROM STUDENT_INFO;SELECT 姓名,家庭住址 FROM STUDENT_INFO WHERE 学号 ='0002';SELECT 姓名,出生日期 FROM STUDENT_INFOWHERE 出生日期>='1996-01-01' AND 性别='女';SELECT * FROM GRADE WHERE 分数 BETWEEN 70 AND 80;SELECT AVG(分数)平均分 FROM GRADE WHERE 课程编号 ='0002';SELECT COUNT(*)选课人数,COUNT(分数) 有成绩人数 FROM GRADE    WHERE 课程编号 ='0003';SELECT 姓名,出生日期 FROM STUDENT_INFO ORDER BY 出生日期 DESC;SELECT 学号,姓名 FROM STUDENT_INFO WHERE 姓名 LIKE '张%';SELECT 学号,姓名,性别,出生日期,家庭住址 FROM STUDENT_INFOORDER BY 性别 ASC,学号 DESC;SELECT 学号,AVG(分数) 平均成绩 FROM GRADE GROUP BY  学号;SELECT 学号,姓名 FROM STUDENT_INFO WHERE 姓名 LIKE '刘%'UNION SELECT 学号,姓名 FROM STUDENT_INFO WHERE 姓名 LIKE '张%';SELECT 姓名,出生日期 FROM STUDENT_INFO    WHERE 性别=(SELECT 性别 FROM STUDENT_INFO WHERE 姓名 ='刘东阳');SELECT 学号,姓名,性别 FROM STUDENT_INFO    WHERE 学号 IN(SELECT 学号 FROM GRADE        WHERE 课程编号 IN('0002','0005'));SELECT 课程编号,分数 FROM GRADE    WHERE 学号='0001'AND 分数> ANY(SELECT 分数 FROM GRADE        WHERE 学号 ='0002');SELECT 课程编号,分数 FROM GRADE    WHERE 学号 ='0001'AND 分数> ALL(SELECT 分数 FROM GRADE        WHERE 学号 ='0002');SELECT S.学号,姓名,分数 FROM STUDENT_INFO S,GRADE G    WHERE S.学号=G.学号 AND 分数 BETWEEN  80 AND 90;SELECT S.学号,姓名,分数 FROM STUDENT_INFO S INNER JOIN GRADE G    ON S.学号 =G.学号 INNER JOIN CURRICULUM C ON G.课程编号 =C.课程编号WHERE 课程名称 ='数据库原理及应用';SELECT S.学号,姓名,MAX(分数) 最高成绩FROM STUDENT_INFO S,GRADE GWHERE S.学号 =G.学号GROUP BY S.学号;SELECT S.学号,姓名,SUM(分数) 总成绩    FROM STUDENT_INFO S LEFT OUTER JOIN GRADE G ON S.学号 =G.学号GROUP BY S.学号;INSERT INTO GRADE VALUES('0004','0006',76);SELECT G.课程编号,课程名称,COUNT(*) 选修人数    FROM CURRICULUM C RIGHT OUTER JOIN GRADE G ON G.课程编号 =C.课程编号GROUP BY G.课程编号;

实验三

USE STUDENTSDB;ALTER TABLE STUDENT_INFO DROP PRIMARY KEY;ALTER TABLE CURRICULUM DROP PRIMARY KEY;ALTER TABLE GRADE DROP PRIMARY KEY;CREATE UNIQUE INDEX CNO_IDX ON CURRICULUM(课程编号);CREATE INDEX GRADE_IDX ON GRADE(分数);CREATE INDEX GRADE_SID_CID_IDX ON GRADE(学号,课程编号);SHOW INDEX FROM GRADE;DROP INDEX GRADE_IDX ON GRADE;SHOW INDEX FROM GRADE;CREATE VIEW V_STU_CAS    SELECT S.学号,姓名,课程编号 FROM STUDENT_INFO S,GRADE GWHERE S.学号=G.学号;SELECT*FROM V_STU_CWHERE 学号='0003';CREATE VIEW V_STU_GAS    SELECT S.学号,姓名,课程名称,分数    FROM STUDENT_INFO S,GRADE G,CURRICULUM C    WHERE S.学号=G.学号 AND G.课程编号 =C.课程编号;SELECT AVG(分数) FROM V_STU_G WHERE 学号='0001';ALTER VIEW V_STU_GASSELECT 学号,姓名,性别 FROM STUDENT_INFO;INSERT INTO V_STU_G(学号,姓名,性别)    VALUES('0010','陈婷婷','女');DELETE FROM V_STU_G WHERE 学号='0010';UPDATE GRADE SET 分数 =87WHERE 学号=(SELECT 学号 FROM V_STU_G WHERE 姓名='张青平')AND      课程编号=(SELECT 课程编号 FROM CURRICULUM WHERE 课程名称='高等数学');DROP VIEW V_STU_C,V_STU_G;实验四
CREATE DATABASE STUDENTS;USE STUDENTS;CREATE TABLE STU(    学号 CHAR(4) NOT NULL PRIMARY KEY,    姓名 CHAR(8),    性别 CHAR(2),    出生日期 DATE);CREATE TABLE SC(    学号 CHAR(4) NOT NULL,    课号 CHAR(4) NOT NULL,    成绩 DECIMAL(5,2) CHECK(成绩 BETWEEN 0 AND 100 ),    PRIMARY KEY(学号,课号),    CONSTRAINT FK_SNO FOREIGN KEY(学号) REFERENCES STU(学号));CREATE TABLE COURSE(    课号 CHAR(4) NOT NULL,    课名 CHAR(20),    学分 INT,    CONSTRAINT  UP_CNAME UNIQUE(课名));ALTER TABLE COURSEADD PRIMARY KEY(课号);ALTER TABLE SCADD CONSTRAINT  FK_CNO FOREIGN KEY (课号) REFERENCES COURSE(课号)ON UPDATE CASCADE;ALTER TABLE STUADD CONSTRAINT UP_SNAME UNIQUE (姓名);ALTER TABLE SCDROP FOREIGN KEY  FK_CNO;ALTER TABLE SCDROP FOREIGN KEY FK_SNO;ALTER TABLE STU DROP PRIMARY KEY ;ALTER TABLE COURSE DROP INDEX UP_CNAME;CREATE TABLE TEST(    DATE_TIME VARCHAR(50));CREATE TRIGGER TEST_TRG    AFTER INSERT    ON STU    FOR EACH ROW    INSERT INTO TEST VALUES(SYSDATE());INSERT INTO STU VALUES('1','MARY','F','1995-10-13');SELECT * FROM TEST;CREATE TRIGGER DEL_TRIG    AFTER DELETE    ON COURSE    FOR EACH ROW    DELETE FROM SC WHERE 课号=OLD.课号;DELETE FROM COURSE  WHERE 课号='1';SELECT * FROM SC;

实验五

delimiter @@create procedure stu_grade()begin    select 姓名,课程名称,分数 from student_info s,grade g,curriculum c    where s.学号=g.学号 and g.课程编号 =c.课程编号 and s.学号='0001';end @@delimiter;call stu_grade();delimiter @@create procedure stu_name(in name char(8))begin    select 姓名,max(分数) 最高分,min(分数) 最低分,avg(分数) 平均分    from student_info s,grade g,curriculum c    where s.学号 =g.学号 and g.课程编号 =c.课程编号 and 姓名 =name;end; @@delimiter;call stu_name('张青平');drop procedure stu_name;delimiter @@create procedure stu_g_r(in cno char(4),out num int)begin    select count(*) into num from grade where 课程编号 =cno;end; @@delimiter;call stu_g_r('0002',@num);select @num;set global log_bin_trust_function_creators=1;delimiter @@create function num_func(cname varchar(50))returns intbegin    declare num int;    select count(*) into num from grade g,curriculum c    where g.课程编号=c.课程编号 and 课程名称=cname;    return num;end;@@select num_func('c语言程序设计');delimiter @@create function avg_func(cname varchar(50))returns decimalbegin    declare v_avg decimal;    declare avg_cur cursor for select avg(分数) from grade g,curriculum c    where g.课程编号=c.课程编号 and 课程名称 =cname;    open avg_cur;    fetch avg_cur into v_avg;    close avg_cur;    return v_avg;end;@@select avg_func('c语言程序设计') 课程平均分;drop function avg_func;

实验六

CREATE USER ST_01@LOCALHOST IDENTIFIED BY '123455';USE MYSQL;SELECT * FROM USER;SET PASSWORD FOR ST_01@LOCALHOST='111111';GRANT SELECT ON TABLE STUDENTSDB.STUDENT_INFO TO ST_01@LOCALHOST;GRANT UPDATE(家庭住址) ON TABLE STUDENTSDB.STUDENT_INFOTO ST_01@LOCALHOST;GRANT ALTER ON TABLE STUDENTSDB.STUDENT_INFO TO ST_01@LOCALHOST;DELIMITER@@CREATE PROCEDURE STUDENTSDB.CN_PROC()BEGIN    DECLARE N INT;SELECT COUNT(*) INTO N FROM STUDENTSDB.STUDENT_INFO;SELECT N;END@@DELIMITER;GRANT EXECUTE ON PROCEDURE STUDENTSDB.CN_RROC TO ST_01@LOCALHOST;CALL STUDENTSDB.CN_PROC();GRANT CREATE,SELECT,INSERT,DROP ON STUDENTSDB.* TO ST_01@LOCALHOST;CREATE TABLE STUDENTSDB.ST_COPY SELECT * FROM STUDENTSDB.STUDENT_INFO;DROP TABLE STUDENTSDB.ST_COPY;REVOKE CREATE,SELECT,INSERT,DROP ON STUDENTSDB. * FROM ST_01@LOCALHOST;CREATE ROLE 'STUDENT'@'LOCALHOST';GRANT SELECT ON TABLE STUDENTSDB.STUDENT_INFO TO 'STUDENT'@'LOCALHOST';CREATE USER STU_02@LOCALHOST IDENTIFIED BY '123';GRANT 'STUDENT'@'LOCALHOST'TO STU_02@LOCALHOST;SET GLOBAL ACTIVATE_ALL_ROLES_ON_LOGIN=ON;SELECT * FROM STUDENTSDB.STUDENT_INFO;REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'STUDENT'@'LOCALHOST';DROP ROLE 'STUDENT'@'LOCALHOST';DROP USER ST_01@LOCALHOST,ST_02@LOCALHOST;

实验七

CREATE DATABASE STUDENT1;CREATE DATABASE STUDENT2;USE STUDENT1;SET SQL_SAFE_UPDATES = 0;DELETEFROM GRADE;USE STUDENTSDB;SELECT *FROM CURRICULUMINTO OUTFILE 'C:/PROGRAM DATA/MYSQL/MYSQL SERVER 8.0/UPLOADS/C.TXT'    FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '“'    LINES TERMINATED BY '\r\n';USE STUDENTSDB;SET SQL_SAFE_UPDATES = 0;DELETEFROM STUDENT_INFO;

实验八

CREATE TABLE BOOK(    BOOKID    VARCHAR(20) PRIMARY KEY,    TITLE     VARCHAR(50) NOT NULL,    AUTHOR    VARCHAR(50),    PUBLISHER VARCHAR(50),    PYEAR     CHAR(4),    LANGUAGE  CHAR(1) DEFAULT 'C',    STATE     CHAR(1) DEFAULT '0');CREATE TABLE STUDENT(    ID   CHAR(6) PRIMARY KEY,    NAME VARCHAR(20) NOT NULL,    DEPT VARCHAR(20) NOT NULL);CREATE TABLE ASSISTENT(    ID   CHAR(6) PRIMARY KEY,    NAME VARCHAR(20) NOT NULL);CREATE TABLE BBOOK(    BID   VARCHAR(20) NOT NULL,    STDID CHAR(6)     NOT NULL,    BDATE DATE        NOT NULL,    CONSTRAINT FK_BBOOK_BID        FOREIGN KEY (BID) REFERENCES BOOK (BOOKID),    CONSTRAINT FK_BBOOK_STDID        FOREIGN KEY (STDID) REFERENCES STUDENT (ID));CREATE TABLE RBOOK(    BOOKID VARCHAR(20) NOT NULL,    STDID  CHAR(6)     NOT NULL,    RDATE  DATE        NOT NULL,    CONSTRAINT FK_RBOOK_BOOKID        FOREIGN KEY (BOOKID) REFERENCES BOOK (BOOKID),    CONSTRAINT FK_RBOOK_STDID        FOREIGN KEY (STDID) REFERENCES STUDENT (ID));CREATE TABLE LEND(    STDID  CHAR(6)     NOT NULL,    ASTID  CHAR(6)     NOT NULL,    BOOKID VARCHAR(20) NOT NULL,    LDATE  DATE        NOT NULL,    CONSTRAINT FK_LEND_ASTID        FOREIGN KEY (STDID) REFERENCES STUDENT (ID),    CONSTRAINT FK_LEND_ASTID        FOREIGN KEY (ASTID) REFERENCES ASSISTENT (ID),    CONSTRAINT FK_LEND_BOOKID        FOREIGN KEY (BOOKID) REFERENCES BOOK (BOOKID));CREATE TABLE RETURNN(    STDID  CHAR(6)     NOT NULL,    ASTID  CHAR(6)     NOT NULL,    BOOKID VARCHAR(20) NOT NULL,    RDATE  DATE        NOT NULL,    CONSTRAINT FK_RETURN_STDID        FOREIGN KEY (STDID) REFERENCES STUDENT (ID),    CONSTRAINT FK_RETURN_ASTID        FOREIGN KEY (ASTID) REFERENCES ASSISTENT (ID),    CONSTRAINT FK_RETURN_BOOKID        FOREIGN KEY (BOOKID) REFERENCES BOOK (BOOKID));INSERT INTO STUDENT(ID, NAME, DEPT)VALUES (#STDID,#NAME,#DEPT);         /*#项请给出具体值,后面同*/           DELETE FROM STUDENT WHERE ID=#ID;                  UPDATE STUDENT SET NAME =#NAME,DEPT = #DEPT                  WHERE ID=#ID;                  INSERT INTO BOOK                  VALUES (#BOOKID,#TITLE,#AUTHOR,#PUBLISHER,#PYEAR,#LANGUAGE);                  DELETE FROM BOOK WHERE BOOKID = #BOOKID;                  UPDATE BOOK SET TITLE =#TILE,AUTHOR=#AUTHOR,                  PUBLISHER= #PUBLISHER,PYEAR=#PYEAR,LANGUAGE =#LANGUAGE                  WHERE BOOKID =#BOOKID;                  START TRANSACTION;                  INSERT INTO LEND(STDID, ASTID, BOOKID, LDATE)                  VALUES (#STDID,#ASTID,#BOOKID,#LDATE);                  UPDATE BOOK SET STATE = '2'                  WHERE BOOKID = #BOOKID;                  COMMIT;                  START TRANSACTION;                  INSERT INTO RETURN (STDID, ASTID, BOOKID, RDATE)                  VALUES (#STDID,#ASTID,#BOOKID,#RDATE);                  UPDATE BOOK SET STATE = '0'                  WHERE BOOKID =#BOOKID;                  COMMIT;

上一篇:监控储存服务器怎么查看?

下一篇:宝塔面板密码查询教程,轻松掌握密码查询方法