1. 程式人生 > >MYSQL基礎上機練習題(二) 資料插入、修改、刪除

MYSQL基礎上機練習題(二) 資料插入、修改、刪除

一、實驗目的:

  1. 資料插入、修改、刪除
  2. 資料表的複製
  3. 欄位分列

二、實驗內容:

對上一章所展示的表進行資料輸入、修改、刪除
上一章各表的欄位屬性
以下為Employees,Departments,Salary表中的內容

Employees表
Mysql 練習資料
Mysql 練習資料

Departments表
Mysql 練習資料

Salary表
Mysql 練習資料

三、題目:

1. 按照Departments表的內容插入資料(知識點:資料插入)

2. 按照Employees表的內容插入資料(知識點:資料插入)

3. 修改Employees中修改李麗的DepartmentID為’4’(知識點:資料修改)

4. 建立一個與Employees結構和內容一致的表,名為Employees_Duplicated (知識點:資料表的複製)

5. 對Employees_Duplicated表中的Address欄位以空格為間隔符,分列為StreetName(街道名)和RoomName(房號)(知識點:欄位分列)

6. 刪除Employees_Duplicated表中編號為’000001’的行內容(知識點:刪除某行資料)

7. 刪除Employees_Duplicated表中Address欄位中所有內容(知識點:刪除某欄位所有資料)

8. 在Salary表中插入Employees表中所有的EmployeesID (知識點:選擇性資料插入)

9. 在Salary表中插入InCome和OutCome值(知識點:帶儲存過程的資料插入)

10. 在Salary中,修改編號為’020018’的InCome值(知識點:帶儲存過程的資料修改)

###三、程式碼:

1. 按照Departments表的內容插入資料(知識點:資料插入)

(1)程式碼方式插入(注意,該表有外來鍵Departments中的DepartmentsID來插入):

INSERT INTO Departments VALUES('1', '財務部', NULL)

Mysql 插入資料

(2)資料比較多的時候建議介面方式插入,插入後:
Mysql 資料插入

2. 按照Employees表的內容插入資料(知識點:資料插入)

(1)程式碼方式插入:

INSERT INTO Employees VALUES
('000001', '王林', '大專', '1966-01-23', 1, 8, '中山路 32-1-508', '83355668', '2')

Mysql 插入資料

(2)資料比較多的時候建議介面方式插入,插入後:
Mysql 插入資料

3. 修改Employees中修改李麗的DepartmentID為’4’(知識點:資料修改)

UPDATE employees SET DepartmentID = '4' WHERE Name = '李麗'

Mysql 修改資料

4. 建立一個與Employees結構和內容一致的表,名為Employees_Duplicated (知識點:資料表的複製)

CREATE TABLE Employees_duplicated SELECT * FROM Employees

Employees_duplicated 表結構
Mysql 複製舊錶結構和資料到新表

Employees_duplicated 資料
Mysql 複製舊錶結構和資料到新表
(同樣,如果僅僅需要複製表的結構,可以用:

CREATE TABLE Employees_duplicated2 LIKE Employees

使得建立一個新的TABLE和Employees的TABLE有同樣的表結構

5. 對Employees_Duplicated表中的Address欄位以空格為間隔符,分列為StreetName(街道名)和RoomName(房號)(知識點:欄位分列)

首先,需要新增兩個欄位:StreetName和RoomName

ALTER TABLE Employees_duplicated ADD COLUMN RoomNumber VARCHAR(40) COMMENT '房號' AFTER Address
ALTER TABLE Employees_duplicated ADD COLUMN StreetName VARCHAR(40) COMMENT '街名' AFTER Address

Mysql 分列
然後,把根據間隔符提取的欄位分別插入到StreetName和RoomNumber兩個欄位中,其中SUBSTRING_INDEX函式的用法為SUBSTING_INDEX(需要分列的欄位,’間隔符’,間隔符前(為正)/後(為負)的第幾個的字串)

UPDATE Employees_duplicated SET RoomNumber = SUBSTRING_INDEX(Address, ' ', -1);
UPDATE Employees_duplicated SET StreetName = SUBSTRING_INDEX(Address, ' ', 1);

Mysql 分列

6. 刪除Employees_Duplicated表中編號為’000001’的行內容(知識點:刪除某行資料)

DELETE FROM Employees_Duplicated WHERE EmployeeID = '000001'

Mysql 刪除某行資料

7. 刪除Employees_Duplicated表中Address欄位中所有內容(知識點:刪除某欄位所有資料)

UPDATE Employees_Duplicated SET Address = '' 

Mysql 清空某欄位中所有資料

8. 在Salary表中插入Employees表中所有的EmployeesID (知識點:選擇性資料插入)

INSERT INTO Salary(EmployeeID) SELECT EmployeeID FROM Employees

Mysql 選擇一表中某些資料插入到另一表

9. 在Salary表中插入InCome和OutCome值(知識點:帶儲存過程的資料插入)

(1)程式碼方式插入(注意,該表有外來鍵Departments中的DepartmentsID來插入)
因為ActInCome是通過儲存過程來計算的,因此有兩種插入方式,結果都一樣

INSERT INTO Salary VALUES('000001', 2100.8, 123.09, 0)
INSERT INTO Salary(EmployeeID, InCome, OutCome) VALUES('000001', 2100.8, 123.09)

Mysql 插入帶儲存過程的資料
(插入時,插入的欄位數必須和表結構一致,多一個數據或少一個數據都會導致發生#1136錯誤(詳細點選此處))

(2)介面方式插入(重新整理後,ActInCome就可以算出來)
Mysql 插入帶儲存過程的資料

10. 在Salary中,修改編號為’020018’的InCome值(知識點:帶儲存過程的資料修改)

UPDATE Salary SET InCome = 5000 WHERE EmployeeID = '020018'

Mysql 帶儲存過程的修改資料