데이터베이스 실험 3: 데이터 업데이트 및 보기

실험 3 데이터 업데이트 및 보기

하나. 목적

1. 데이터베이스의 관련 속성에 대한 이해를 심화합니다.

2. 다양한 구속력 있는 이해

3. 데이터베이스의 데이터를 업데이트하는 방법을 알아보세요.

4. 뷰를 생성하고 쿼리하는 방법을 알아보세요.

2. 실험적 내용

생성된 각 테이블에 적절한 데이터를 입력하고 데이터 삽입, 삭제, 수정을 연습합니다. 데이터 및 데이터 입력 시 키 코드 제약 조건, 외래 코드 제약 조건, non-null 제약 조건, 고유 제약 조건, 값 제약 조건 및 기타 제약 조건 탐지에 주의하세요. 삭제 및 수정을 교실 수업과 결합하여 그 의미를 이해합니다. 동시에 뷰 생성, 쿼리, 삭제를 연습해 보세요.

1. S 테이블에 새로운 데이터를 삽입합니다.

2. 공급업체 S3는 P2 부품 350개를 J2 프로젝트에 공급하고 해당 테이블에 데이터를 삽입합니다.

3. J1 프로젝트 명칭을 건설엔지니어링그룹으로, 도시를 지난으로 변경

4. 빨간색 부분을 모두 파란색으로 변경

5. S2에서 J1을 공급하는 부품 P3이 부품 P4로 변경됩니다.

6. 프로젝트 J3의 모든 정보를 삭제합니다.

7. 공급자 관계에서 S2의 레코드를 삭제하고 공급 관계에서 해당 레코드를 삭제합니다.

8. SQL 명령과 그래픽 인터페이스 방법을 사용하여 공급업체 번호(SNO), 부품 번호(PNO) 및 공급 수량(QTY)을 포함하여 건설 엔지니어링 그룹에 대한 공급 상황 보기를 설정합니다.

9. 위 뷰를 바탕으로 건설엔지니어링그룹 프로젝트에 사용되는 각종 부품코드와 수량을 조회해 보세요.

10. SQL 명령과 그래픽 인터페이스 방법을 사용하여 공급업체 이름(SName), 부품 이름(PName), 프로젝트 이름(Jname) 및 공급 수량(QTY)을 포함하여 건설 엔지니어링 그룹에 대한 공급 상황 보기를 생성합니다.

11. 위 뷰에 대해 건설엔지니어링그룹 프로젝트에 사용된 각종 부품의 명칭과 수량을 조회해 보세요.

12. 급여 테이블이 있는데, 테이블 구조는 다음 표와 같습니다.

급여번호

임금 일자리

급여 규모 급여

직업 보충

출석

의료

주지부

기타 보충제

 임차료

수도 요금

전기요금

예비 기금

소득세

원본 급여 데이터를 포함하고 지불할 급여 금액과 실제 급여를 반영하는 뷰를 만듭니다.

3. 실험과정 및 코드

  1. S 테이블에 새 데이터 삽입
--用Sql语句插入数据:'S6','智造',10,'济南'
INSERT 
INTO s 
VALUES('S6','智造',10,'济南');
--或
INSERT 
INTO s(SNO,SNAME,STATUS,CITY) 
VALUES('S6','智造',10,'济南');
  1. 공급업체 S3는 P2 부품 350개를 J2 프로젝트에 공급합니다. 이 데이터를 해당 테이블에 삽입합니다.
INSERT 
INTO spj 
VALUES('S3','P2','J2',350);
--或
INSERT 
INTO spj(SNO,PNO,JNO,QTY) 
VALUES('S3','P2','J2',350);
  1. J1사업명을 건설엔지니어링그룹으로, 도시를 지난으로 변경
UPDATE j
SET JNAME='建工集团',CITY='济南'
WHERE jno='J1';
  1. 빨간색 부분을 모두 파란색으로 변경
UPDATE p
SET color='蓝'
WHERE color='红';
  1. S2에서 J1을 공급하는 부품 P3이 부품 P4로 변경됩니다.
UPDATE spj
SET PNO='P4'
WHERE SNO='S2' AND JNO='J1'AND PNO='P3';
  1. 프로젝트 J3의 모든 정보 삭제
--(1)	SQL语句直接删除(将外键约束删除时由RESTRICT改为CASCADE,即实现级联删除)
DELETE 
FROM j
WHERE JNO='J3'
--(2)	创建表时,创建级联操作
-- SPJ表
CREATE TABLE SPJ (
	SNO CHAR (2),
	PNO CHAR (2),
	JNO CHAR (7),
	QTY INT,
	PRIMARY KEY (SNO, PNO, JNO),
	FOREIGN KEY (SNO) REFERENCES s (SNO)ON DELETE CASCADE,
	FOREIGN KEY (PNO) REFERENCES p (PNO)ON DELETE CASCADE,
	FOREIGN KEY (JNO) REFERENCES j (JNO)ON DELETE CASCADE
);

--(3)	用触发器实现级联删除
--创建触发器deletej_spj:
    CREATE TRIGGER deletej_spj
    AFTER
    DELETE on spj
    for each ROW
    BEGIN
    DELETE FROM j WHERE JNO=OLD.JNO;
    END;
--再运行删除语句:
	   DELETE from j where JNO='J3';
--删除触发器的语句是:
	   drop TRIGGER deletej_spj;
--(4)	也可以用两个SQL语句进行删除,先删除spj表中的,再删除j表中的
    DELETE from spj where JNO='J3';
    DELETE from j where JNO='J3';
  1. 공급자 관계에서 S2의 기록을 삭제하고 공급 상태 관계에서 해당 기록을 삭제합니다.
--(1)	SQL语句直接删除(将外键约束删除时由RESTRICT改为CASCADE,即实现级联删除)
    DELETE 
    FROM s
    WHERE SNO='S2';
--(2)	创建表时,创建级联操作
--见上一题
--(3)	用触发器实现级联删除
--创建触发器deletes_spj:
    CREATE TRIGGER deletes_spj
    AFTER
    DELETE on spj
    for each ROW
    BEGIN
    DELETE FROM s WHERE SNO=OLD.SNO;
    END;
--再运行删除语句:
	   DELETE from s where SNO='S2';
--删除触发器的语句是:
	   drop TRIGGER deletes_spj;
--(4)	也可以用两个SQL语句进行删除,先删除spj表中的,再删除j表中的
    DELETE from spj where SNO='S2';
    DELETE from s where SNO='S2';
  1. SQL 명령과 그래픽 인터페이스 방법을 사용하여 공급업체 번호(SNO), 부품 번호(PNO) 및 공급 수량(QTY)을 포함하여 건설 엔지니어링 그룹에 대한 공급 상황 보기를 생성합니다.

        SQL 문: 

--SQL语句:
	CREATE VIEW spq
    AS
    SELECT SNO,PNO,QTY
    FROM spj
    WHERE JNO in(SELECT JNO FROM j WHERE JNAME='建工集团');

        그래픽 인터페이스:     보기 - 마우스 오른쪽 버튼 클릭 - 새 보기

  1. 위 화면의 경우 건설엔지니어링그룹 프로젝트에서 사용되는 각종 부품코드와 수량을 조회해 보세요.
SELECT PNO,SUM(QTY)
FROM spq
GROUP BY PNO;
  1.  SQL 명령과 그래픽 인터페이스 방법을 사용하여 공급업체 이름(SName), 부품 이름(PName), 프로젝트 이름(Jname) 및 공급 수량(QTY)을 포함하여 건설 엔지니어링 그룹에 대한 공급 상황 보기를 생성합니다.

        SQL 문: 

--SQL语句:
	CREATE VIEW spjq
    AS
    SELECT SNAME,PNAME,JNAME,QTY
    FROM s,p,j,spj
    WHERE s.sno=spj.sno AND p.pno=spj.pno AND j.jno=spj.jno AND jname='建工集团';

        그래픽 인터페이스: 

 

  1. 위 화면에 대해 건설엔지니어링그룹 프로젝트에 사용된 각종 부품의 명칭과 수량을 조회해 보세요.
SELECT PNAME,SUM(QTY)
FROM spjq
GROUP BY PNAME;
  1. 급여 테이블이 있는데, 테이블 구조는 다음 표와 같습니다.

급여번호

임금 일자리

급여 규모 급여

직업 보충

출석

의료

주지부

기타 보충제

 임차료

수도 요금

전기요금

예비 기금

소득세

        원본 급여 데이터를 포함하고 지불할 급여 금액과 실제 급여를 반영하는 뷰를 만듭니다.

        먼저 직원이라는 이름의 급여 테이블을 만듭니다.

--先建一个工资表,我给它命名为employee,SQL语句如下:
		CREATE TABLE `employee`  (
        `ID` char(10) COMMENT '工资号',
 		`BASE` double COMMENT '岗位工资',
 		`GRADE` double COMMENT '薪级工资',
        `ZB` double  COMMENT '职补',
 		`KQ` double  COMMENT '考勤',
  		`YL` double COMMENT '医疗',
  		`ZJB` double  COMMENT '驻济补',
  		`QTB` double  COMMENT '其它补',
  		`FZ` double COMMENT '房租',
  		`SF` double  COMMENT '水费',
  		`DF` double  COMMENT '电费',
  		`GJJ` double  COMMENT '公积金',
  		`SDS` double  COMMENT '所得税',
  		PRIMARY KEY (`ID`)
)
-- COMMENT是注释的意思

        나는 그것에 대한 몇 가지 데이터를 썼습니다: 

         SQL 문을 사용하여 뷰를 만듭니다.

CREATE VIEW `员工工资条` (`工资号`,`岗位工资`,`薪级工资`,`职补`,`考勤`,
							`医疗`,`驻济补`,`其他补`,`房租`,`水费`,`电费`,
							`公积金`,`所得税`,`应付工资`,`实发工资`) 
AS SELECT ID,BASE,GRADE,ZB,KQ,YL,ZJB,QTB,FZ,SF,DF,GJJ,SDS, 
					(BASE+GRADE+ZB+KQ+YL+ZJB+QTB), 
					((BASE+GRADE+ZB+KQ+YL+ZJB+QTB)-(FZ+SF+DF+GJJ+SDS))
FROM employee 
GROUP BY ID;
/*
这道题的难点主要是应发工资和实发工资的计算问题。
使用公式:
应发工资=岗位工资+薪级工资+职补+考勤+医疗+驻济补+其他补
实发工资=应发工资-房租-水费-电费-公积金-所得税
*/

         보다:

 

추천

출처blog.csdn.net/pzcxl/article/details/124660717