产品操作MySQL第4篇 – 数据操作

作者: 杨呀 | 来源:发表于2019-04-23 12:40 被阅读2次
MYSQL

本资料为产品岗位作为日常工作参考,语言口语化

At 2019/4/15 By David.Yang

数据操作最近本的4中情况,增、删、改、查,

即添加数据、删除数据、修改数据、查询数据。

增(INSERT语句)

往数据表当中插入数据可以单条插入,也可以批量多条插入,

语法:

INSERT INTO table_name ( field1, field2,...fieldN )

                      VALUES

                      ( value1, value2,...valueN );

table_name:要插入数据的表名

field*:插入数据的字段

value*:插入数据字段对应的数据值

数据单条插入

演示:

还记得我们之前设计的学生表么?

就是准备放杨过的那个表。

我们现在准备在学生表当中把杨过这小子登记进去,

表示这小子报名入班,准备学武功了。

根据INSERT语句我们组装一下把杨过录入学生表的SQL语句改怎么写。

SQL

INSERT INTO students(name, gender, age, dynasty, address, class)

VALUES

('杨过', 2, '14', '南宋', '', 1);

Query OK, 1 row affected (0.01 sec)

看到Query OK,说明执行成功了,

1 row affected 代表一条数据受影响进去了,

如果不放心,想看看数据,执行select查看就可以了

SQL

mysql>select * from students;

select语句后面会详细讲解

SQL解释:

INSERT INTO students (name, gender, age,dynasty, address, class)

VALUES

('杨过', 2, '14', '南宋', '', 1);

准备往学生表插入数据,

疑问:

ϒ 为什么没有学号number呢?

我们在设计数据表时使number(学号)这个字段拥有了自增属性:

`number` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',

这表示数据库会自己把这个字段进行填充,

并且时12345…按照顺序自增的,

这样的好处是我们不需要自己去维护学生的学号,

而且数据库能保证每个学生的学号是不会重复,具有唯一性。

所以我们在插入数据时,就不需要指定number了,

当然也就不需要给他赋值了,因为数据库帮我们把这件事做了。

当然,你也可以自己维护一个学生号字段,

插入数据时使用自己生成的学生号,不使用数据库的。

ϒ 为什么没有deleted字段呢?

因为我们在设计数据表的时候,deleted字段指定了默认值呀。

`deleted` int(2) NOT NULL DEFAULT '0' COMMENT '是否删除 0未删除 1已删除',

所以数据库自己会默认填写0进去,

你可以传值,这样数据库就以你的数据为准了。

ϒ INSERT插入数据时,非空值有什么需要注意的么?

如果设计数据表时,限定字段是NOT NULL,

但是又没有给默认值DEFAULT XX,

这时候在插入数据时一定要有这个字段以及对应的数据。

比如

假使有学生成绩表,设计了score(分数)是NOT NULL,

这个地方肯定不能给定默认值,

因为业务上分数是学生真实的考分,

总不能有默认60分,

这时候在插入数据时,需要有score字段,且给score字段的分数值写上。

INSERT INTO examsxxx(name, score, xxx)

VALUES

('杨过', 59, 'xxx');

数据批量插入

演示:

一条一条插入太累?

我们可以对数据库进行数据的批量插入。

根据INSERT语句我们组装一下把所有学生录入学生表的SQL语句改怎么写。

SQL

INSERT INTO students (name, gender, age, dynasty, address, class)

VALUES

('小龙女', 1, '18', '南宋', '', 1),

('公孙绿萼', 1, '16', '南宋', '', 1),

('郭襄', 1, '6', '南宋', '', 1),

('郭芙', 1, '18', '南宋', '', 1),

('郭破虏', 2, '6', '南宋', '', 1),

('耶律齐', 2, '18', '南宋', '', 1),

('耶律燕', 1, '16', '南宋', '', 1),

('完颜萍', 1, '16', '南宋', '', 1),

('程英', 1, '14', '南宋', '', 1),

('陆无双', 1, '14', '南宋', '', 1),

('霍都', 2, '20', '南宋', '', 1),

('达尔巴', 2, '21', '南宋', '', 1),

('武敦儒', 2, '18', '南宋', '', 1),

('武修文', 2, '18', '南宋', '', 1),

('赵志敬', 2, '18', '南宋', '', 1),

('洪凌波', 1, '18', '南宋', '', 1);

Query OK, 16 rows affected (0.02 sec)

Records: 16  Duplicates: 0  Warnings: 0

16条数据插进去了,

如果不放心,想看看数据,执行select查看就可以了

SQL

mysql> select * from students;

再补一些数据,后面会用到

SQL

INSERT INTOstudents (name, gender, age, dynasty, address, class)

VALUES

('路人1', 1, '18', '南宋', '', 1),

('路人2', 1, '16', '南宋', '', 1),

('路人3', 1, '6', '南宋', '', 1),

('路人4', 1, '18', '南宋', '', 1),

('路人5', 2, '6', '南宋', '', 1),

('路人6', 2, '18', '南宋', '', 1),

('路人7', 1, '16', '南宋', '', 1),

('路人8', 1, '16', '南宋', '', 1),

('路人9', 1, '14', '南宋', '', 1),

('路人10', 1, '14', '南宋', '', 1);

mysql>select * from students;

到此我们已经学会了两种数据的插入方式。

删(DELETE语句)

数据删除是一个敏感的事情,

一般线上进行数据操作,都不会进行数据的真删除,

而是在每一张数据表中放一个字段,

专门用来标记数据的状态,

比如我们就使用deleted字段来表述数据的删除状态

0未删除 1已删除

伪删除

我们将杨过,这小子的登记状态有正常的数据状态,

修改为已删除。

通过伪删除来实现本质其实是修改杨过这条数据deleted的值,

将他有0改成1,

在逻辑上他就是一条已删除的数据了。

语法:

UPDATE `数据表名` SET `更新的字段` = 更新的值 [完整的更新条件]

示范

示范:

SQL

mysql> UPDATE `students` SET `deleted` = 1 WHERE `number` = 1;

Query OK, 1 row affected (0.06 sec)

Rows matched: 1  Changed: 1  Warnings: 0

SQL解释:

杨过的学号是1,

即将学号 = 1的数据,

deleted改为1

简单示范,下文会讲解UPDATE

mysql> select * from students;

真删除

真删除就是把这条数据进行物理上的删除,

就是说删完这条数据就不在了,

你就找不到这条数据了,

也就不能进行简单的数据误删除恢复。

语法:

DELETE FROM `table_name` [WHERE Clause]

table_name:要操作的数据表名

WHERE Clause:删除数据的条件(即满足这个条件,就将数据删除)

WHERE可以接多个条件,用AND拼接,

比如:

WHERE id = 1 AND name=‘金轮法王’

示范

示范:

我们通过没什么用的test表来操作

先看看有哪些数据

SQL

mysql> select * from test;

SQL

mysql>DELETE FROM `test` WHERE `int` = '0001';

Query OK, 1 row affected (0.01 sec)

mysql>select * from test;

SQL解释:

DELETE FROM `test` WHERE `int` = '0001';

DELETE:是执行删除语句,

FROM `test`:表示‘从’数据表‘test’去执行删除

WHERE `int` = '0001':WHERE是删除条件关键字,后面接删除数据满足的条件是什么。

改(UPDATE语句)

语法:

UPDATE table_name

SET

    column_name1 = expr1,

    column_name2 = expr2,

    ...

WHERE

    condition;

示范

示范:

将学号>=18的,并且未删除的学生,

分配到民兵班去,

并且地址都改为未知

SQL

UPDATE `students`

SET

`address` = '未知',

`class` = 2

WHERE

`deleted` = 0 AND `number` >= 18;

SQL解释:

查(SELECT语句:基础查询)

数据的查询是我们日常工作应用最多的场景,

不管是数据的验证,

统计、分析,

查询是一切的基础。

语法:

SELECT column_name,column_name

FROM table_name

[WHERE Clause]

[LIMIT N][ OFFSET M]

SELECT column:查询语句,SELECT 要查询的字段(1-n)

FROM table_name:从目标数据表查询

WHER:满足查询的条件

LIMIT OFFSET:查询偏移量,比如查询第10 – 20的数据

示范

示范:

SQL

SELECT

number, name, age, dynasty

FROM

students

WHERE

deleted = 0

LIMIT 4 OFFSET 2;

SQL解释:

SELECT结果只显示你需要的字段,

所以你指定你想要看到的字段他就给你;

查询需要指定你查询的表

WHERE条件如果有需要可以加上

LIMIT表示你想要返回的数据量有几条,查询时请一定加上LIMIT

OFFSET表示数据查询的偏移量

默认从0开始

比如:

|     9 |完颜萍      |  16 |南宋    |

|    10 |程英        |  14 |南宋    |

|    11 |陆无双      |  14 |南宋    |

|    12 |霍都        |  20 |南宋    |

|    13 |达尔巴      |  21 |南宋    |

|    14 |武敦儒      |  18 |南宋    |

|    15 |武修文      |  18 |南宋    |

LIMIT 4 OFFSET 10;

会返回11 12 13 14数据

+--------+-----------+-----+---------+

| number | name      | age | dynasty |

+--------+-----------+-----+---------+

|    11 |陆无双   |  14 |南宋    |

|    12 |霍都     |  20 |南宋    |

|    13 |达尔巴   |  21 |南宋    |

|    14 |武敦儒   | 18 |南宋    |

+--------+-----------+-----+---------+

如果你想返回所有数据字段,可以通过*来实现

示范:

SQL

SELECT

       *

FROM

       students

WHERE

       deleted = 0

LIMIT 4 OFFSET2;

SQL解释:

SELECT * 表示你要求查询结果中返回所有数据字段

到此为止,基本的增、删、改、查就讲完了。

后续将需要了解条件查询、通配符、排序等。

相关文章

  • 产品操作MySQL第4篇 – 数据操作

    本资料为产品岗位作为日常工作参考,语言口语化 At 2019/4/15 By David.Yang 数据操作最近本...

  • 3 MySQL数据库操作

    2 MySQL数据库操作 3.1 MySQL操作数据库 3.2 MySQL操作数据表 3.2.1 MySQL创建数...

  • 基于Linux的MySQL操作实例(软件安装,mysql基本操作

    基于Linux的MySQL操作实例(软件安装,mysql基本操作,mysql数据类型,建表、插入数据操作) 前言 ...

  • python对mysql的操作

    python对mysql的操作 Mysql 常见操作 数据库操作 PS:用户权限相关数据保存在mysql数据库的u...

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • MySql笔记

    Mac安装并运行MySql MySql数据库、数据表的操作 MySql数据类型及常见约束 MySql表操作 MyS...

  • MySQL 基础操作

    · MySQL中不分大小写· MySQL中分为DML(数据操作语言) 和 DDL(数据定义语音) DML(数据操作...

  • Shell脚本操作-6

    Shell操作数据库MySQL SQL基本操作 安装MySql数据库 连接数据库 mysql -u root -p...

  • 8.mysql之异步操作

    mysql之异步操作 普通的mysql操作是同步操作,插入数据的速度(即I/O读写)远远低于spider中解析数据...

  • 搜企网爬虫作业

    作业要求 (1)csv文件数据写入(2)mysql 操作,python mysql操作 这个需要安装mysql以及...

网友评论

    本文标题:产品操作MySQL第4篇 – 数据操作

    本文链接:https://www.haomeiwen.com/subject/xdcvgqtx.html