插入多条数据(SQL):

在 SQL 中插入多条数据时,可以使用 单个 INSERT 语句结合 多组 VALUES 来实现。以下是详细语法和注意事项:


基本语法

INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES
  (值1_1, 值1_2, 值1_3, ...),  -- 第一条数据
  (值2_1, 值2_2, 值2_3, ...),  -- 第二条数据
  ...                          -- 更多数据
;
insert into student values(910,'张老大','男','1985-01-02','计算机系','北京市海淀区');

学生数据表

INSERT INTO student VALUES
  (905, '张老大', '男', '1985-01-01', '计算机系', '北京市海淀区'),
  (906, '张老二', '男', '1986-01-01', '中文系', '湖南省永州市'),
  (907, '张三', '女', '1986-01-01', '中文系', '辽宁省阜新市'),
  (908, '李四', '男', '1986-01-01', '英语系', '福建省厦门市'),
  (909, '王五', '女', '1986-01-01', '英语系', '北京市昌平区'),
  (900, '王六', '男', '1986-01-01', '计算机系', '湖南省衡阳市');

修改数据库表的字段:

修改数据库表的字段:

方式一:修改字段名

修改表的字段, alter table表名 change 旧字段 新字段 数据类型()

ALTER TABLE student 
CHANGE department dept VARCHAR(15);  -- 将 department 字段重命名为 dept

方式二:

ALTER TABLE表名 MODIFY 字段名 新数据类型;
ALTER TABLE users MODIFY age INT;

修改字段类型

ALTER TABLE student
MODIFY dept CHAR(20);  -- 将 dept 字段类型改为 CHAR(20)

添加字段名和字段类型

ALTER TABLE student ADD grade INT(10);  -- 增加一个 grade 字段

添加字段

ALTER TABLE 表名 ADD 新字段名 数据类型;
ALTER TABLE student ADD email VARCHAR(255);

删除字段

ALTER TABLE 表名 DROP 字段名;
ALTER TABLE student DROP email;
-- 注意:DROP 操作一般无法回滚

修改字段默认值

ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 默认值;
ALTER TABLE users ALTER email SET DEFAULT 'wangjing@123.com';

更新数据

UPDATE student SET name='掏粪男孩' WHERE id=901;

多条件锁定更新数据

多条件锁定更新数据

UPDATE 表名 
SET 列1=值1, 列2=值2, ...
WHERE 条件1 AND/OR 条件2...;

示例:

UPDATE student 
SET dept='计算机系', address='北京市朝阳区'
WHERE id=905 AND name='张老大';

批量更新数据

UPDATE student
SET age = age + 1;  -- 将表中所有记录的age字段值加1

子查询更新(先查子表,后查外部表)

-- 将表 students 中 name 为'张三'的记录的 class_id 更新为
-- 表 classes 中 name 为'数学班'的 class_id
UPDATE students
SET class_id = (SELECT id FROM classes WHERE name = '数学班')
WHERE name = '张三';

Create Table Example

CREATE TABLE class (
  id INT(10) NOT NULL,
  classname VARCHAR(10)
) DEFAULT CHARSET utf8mb4;

删除某一列的数据:
update student set name=NULL;(数据设为空)(性能较低,找一列再删除)

alter table student drop dept;(直接删除字段,告诉为空的)

批量更新

replace into是指更新替换的意思。
在使用时,会检索表的主键或者唯一约束,没有只会做新增,起不到替换作用

replace into表名value(带有约束的值1,值2);
如果该值1存在,则更新值2
如果不存在,则新增一条数据

REPLACE INTO student(id, name) VALUES (1, '杜拉拉');

更新少量数据

UPDATE your_table
SET column1 = value1, column2 = value2
WHERE condition;

update表名 set要修改的字段=CASE

CASE 语句批量更新

UPDATE 表名 
SET 字段 = CASE
  WHEN 条件1 THEN 值1
  WHEN 条件2 THEN 值2
  ...
  ELSE 默认值  -- 可选
END;

-- 示例
UPDATE boy SET
id = CASE
  WHEN id = 1 THEN 3
  WHEN id = 2 THEN 4
  ELSE id      -- 保持其他记录不变(该字段的其他值不做任何处理)
END;

-- 示例
UPDATE student SET
sex = CASE
WHEN 1=1 THEN '女'
END;

!TCP/IP 模拟的抓包

删除数据使用delete:

limit 有正序排列之意
and (和) between(区间)

DELETE FROM 表名 WHERE 条件;  -- 删除符合条件的数据

-- 示例
DELETE FROM student WHERE id = 905;  -- 删除id为905的记录
DELETE FROM student WHERE dept = '英语系';  -- 删除所有英语系学生

-- 使用LIMIT限制删除数量(limit默认是降序)
DELETE FROM 表名 WHERE 条件 LIMIT 数量;  (
DELETE FROM student WHERE score < 60 LIMIT 10;  -- 只删除10条不及格记录

删除表,但是保留结构

DELETE FROM 表名;  -- 删除表中所有数据(保留表结构)(一行一行删)

-- 更推荐使用 TRUNCATE 清空表,性能更好(直接删除所有数据)
TRUNCATE TABLE 表名;

数据删除操作对比

数据库约束

数据库约束

数据库约束是对数据的合法性校验机制,目的是防止非法数据被插入/修改。

NOT NULL 约束

创建表时指定列不允许为空:

CREATE TABLE 表名 (
  列名 数据类型 NOT NULL  -- 该列不允许为空
);

-- 例子
CREATE TABLE users (
  id INT NOT NULL,      -- id不能为空
  username VARCHAR(50)  -- username可以为空(默认)
);

未指定 NOT NULL 时,列允许插入 NULL 值。

UNIQUE 约束

-- 创建表时添加唯一约束
CREATE TABLE 表名 (
  列名 数据类型 UNIQUE  -- 该列值必须唯一
);

-- 示例
CREATE TABLE users (
  id INT NOT NULL,
  email VARCHAR(50) UNIQUE  -- email必须唯一
);

-- 现有表添加唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名);
ALTER TABLE users ADD CONSTRAINT uc_email UNIQUE (email);

DEFAULT 约束

设置字段的默认值(未显式指定值时使用):

CREATE TABLE 表名 (
  列名 数据类型 DEFAULT 默认值  -- 设置默认值
);

-- 示例
CREATE TABLE users (
  id INT PRIMARY KEY,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP  -- 默认当前时间
);

-- 现有表修改默认值
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 新默认值;

特点:

PRIMARY KEY 约束

主键是一个表中每行数据的唯一标识(如身份证号、学号等),特点:

-- 单列主键
CREATE TABLE users (
  id INT PRIMARY KEY,    -- 直接定义
  name VARCHAR(50)
);

-- 多列联合主键(少见)
CREATE TABLE orders (
  user_id INT,
  order_id INT,
  PRIMARY KEY (user_id, order_id)  -- 复合主键
);

-- 现有表添加主键
ALTER TABLE 表名 ADD PRIMARY KEY (列名);

主键值通常不可修改且不建议包含业务逻辑

Student 表的定义

字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
Id 学号 INT(10)
Name 姓名 VARCHAR(20)
Sex 性别 VARCHAR(4)
Birth 出生年份 YEAR
Department 院系 VARCHAR(20)
Address 家庭住址 VARCHAR(50)

Student 表的定义

CREATE TABLE Studentdata (
  Id INT(10) PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(20) NOT NULL,
  Sex VARCHAR(4),
  Birth YEAR,
  Department VARCHAR(20) NOT NULL,
  Address VARCHAR(50)
)default charset utf8mb4;

create table student(int auto_increment)自增长

MySQL 外键约束

外键约束用于维护表间的数据完整性,通过引用另一个表的主键/唯一键来保证参照完整性。

创建外键约束(添加时:先有外键表,再有子表)(删除时,无子表内容,才能删除外键表内容)

  1. 建表时添加:
CREATE TABLE 表名 (
  列名 数据类型,
  FOREIGN KEY (列名) REFERENCES 主表(主键列)
);
  1. 现有表添加:
ALTER TABLE 从表 
ADD CONSTRAINT 约束名 
FOREIGN KEY (列名) REFERENCES 主表(主键列);
CREATE TABLE employees (
  emp_id INT AUTO_INCREMENT,
  emp_name VARCHAR(100),
  dept_id INT,
  PRIMARY KEY (emp_id),
  FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

指定外键约束的时候,要求父表中被关联
的这一列,是主键或者是unique约束的。
否则子表不能关联到该列,会报错。

外键约束。有外键的叫做子表。一个表的主键作为另一个表的主键,该表称成为父表,需要先给父表进行添加内容。才能给子表添加内容,删除时,也需要先删除子表里面的内容,才能删除父表的内容。

自我的介绍