今天自洽了吗 2023-05-19 14:25 采纳率: 66.7%
浏览 21
已结题

SQL中关于建表语句问题

力扣上面一道SQL题的SQL架构如下:

Create table If Not Exists Employees(employee_id int, name varchar(20), reports_to int, age int)
Truncate table Employees
insert into Employees (employee_id, name, reports_to, age) values ('9', 'Hercy', 'None', '43')
insert into Employees (employee_id, name, reports_to, age) values ('6', 'Alice', '9', '41')
insert into Employees (employee_id, name, reports_to, age) values ('4', 'Bob', '9', '36')
insert into Employees (employee_id, name, reports_to, age) values ('2', 'Winston', 'None', '37')

它设置的employee_id,reports_to和age字段的类型都是int,为什么插入数据中写的都是字符串?
我在MySQL中直接使用这段语句建表会报错。

  • 写回答

3条回答 默认 最新

  • 码上团建 2023-05-19 14:36
    关注

    在MySQL中,如果表的字段类型是整数(int),插入数据时可以使用字符串或整数,但如果插入字符串,MySQL将尝试将其转换为整数。在这个例子中,虽然employee_id、reports_to和age的数据类型是int,但插入数据时使用了字符串,这会导致MySQL尝试将字符串转换为整数。如果字符串不能转换为整数,将会出现错误。因此,将插入数据中的单引号去掉即可。

    以下是更正后的代码:

    CREATE TABLE IF NOT EXISTS Employees (employee_id int, name varchar(20), reports_to int, age int);
    TRUNCATE TABLE Employees;
    INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (9, 'Hercy', NULL, 43);
    INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (6, 'Alice', 9, 41);
    INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (4, 'Bob', 9, 36);
    INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (2, 'Winston', NULL, 37);
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 5月19日