MYSQL基礎上機練習題(二) 資料插入、修改、刪除
阿新 • • 發佈:2019-01-05
一、實驗目的:
- 資料插入、修改、刪除
- 資料表的複製
- 欄位分列
二、實驗內容:
對上一章所展示的表進行資料輸入、修改、刪除
上一章各表的欄位屬性
以下為Employees,Departments,Salary表中的內容
Employees表
Departments表
Salary表
三、題目:
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)
(2)資料比較多的時候建議介面方式插入,插入後:
2. 按照Employees表的內容插入資料(知識點:資料插入)
(1)程式碼方式插入:
INSERT INTO Employees VALUES ('000001', '王林', '大專', '1966-01-23', 1, 8, '中山路 32-1-508', '83355668', '2')
(2)資料比較多的時候建議介面方式插入,插入後:
3. 修改Employees中修改李麗的DepartmentID為’4’(知識點:資料修改)
UPDATE employees SET DepartmentID = '4' WHERE Name = '李麗'
4. 建立一個與Employees結構和內容一致的表,名為Employees_Duplicated (知識點:資料表的複製)
CREATE TABLE Employees_duplicated SELECT * FROM Employees
Employees_duplicated 表結構
Employees_duplicated 資料
(同樣,如果僅僅需要複製表的結構,可以用:
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
然後,把根據間隔符提取的欄位分別插入到StreetName和RoomNumber兩個欄位中,其中SUBSTRING_INDEX函式的用法為SUBSTING_INDEX(需要分列的欄位,’間隔符’,間隔符前(為正)/後(為負)的第幾個的字串)
UPDATE Employees_duplicated SET RoomNumber = SUBSTRING_INDEX(Address, ' ', -1);
UPDATE Employees_duplicated SET StreetName = SUBSTRING_INDEX(Address, ' ', 1);
6. 刪除Employees_Duplicated表中編號為’000001’的行內容(知識點:刪除某行資料)
DELETE FROM Employees_Duplicated WHERE EmployeeID = '000001'
7. 刪除Employees_Duplicated表中Address欄位中所有內容(知識點:刪除某欄位所有資料)
UPDATE Employees_Duplicated SET Address = ''
8. 在Salary表中插入Employees表中所有的EmployeesID (知識點:選擇性資料插入)
INSERT INTO Salary(EmployeeID) SELECT EmployeeID FROM Employees
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)
(插入時,插入的欄位數必須和表結構一致,多一個數據或少一個數據都會導致發生#1136錯誤(詳細點選此處))
(2)介面方式插入(重新整理後,ActInCome就可以算出來)
10. 在Salary中,修改編號為’020018’的InCome值(知識點:帶儲存過程的資料修改)
UPDATE Salary SET InCome = 5000 WHERE EmployeeID = '020018'