上一章内容

数据插入、更新与删除

以下是创建一个名为users的表并定义其字段结构的SQL命令(以MySQL为例):

CREATE TABLE users (
    id INT AUTO_INCREMENT, 
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

在这个例子中:

  • id 是一个自动递增的主键字段。
  • usernameemail 是用于存储用户名和电子邮件地址的字符串字段,其中 email 字段要求唯一(UNIQUE约束)。
  • password 也是一个用于存储密码的字符串字段(在实际应用中,这个字段通常会存储加密后的密码)。
  • created_at 是一个时间戳字段,默认值为当前时间(CURRENT_TIMESTAMP)。

在数据库管理或编程中,插入数据通常使用SQL(结构化查询语言)的INSERT INTO命令语句。以下是一个基本的插入数据的例子:

-- 插入一条记录到名为'users'的表中
INSERT INTO users (id, username, email, password)
VALUES (1, 'JohnDoe', 'john.doe@example.com', 'hashed_password');

-- 如果表中有自增主键,可以省略其值
INSERT INTO users (username, email, password)
VALUES ('JaneDoe', 'jane.doe@example.com', 'another_hashed_password');

在上述例子中,users是一个假设存在的表,它有idusernameemailpassword字段。VALUES后面跟的是要插入的具体数据。

查看表数据的命令

SELECT * FROM 表名;
在这里插入图片描述
我们可以看到,数据已经添加进来了。
在这里说一下 select * from 表名 的作用就是查看表的数据。

第二种方法

想要根据某个条件从一个表选择某些记录,并将这些记录插入到另一个表中,你可以结合 SELECTWHEREINSERT INTO 来实现。

例如,假设你有一个名为 old_users 的表,你想把其中状态为 ‘active’ 的用户信息插入到新表 new_users 中:

INSERT INTO new_users (username, email, status)
SELECT username, email, status
FROM old_users
WHERE status = 'active';

在这个例子中,SELECT 语句从 old_users 表中选择满足 status = 'active' 条件的记录,并将这些记录的 usernameemailstatus 字段值插入到 new_users 表相应的字段中。

使用命令更新数据

在SQL中,更新数据通常使用UPDATE语句。以下是一个基本的更新数据命令示例:
在这里插入图片描述

-- 更新users表中id为1的用户的email地址
UPDATE users SET email = 'new.email@example.com' WHERE id = 1;

-- 或者同时更新多个字段
UPDATE users SET email = 'new.email@example.com', password = 'new_password' WHERE id = 1;
1、replace into 批量更新(UNIQUE索引或PRIMARY KEY)
replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');

在这个例子中:

  • UPDATE users 表明我们要更新名为users的表中的记录。
  • SET email = 'new.email@example.com' 定义了要更新的字段及其新的值。
  • WHERE id = 1 是一个条件,指定了哪些记录应该被更新(即id为1的用户)。

请注意,在实际操作时,请确保你具有足够的权限来更新指定的数据,并且根据实际情况调整字段名和条件。

使用命令删除数据

在SQL中,删除数据通常使用DELETE语句。以下是一个基本的删除数据命令示例:

-- 删除users表中id为1的用户记录
DELETE FROM users WHERE id = 1;

-- 或者删除所有状态为inactive的用户
DELETE FROM users WHERE status = 'inactive';

在这里插入图片描述
删除完之后再查看就没有数据了。

在这个例子中:

  • DELETE FROM users 表明我们要从名为users的表中删除记录。
  • WHERE id = 1 是一个条件,指定要删除的记录(即id为1的用户)。
  • 第二个示例中,WHERE status = 'inactive' 指定删除所有状态为’inactive’的用户记录。

请注意,在执行删除操作时务必谨慎,因为一旦数据被删除就无法恢复。根据实际情况调整字段名和条件,确保你正在删除正确的数据,并且具有足够的权限进行此操作。


练习

1. 创建表:

假设你要创建一个名为 students 的表,用于存储学生信息。表中包含以下字段:

  • id(主键,自动递增)
  • name(学生姓名,字符串类型,非空)
  • email(学生邮箱,字符串类型,唯一)
  • major(学生专业,字符串类型)
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    major VARCHAR(100)
);

2. 插入数据:

插入以下3条学生记录到刚刚创建的 students 表中:

  • 学生1:id为自动生成,姓名“张三”,邮箱“zhangsan@example.com”,专业“计算机科学”
  • 学生2:id为自动生成,姓名“李四”,邮箱“lisi@example.com”,专业“数学与应用数学”
  • 学生3:id为自动生成,姓名“王五”,邮箱“wangwu@example.com”,专业“物理学”

请编写SQL命令插入这些记录。

INSERT INTO students (name, email, major)
VALUES ('张三', 'zhangsan@example.com', '计算机科学'),
       ('李四', 'lisi@example.com', '数学与应用数学'),
       ('王五', 'wangwu@example.com', '物理学');

3.更新数据

比如要将“张三”的专业从“计算机科学”更改为“软件工程”,你可以使用UPDATE语句:

-- 更新张三的专业为'软件工程'
UPDATE Students SET major = '软件工程' WHERE name = '张三';

-- 更新后查询以确认更改
SELECT * FROM Students WHERE name = '张三';

这样就成功地将“张三”的专业更新为了“软件工程”。同样,你可以根据需要更改的字段和条件进行调整。

4.删除数据

如果你想从Students表中删除一个学生的记录,比如要删除“王五”的记录,你可以使用DELETE FROM语句:

-- 删除王五的记录
DELETE FROM Students  WHERE name = '王五';

-- 删除后查询以确认
SELECT * FROM Students WHERE name = '王五'; -- 此时应无结果返回

这样就成功地从Students表中删除了名为“王五”的学生记录。同样,你需要根据实际需要调整删除条件。注意:删除操作是不可逆的,请谨慎操作。


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐