上一章内容
数据插入、更新与删除
以下是创建一个名为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
是一个自动递增的主键字段。username
和email
是用于存储用户名和电子邮件地址的字符串字段,其中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
是一个假设存在的表,它有id
、username
、email
和password
字段。VALUES
后面跟的是要插入的具体数据。
查看表数据的命令
SELECT * FROM 表名;
我们可以看到,数据已经添加进来了。
在这里说一下 select * from 表名 的作用就是查看表的数据。
第二种方法
想要根据某个条件从一个表选择某些记录,并将这些记录插入到另一个表中,你可以结合 SELECT
、WHERE
和 INSERT 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'
条件的记录,并将这些记录的 username
、email
和 status
字段值插入到 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;
在这个例子中:
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
表中删除了名为“王五”的学生记录。同样,你需要根据实际需要调整删除条件。注意:删除操作是不可逆的,请谨慎操作。