-- 案例:修改张三的年龄
UPDATE student SET age=25 WHERE name='张三';
-- 案例:同时修改多个字段
UPDATE student SET name='李四', age=30 WHERE id=1;
三、删除数据(DELETE)
-- 删除指定记录
DELETE FROM 表名 WHERE 条件;
-- 清空整张表(重置自增ID)
TRUNCATE TABLE 表名;
DELETE vs TRUNCATE
对比项
DELETE
TRUNCATE
删除方式
逐行删除
整表清空
自增ID
不重置
重置为1
速度
慢
快
软删除(逻辑删除)
-- 添加标识字段
ALTER TABLE student ADD is_del TINYINT DEFAULT 0;
-- 删除时更新状态
UPDATE student SET is_del=1 WHERE id=1;
-- 查询有效数据
SELECT * FROM student WHERE is_del=0;
第三部分:字段约束
一、主键约束(PRIMARY KEY)
唯一标识每行记录
不能重复,不能为NULL
每表只能有一个主键
-- 方式1:字段后直接声明
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(20)
);
-- 方式2:在约束区域声明(支持联合主键)
CREATE TABLE person (
id INT,
name VARCHAR(20),
PRIMARY KEY (id)
);
-- 方式3:建表后添加
ALTER TABLE person ADD PRIMARY KEY (id);
二、自动增长(AUTO_INCREMENT)
-- 配合主键使用,自动生成唯一值
CREATE TABLE person (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
-- 插入时可以不指定id
INSERT INTO person (name) VALUES ('张三');
-- 插入时指定id为null也会自增
INSERT INTO person (id, name) VALUES (NULL, '李四');
三、非空约束(NOT NULL)
-- 强制字段必须填写值
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL
);
四、唯一约束(UNIQUE)
-- 值必须唯一,但可以为NULL
CREATE TABLE person (
id INT PRIMARY KEY,
phone VARCHAR(11) UNIQUE
);
对比项
PRIMARY KEY
UNIQUE
NULL值
不能
可以
数量
每表一个
可有多个
五、默认值(DEFAULT)
-- 不填写时使用默认值
CREATE TABLE person (
id INT PRIMARY KEY,
city VARCHAR(20) DEFAULT '北京'
);
-- 不指定city时默认为'北京'
INSERT INTO person (id, name) VALUES (1, '张三');
六、外键约束(了解)
-- 建立表间关联
CREATE TABLE category (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
CREATE TABLE product (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
c_id INT,
FOREIGN KEY (c_id) REFERENCES category(id)
);