Mysql 数据插入 修改删除
MYSQL基礎上機練習題(二) 數據插入、修改、刪除
一、實驗目的:
二、實驗內容:
對實驗一所展示的表進行數據輸入、修改、刪除?
以下為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)
- 1
?
(2)數據比較多的時候建議界面方式插入,插入后:?
2. 按照Employees表的內容插入數據(知識點:數據插入)
(1)代碼方式插入:
INSERT INTO Employees VALUES('000001', '王林', '大專', '1966-01-23', 1, 8, '中山路 32-1-508', '83355668', '2')
- 1
?
(2)數據比較多的時候建議界面方式插入,插入后:?
3. 修改Employees中修改李麗的DepartmentID為’4’(知識點:數據修改)
UPDATE employees SET DepartmentID = '4' WHERE Name = '李麗'
- 1
?
4. 創建一個與Employees結構和內容一致的表,名為Employees_Duplicated?(知識點:數據表的復制)
CREATE TABLE Employees_duplicated SELECT * FROM Employees
- 1
Employees_duplicated 表結構?
Employees_duplicated 數據?
?
(同樣,如果僅僅需要復制表的結構,可以用:
CREATE TABLE Employees_duplicated2 LIKE Employees
- 1
使得創建一個新的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
- 1
- 2
?
然后,把根據間隔符提取的字段分別插入到StreetName和RoomNumber兩個字段中,其中SUBSTRING_INDEX函數的用法為SUBSTING_INDEX(需要分列的字段,’間隔符’,間隔符前(為正)/后(為負)的第幾個的字符串)
UPDATE Employees_duplicated SET RoomNumber = SUBSTRING_INDEX(Address, ' ', -1);
UPDATE Employees_duplicated SET StreetName = SUBSTRING_INDEX(Address, ' ', 1);
- 1
- 2
?
6. 刪除Employees_Duplicated表中編號為’000001’的行內容(知識點:刪除某行數據)
DELETE FROM Employees_Duplicated WHERE EmployeeID = '000001'
- 1
?
7. 刪除Employees_Duplicated表中Address字段中所有內容(知識點:刪除某字段所有數據)
UPDATE Employees_Duplicated SET Address = ''
- 1
?
8. 在Salary表中插入Employees表中所有的EmployeesID?(知識點:選擇性數據插入)
INSERT INTO Salary(EmployeeID) SELECT EmployeeID FROM Employees
- 1
?
9. 在Salary表中插入InCome和OutCome值(知識點:帶存儲過程的數據插入)
(1)代碼方式插入(注意,該表有外鍵Departments中的DepartmentsID來插入)?
因為ActInCome是通過存儲過程來計算的,因此有兩種插入方式,結果都一樣
INSERT INTO Salary VALUES('000001', 2100.8, 123.09, 0)
- 1
INSERT INTO Salary(EmployeeID, InCome, OutCome) VALUES('000001', 2100.8, 123.09)
- 1
?
(插入時,插入的字段數必須和表結構一致,多一個數據或少一個數據都會導致發生#1136錯誤)
情況:在插入數據時可能會遇到這種情況:
原因:
插入時的數據個數與表中的字段個數不一致
解決方法:
檢查表中的字段數與代碼中所插入的數據字段數是否一致
例如:以下為Salary表中結構
雖然ActInCome中設置了空值,且是根據InCome-OutCome的存儲過程得出的結果字段,但代碼不能為(以下為錯誤代碼):
INSERT INTO Salary VALUES('000001', 2100.8, 123.09)
1
正確代碼應該為:
INSERT INTO Salary VALUES('000001', 2100.8, 123.09, 0)
1
或者定義只插入某幾個字段
INSERT INTO Salary(EmployeeID, InCome, OutCome) VALUES('000001', 2100.8, 123.09)
1
P.S:Mysql和SQL SERVER 不一樣,SQL SERVER不輸入該字段時,可以顯示默認值
(2)界面方式插入(刷新后,ActInCome就可以算出來)?
10. 在Salary中,修改編號為’020018’的InCome值(知識點:帶存儲過程的數據修改)
UPDATE Salary SET InCome = 5000 WHERE EmployeeID = '020018'
- 1
?
轉載于:https://www.cnblogs.com/Pythons/p/10760636.html
總結
以上是生活随笔為你收集整理的Mysql 数据插入 修改删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c/c++ 阻塞和非阻塞,fcntl应用
- 下一篇: 【转载】分布式事务 介绍