• Mysql 数据插入 修改删除


    MYSQL基础上机练习题(二) 数据插入、修改、删除

    一、实验目的:

    1. 数据插入、修改、删除
    2. 数据表的复制
    3. 字段分列

    二、实验内容:

    对实验一所展示的表进行数据输入、修改、删除 
    以下为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

     

  • 相关阅读:
    having——至少被订购过两回的订单
    产品——仓库表查询
    SQL 聚集函数使用
    select count(*)和select count(1)的区别 (转)
    SpringAOP 通知(advice)
    Spring AOP 实现原理与 CGLIB 应用
    cglib 动态代理基础篇
    模仿Struts2的Interceptor拦截器实现
    利用JDK动态代理机制实现简单拦截器
    java多线程总结二:后台线程(守护线程)
  • 原文地址:https://www.cnblogs.com/Pythons/p/10760636.html
Copyright © 2020-2023  润新知