1. 程式人生 > >MySQL 資料操作與事務控制

MySQL 資料操作與事務控制

-- 課後作業
-- 1.使用如下語句,建立學生表student和班級表class
create table student (        -- 學生表
            xh char(4),             -- 學號
            xm varchar(10),         -- 姓名
            sex char(2),            -- 性別
            birthday date,          -- 出生日期
            sal double(7,2),        -- 獎學金
            studentcid int(2)       -- 學生班級號
)
create table class (          -- 班級表
            classid int(2),         -- 班級編號
            cname varchar(20),      -- 班級名稱
          ccount  int(3)          -- 班級人數
)
-- 2.基於上述學生表和班級表,完成如下問題
(1)新增三個班級資訊為:1,JAVA1班,null
                         2,JAVA2班,null
                         3,JAVA3班,null
(2)新增學生資訊如下:‘A001’,‘張三’,‘男’,‘01-5月-05’,100,1                    ????????  時間格式
(3)新增學生資訊如下:'A002','MIKE','男','1905-05-06',10 
(4)插入部分學生資訊: 'A003','JOHN','女’
(5)將A001學生性別修改為'女‘
(6)將A001學生資訊修改如下:性別為男,生日設定為1980-04-01
(7)將生日為空的學生班級修改為Java3班
(8)請使用一條SQL語句,使用子查詢,更新班級表中每個班級的人數字段

-- (1)
INSERT INTO class
VALUES(1,'JAVA1',NULL),
            (2,'JAVA2',NULL),
            (3,'JAVA3',NULL)
-- (2)
INSERT INTO student
VALUES('A001','張三','男','05-05-01',100,1)
-- (3) 
INSERT INTO student(xh,xm,sex,birthday,sal)
VALUES('A002','JOHN','男','1905-05-06',10)
-- (4) 
INSERT INTO student(xh,xm,sex)
VALUES('A003','MIKE','女')
-- (5) 
UPDATE student
set sex = '女'
WHERE xh = 'A001'
-- (6) 
UPDATE student
set sex = '男',birthday = '1980-04-01'
WHERE xh = 'A001'
-- (7) 
UPDATE student
set studentcid = 3
WHERE birthday IS NULL
-- (8) 
UPDATE class c 
SET ccount=(SELECT COUNT(*) FROM student s WHERE c.classid= s.studentcid); 

--3.使用如下語句,建立以下表
CREATE TABLE copy_emp   (
  empno int(4),
  ename varchar(20),
  hiredate date,
  deptno int(2),
  sal double(8,2)
)
-- 4.在第三題表的基礎上,完成下列問題
-- (1)在表copy_emp中插入資料,要求sal欄位插入空值,部門號50,參加工作時間為2000年1月1日,其他欄位隨意
INSERT INTO copy_emp
VALUES(1,'WD','2000-1-1',50,NULL)
-- (2)在表copy_emp中插入資料,要求把emp表中部門號為10號部門的員工資訊插入                 
INSERT INTO copy_emp
(SELECT e.empno,e.ename,e.hiredate,e.deptno,e.sal 
 FROM(SELECT * FROM emp WHERE deptno = 10)AS e)

-- (3)修改copy_emp表中資料,要求10號部門所有員工漲20%的工資
UPDATE copy_emp
SET sal = sal*1.2
WHERE deptno = 10
-- (4)修改copy_emp表中sal為空的記錄,工資修改為平均工資           
UPDATE copy_emp 
SET sal=(SELECT c.avgsal FROM (SELECT AVG(sal) avgsal FROM copy_emp) AS c)
WHERE sal IS NULL;
-- (5)把工資為平均工資的員工,工資修改為空
UPDATE copy_emp
SET sal = NULL
WHERE sal = (SELECT c.avgsal FROM (SELECT AVG(sal) avgsal FROM copy_emp) AS c)
-- (6)另外開啟視窗2檢視以上修改

-- (7)執行commit,視窗2中再次檢視以上資訊
COMMIT
-- (8)刪除工資為空的員工資訊
DELETE FROM copy_emp WHERE sal IS NULL
-- (9)執行rollback
ROLLBACK