MySQL 从零开始:04 增删改查

文章目录

  • 1、准备工作
  • [2、insert 增加数据](#2、insert 增加数据)
    • [2.1 添加所有列的数据](#2.1 添加所有列的数据)
    • [2.2 添加部分列](#2.2 添加部分列)
    • [2.3 一次插入多条数据](#2.3 一次插入多条数据)
  • [3、delete 删除记录](#3、delete 删除记录)
  • [4、update 更新记录](#4、update 更新记录)
  • [5、select 查询记录](#5、select 查询记录)
    • [5.1 查询所有行所有列](#5.1 查询所有行所有列)
    • [5.2 查询指定行的所有列](#5.2 查询指定行的所有列)
    • [5.3 查询所有行的指定列](#5.3 查询所有行的指定列)
    • [5.4 查询指定行的指定列](#5.4 查询指定行的指定列)

在上一小节中介绍了 MySQL 数据库的一些最最最基础的入门级也是必须要掌握的10条语句,本节将继续深入学习 MySQL 的增删改查语句。本节讲的增删改查是相对于 而言的。

1、准备工作

想要对表进行增删改查,首先应该有张表,假设我们要统计大学同学工作之后的工作情况,建立了如下表格:

姓名 性别 公司 工资

准备工作:

mysql 复制代码
mysql> create database salarydb;
Query OK, 1 row affected (0.01 sec)

mysql> use salarydb;
Database changed
mysql> create table class(
    -> id int primary key auto_increment,
    -> name varchar(10) not null default '',
    -> gender char(1) not null default '',
    -> company varchar(20) not null default '',
    -> salary decimal(6,2) not null default 0.00
    -> )engine myisam charset utf8;
Query OK, 0 rows affected, 1 warning (0.04 sec)

mysql> show tables;
+--------------------+
| Tables_in_salarydb |
+--------------------+
| class              |
+--------------------+
1 row in set (0.00 sec)

mysql> desc class;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10)  | NO   |     |         |                |
| gender  | char(1)      | NO   |     |         |                |
| company | varchar(20)  | NO   |     |         |                |
| salary  | decimal(6,2) | NO   |     | 0.00    |                |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

执行结果:

此处建立了一个表,但是不要困惑于建表语句里面的数据类型等,后续会详细讲解。

表创建完成之后要设置一下 数据库的字符集,因为我们要使用到中文:

mysql 复制代码
set names gbk;

2、insert 增加数据

MySQL 通过 INSERT INTO SQL语句来插入数据,其语法为:

mysql 复制代码
# 插入一行
insert into tablename (field1, field2, ..., fieldN)
					values
					(value1, value2, ..., valueN);
					
# 插入多行
insert into tablename (field1, field2, ..., fieldN)
					values
					(value1, value2, ..., valueN),
					(value1, value2, ..., valueN),
					...
					(value1, value2, ..., valueN);

如果数据是字符型,必须使用单引号或者双引号,如:"张三"。

2.1 添加所有列的数据

下面向该表中添加几条数据:

mysql 复制代码
mysql> insert into class (id,name,gender,company,salary)
    -> values (1,'张三','男','网易',9367.84);

一定要记住每个数据段或者字段后面加个空格,比如上面指令第一行最后要加上一个空格。

另外如果我们要添加所有列的数据可以使用如下语法:

mysql 复制代码
insert into tablename VALUES
					(value1, value2, ..., valueN);

例如:

mysql 复制代码
mysql> insert into class
    -> values (2,'李四','男','百度',8987.63);

执行结果:

2.2 添加部分列

有时候我们不需要添加所有列的数据,比如 司徒小翠 在一个保密机构工作,其公司名称和薪水都不能透露,我们可以使用如下语句插入数据:

mysql 复制代码
mysql> insert into class (name,gender)
    -> values ('司徒小翠','女');

执行结果:

本条记录省略了 id、company和salary 字段,因为id 设置为了自增,所以为3,company 与 salary 都设置了默认值,由于插入时没有指定值,所以就使用了默认值。

2.3 一次插入多条数据

为了省事,我们可以一次性插入多条数据:

mysql 复制代码
mysql> insert into class (name,gender,company,salary)
    -> values
    -> ('石中玉','男','腾讯',7878.32),
    -> ('石中坚','男','腾讯',8234.17);

执行结果:

3、delete 删除记录

要从表中删除数据,请使用MySQL delete语句。下面说明了delete语句的语法:

复制代码
delete from table_name
where condition;

此处的删除是指删除表中的一条记录,也就是一行数据。

现在把 张三 的记录删掉,为什么呢?因为他的工资最高。

mysql 复制代码
mysql> delete from class
    -> where salary>9000;

此语句以薪水作为条件,下面以 姓名 作为筛选条件删除 李四 的记录:

mysql 复制代码
mysql> delete from class
    -> where name='李四';

执行结果:

当然,where 后面的条件可以叠加,例如:

mysql 复制代码
mysql> delete from class
    -> where salary>9000 and gender='男';

如果你看了上一节的教程,应该记住了这条语句:

mysql 复制代码
delete * from tablename;

它实现的功能是删除表中的所有记录。

4、update 更新记录

我们使用update语句来更新表中的现有数据。也可以使用update语句来更改表中单个行,一组行或所有行的列值,其语法如下:

mysql 复制代码
update table_name set 
    column_name1 = expr1,
    column_name2 = expr2,
    ...
where
    condition;

在上面update语句中:

  • 首先,在update关键字后面指定要更新数据的表名。
  • 其次,set子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。
  • 第三,使用 where 子句中的条件指定要更新的行。where 子句是可选的。 如果省略where子句,则update语句将更新表中的所有行。

石中玉 在腾讯工作了一年后跳槽到了 阿里巴巴,其工资也涨到了 9999.99,使用以下语句更新该条记录:

mysql 复制代码
mysql> update class set
    -> company='阿里',
    -> salary=9999.99
    -> where name='石中玉';

执行结果:

注:一定要填写 where 后面的 condition,否则整个表的该列都会被修改。

5、select 查询记录

使用select语句从表或视图获取数据。表由行和列组成,我们往往只想看到子集行,列的子集或两者的组合。select语句的结果称为结果集,它是行列表,每行由相同数量的列组成。

select语句控制要查看哪些行和列,其基本语法为:

mysql 复制代码
select 
    column_name1, column_name2, ...
from
    tablename
where
    conditions

5.1 查询所有行所有列

delete * from tablename; 中的 ***** 一样,select 也可以和其结合:

mysql 复制代码
mysql> select * from class;

执行结果:

5.2 查询指定行的所有列

mysql 复制代码
mysql> select * from class
    -> where id>3;

执行结果:

5.3 查询所有行的指定列

mysql 复制代码
mysql> select id,name,salary from class;

执行结果:

5.4 查询指定行的指定列

mysql 复制代码
mysql> select id,name,salary from class
    -> where id>3;

执行结果:

至此数据库的增删改查的基本语法都已介绍了,当然增删改查还有高级的用法,以后有机会讲到。

最后再次强调:一定要记住每个数据段或者字段后面加个空格,尤其是多行语句时每行末尾不要丢掉空格。

相关推荐
蔡蓝1 分钟前
设计模式-观察着模式
java·开发语言·设计模式
HyggeBest6 分钟前
Mysql 宏观架构
mysql·架构
异常君14 分钟前
@Bean 在@Configuration 中和普通类中的本质区别
java·spring·面试
jackson凌15 分钟前
【Java学习笔记】Math方法
java·笔记·学习
Humbunklung20 分钟前
PySide6 GUI 学习笔记——常用类及控件使用方法(多行文本控件QTextEdit)
笔记·python·学习·pyqt
海尔辛20 分钟前
SQL 基础入门
数据库·sql
火车叼位1 小时前
使用 uv 工具在 Windows 系统快速下载安装与切换 Python
python
西北大程序猿1 小时前
单例模式与锁(死锁)
linux·开发语言·c++·单例模式
你不是我我1 小时前
【Java开发日记】说一说 SpringBoot 中 CommandLineRunner
java·开发语言·spring boot