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;

执行结果:

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

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

相关推荐
家有狸花20 分钟前
VSCODE驯服日记(三):配置C++环境
c++·ide·vscode
belldeep20 分钟前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
dengqingrui12342 分钟前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
C++忠实粉丝44 分钟前
前缀和(8)_矩阵区域和
数据结构·c++·线性代数·算法·矩阵
ZZZ_O^O1 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
ok!ko2 小时前
设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)
java·设计模式·原型模式
2402_857589362 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰3 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
FreakStudio3 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21363 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python