今天教一个做运营的朋友学习SQL。使用ChatGPT创建了一张练习用的表,并让其随机生成了一些测试数据。真的是用于编程教学和查资料的利器。

记录一下和ChatGPT交互的过程。


我:帮我创建一张商品销售表,要求包含销售日期、销售人员、商品类目、商品编号、商品名称、商品数量、商品价格、总价、店铺编号等信息,并生成20条数据,要求有5个不同的销售人员,8个商品类目,最后给出sql语句

ChatGPT:首先,创建数据表:

CREATE TABLE sales_data (
  date date,
  salesperson varchar(50),
  category varchar(50),
  item_id varchar(50),
  item_name varchar(50),
  quantity int,
  price float,
  total float,
  shop_id varchar(50)
);

接下来生成数据:

INSERT INTO sales_data (date, salesperson, category, item_id, item_name, quantity, price, total, shop_id)
VALUES
  ('2023-02-01', 'John Doe', 'Clothing', '1001', 'T-shirt', 5, 20, 100, 'S001'),
  ('2023-02-02', 'Jane Doe', 'Electronics', '2001', 'Smartphone', 2, 500, 1000, 'S002'),
  ('2023-02-03', 'John Doe', 'Beauty', '3001', 'Perfume', 1, 50, 50, 'S003'),
  ('2023-02-04', 'Jane Doe', 'Food', '4001', 'Chocolate', 10, 5, 50, 'S004'),
  ('2023-02-05', 'John Doe', 'Clothing', '1002', 'Jeans', 3, 50, 150, 'S005'),
  ('2023-02-06', 'Jane Doe', 'Electronics', '2002', 'Laptop', 1, 1000, 1000, 'S006'),
  ('2023-02-07', 'John Doe', 'Beauty', '3002', 'Lipstick', 2, 20, 40, 'S007'),
  ('2023-02-08', 'Jane Doe', 'Food', '4002', 'Bread', 5, 3, 15, 'S008'),
  ('2023-02-09', 'John Doe', 'Clothing', '1003', 'Jacket', 2, 100, 200, 'S009'),
  ('2023-02-10', 'Jane Doe', 'Electronics', '2003', 'Camera', 1, 300, 300, 'S010'),
  ('2023-02-11', 'John Doe', 'Beauty', '3003', 'Eyeliner', 3, 15, 45, 'S011'),
  ('2023-02-12', 'Jane Doe', 'Food', '4003', 'Chips', 8, 2, 16, 'S012'),
  ('2023-02-13', 'John Doe', 'Clothing', '1004', 'Shoes', 4, 50, 200, 'S013'),
  ('2023-02-14', 'Jane Doe', 'Electronics', '2004', 'Tablet', 2, 200, 400, 'S014'),
  ('2023-02-15', 'John Doe', 'Beauty', '3004', 'Mascara', 2, 10, 20, 'S015'),
  ('2023-02-16', 'Jane Doe', 'Food', '4004', 'Cake', 1, 15, 15, 'S016'),
  ('2023-02-17', 'John Doe', 'Clothing', '1005', 'Sc

我:继续

ChatGPT:续上面的代码:

 ('2023-02-18', 'Jane Doe', 'Electronics', '2005', 'Headphones', 3, 30, 90, 'S017'),
  ('2023-02-19', 'John Doe', 'Beauty', '3005', 'Blush', 1, 15, 15, 'S018'),
  ('2023-02-20', 'Jane Doe', 'Food', '4005', 'Coffee', 2, 5, 10, 'S019'),
  ('2023-02-21', 'John Doe', 'Clothing', '1006', 'Shirt', 2, 20, 40, 'S020');

这里可以看出,ChatGPT在续写代码时,不连贯,有些内容丢失了。另外在创建表时,字段名称用了date,和字段类型一样,不规范。

随后ChatGPT还贴心给出了一些SQL用法示例。

ChatGPT:最后,为了查询数据,可以使用以下 SQL 语句:

SELECT * FROM sales_data;

ChatGPT:这将返回所有的销售数据,也可以使用不同的筛选条件,例如:

SELECT * FROM sales_data WHERE salesperson='John Doe';

ChatGPT:这将返回所有销售人员为 John Doe 的销售数据。

我:不对,你这里只有1个销售人员,我要求有3个不同的销售人员

ChatGPT:对不起,我犯了一个错误。以下是修正后的代码:

INSERT INTO sales_data (sale_date, salesperson, category, product_id, product_name, quantity, price, total, store_id)
VALUES
  ('2023-02-01', 'Jane Doe', 'Electronics', '1001', 'Laptop', 1, 1000, 1000, 'S001'),
  ('2023-02-02', 'John Doe', 'Clothing', '1002', 'Shirt', 2, 50, 100, 'S002'),
  ('2023-02-03', 'Jim Smith', 'Food', '1003', 'Coffee', 1, 5, 5, 'S003'),
  ('2023-02-04', 'Jane Doe', 'Beauty', '1004', 'Perfume', 1, 20, 20, 'S004'),
  ('2023-02-05', 'John Doe', 'Electronics', '1005', 'Smartphone', 2, 500, 1000, 'S005'),
  ('2023-02-06', 'Jim Smith', 'Clothing', '1006', 'Pants', 3, 100, 300, 'S006'),
  ('2023-02-07', 'Jane Doe', 'Food', '1007', 'Tea', 2, 3, 6, 'S007'),
  ('2023-02-08', 'John Doe', 'Beauty', '1008', 'Lipstick', 1, 10, 10, 'S008'),
  ('2023-02-09', 'Jim Smith', 'Electronics', '1009', 'Tablet', 1, 700, 700, 'S009'),
  ('2023-02-10', 'Jane Doe', 'Clothing', '1010', 'Dress', 1, 150, 150, 'S010'),
  ('2023-02-11', 'John Doe', 'Food', '1011', 'Cake', 1, 8, 8, 'S011'),
  ('2023-02-12', 'Jim Smith', 'Beauty', '1012', 'Nail Polish', 2, 7, 14, 'S012'),
  ('2023-02-13', 'Jane Doe', 'Electronics', '1013', 'Smartwatch', 1, 200, 200, 'S013'),
  ('2023-02-14', 'John Doe', 'Clothing', '1014', 'Jacket', 1, 80, 80, 'S014'),
  ('2023-02-15', 'Jim Smith', 'Food', '1015', 'Soda', 2, 2, 4, 'S015'),
  ('2023-02-16', 'Jane Doe', 'Beauty', '1016', 'Shampoo', 2, 8, 16, 'S016'),
  ('2023-02-17', 'John Doe', 'Electronics', '1017', 'Camera', 1, 700, 700, 'S017'),
  ('2023-02-18', 'Jim Smith', 'Clothing', '1018', 'Shoes', 2, 100, 200, 'S018'),
  ('2023-02-19', 'Jane Doe', 'Food', '1019', 'Snacks', 3, 5, 15, 'S019'),

注意这里ChatGPT把日期字段名称改成了sale_date,这中间我没有任何提示,也许是他自己觉得不对劲,哈哈。

我:这些人员名字有些太像了,换成3个差异比较的名字吧

ChatGPT:好的,请告诉我您要替换成哪三个名字。

我:Smith Jane Tom

ChatGPT:好的,以下是生成的 SQL 语句:

INSERT INTO sales_data (sale_date, salesperson, category, product_id, product_name, quantity, price, total, store_id)
VALUES
  ('2023-02-01', 'Smith', 'Electronics', '1001', 'Laptop', 1, 1000, 1000, 'S001'),
  ('2023-02-02', 'Jane', 'Clothing', '1002', 'Shirt', 2, 50, 100, 'S002'),
  ('2023-02-03', 'Tom', 'Food', '1003', 'Coffee', 1, 5, 5, 'S003'),
  ('2023-02-04', 'Smith', 'Beauty', '1004', 'Perfume', 1, 20, 20, 'S004'),
  ('2023-02-05', 'Jane', 'Electronics', '1005', 'Smartphone', 2, 500, 1000, 'S005'),
  ('2023-02-06', 'Tom', 'Clothing', '1006', 'Pants', 3, 100, 300, 'S006'),
  ('2023-02-07', 'Smith', 'Food', '1007', 'Tea', 2, 3, 6, 'S007'),
  ('2023-02-08', 'Jane', 'Beauty', '1008', 'Lipstick', 1, 10, 10, 'S008'),
  ('2023-02-09', 'Tom', 'Electronics', '1009', 'Tablet', 1, 700, 700, 'S009'),
  ('2023-02-10', 'Smith', 'Clothing', '1010', 'Dress', 1, 150, 150, 'S010'),
  ('2023-02-11', 'Jane', 'Food', '1011', 'Cake', 1, 8, 8, 'S011'),
  ('2023-02-12', 'Tom', 'Beauty', '1012', 'Nail Polish', 2, 7, 14, 'S012'),
  ('2023-02-13', 'Smith', 'Electronics', '1013', 'Smartwatch', 1, 200, 200, 'S013'),
  ('2023-02-14', 'Jane', 'Clothing', '1014', 'Jacket', 1, 80, 80, 'S014'),
  ('2023-02-15', 'Tom', 'Food', '1015', 'Soda', 2, 2, 4, 'S015'),
  ('2023-02-16', 'Smith', 'Beauty', '1016', 'Shampoo', 2, 8, 16, 'S016'),
  ('2023-02-17', 'Jane', 'Electronics', '1017', 'Camera', 1, 700, 700, 'S017'),
  ('2023-02-18', 'Tom', 'Clothing', '1018', 'Shoes', 2, 100, 200, 'S018'),
  ('2023-02-19', 'Smith', 'Food', '1019', 'Snacks', 3, 5, 15, 'S019');

我:创建表的sql中缺少id

ChatGPT:好的,以下是生成的创建表的 SQL 语句:

CREATE TABLE sales_data (
  id INT AUTO_INCREMENT PRIMARY KEY,
  sale_date DATE,
  salesperson VARCHAR(50),
  category VARCHAR(50),
  product_id VARCHAR(50),
  product_name VARCHAR(50),
  quantity INT,
  price DECIMAL(10, 2),
  total DECIMAL(10, 2),
  store_id VARCHAR(50)
);

这里日期字段名称也同步改过来了,同样也是不声不响的。


随后我问了一些关于SQL创建用户和授权,以及MAC上MySQL配置的一些问题,回答得也比较完善。

总的来说,虽然有些小问题,但对于学习一门新的编程语言以及查询一些基础IT资料等,对于解决这些逻辑确定性较强的问题,ChatGPT的确是一个不错的工具。