数据库增删改查
一、【增加(Create)】
```sql
insert into 学生表 (ID, 姓名) values (1, '张三');
```
```sql
insert into 学生表 (ID, 姓名) values (1, '张三') on duplicate key update 姓名='李四';
```
这样,如果ID为1的记录已存在,其姓名将被更新为“李四”。
```sql
insert into 学生表 (ID, 姓名) values (2, '小红'), (3, '小刚');
```
```sql
replace into 学生表 (ID, 姓名) values (1, '王五');
```
这里,如果ID为1的记录已存在,它将被新的数据(ID=1, 姓名='王五')替换。
```sql
insert into 新表 (列名) select 列名 from 旧表 where 条件;
```
这样,你可以轻松地将数据从一个表迁移到另一个表。
二、【删除(Delete)】
删除数据是数据库操作中另一个重要部分。以下是几种常见的删除操作:
1. 条件删除:
根据特定条件删除记录:
```sql
delete from 学生表 where 条件;
```
例如,删除ID为1的学生记录:
```sql
delete from 学生表 where ID = 1;
```
请注意,如果表存在外键约束,你需要处理级联删除的逻辑。
2. 全表删除:
删除表中的所有记录,但保留表结构:
```sql
delete from 学生表;
```
3. 截断表:
快速清空表中的所有数据,并重置自增的主键(此操作不可回滚):
```sql
truncate table 学生表;
```
注意:截断表是一个危险的操作,因为它会永久删除所有数据,并且不能撤销。在执行此操作之前,请务必备份数据。
三、【修改(Update)】
修改数据库中的现有数据是非常常见的操作。以下是几种常见的更新操作:
1. 单列更新:
只更新表中的某一列:
```sql
update 学生表 set 姓名 = '赵六' where 条件;
条件查询是数据库查询的基本操作之一。通过`select from 表名 where 条件;`的语句格式,我们可以根据特定的条件从数据表中检索数据。例如,模糊匹配是一种常用的查询方式,使用`like`关键字可以匹配以某个字符或字符串开头的所有数据,如`select from 表名 where name like '张%';`可以匹配所有以“张”开头的名字。范围查询允许我们检索特定范围内的数据,例如查找年龄在18至25岁之间的人。
聚合查询是另一种强大的查询功能,它允许我们对数据进行汇总和分析。通过`select count as 总数, avg(score) as 平均分 from 表名;`的语句,我们可以计算表中的记录总数和某列的平均值。还支持`sum`、`max`、`min`等聚合函数,用于计算总和、最大值和最小值等。
在复杂的数据处理中,我们经常需要联合多个表的数据进行查询,这就是所谓的联合查询。内连接是最常见的一种联合查询方式,它基于两个表之间的某个共同字段(如ID)进行匹配,返回符合条件的记录。左连接则返回左表的所有记录和右表中匹配的记录,如果右表中没有匹配的记录,则结果中对应字段为NULL。
在进行数据库查询时,排序和分页是两个非常重要的功能。排序允许我们按照特定的列进行升序或降序排列数据。而分页则允许我们限制返回的记录数以及指定从哪条记录开始返回,这对于在大量数据中查找特定信息非常有用。通过`order by`关键字指定排序字段,使用`limit`和`offset`关键字控制返回的行数和起始位置。
在进行数据库操作时,还需要注意一些重要事项。对于增删改操作,为了保证数据的一致性,建议结合事务控制语句如`begin`、`commit`和`rollback`。要注意外键约束,在修改或删除主表的数据时,需要考虑外键关联表的级联操作。为了优化查询性能,应尽量避免全表扫描,对高频查询的字段添加索引可以显著提高查询速度。
数据库查询是一门强大的技术,掌握它可以让我们更有效地从数据中获取信息。无论是模糊匹配、范围查询、聚合查询还是联合查询,都需要我们深入理解并灵活运用。注意事项也是我们不可忽视的部分,它们保证了我们操作的准确性和数据的安全性。