当前位置:   article > 正文

使用pycharm可视化学习mysql的增删改查(CRUD)_pycharm增删改查代码

pycharm增删改查代码

1.使用pycharm连接mysql请参考文章

比较好用的mysql可视化工具-----pycharm连接mysql图文教程

2.pycharm可视化学习SQL操作

2.1 创建数据库

编写如下SQL代码创建数据库test,然后选中这两行代码,再点击执行操作,结果如下:

注意:执行按钮不是平常执行python脚本的哪个按钮是下图中第二步标注的哪个地方的按钮

-- 如果test数据库不存在,就创建test数据库:
CREATE DATABASE IF NOT EXISTS test;
  • 1
  • 2

在这里插入图片描述

2.2 选择数据库

在建表之前,首先要选择使用哪个数据库,可以手动点击选择:
在这里插入图片描述
也可以执行一段SQL语句,

USE test;
  • 1

执行完毕后,这个地方会变成test
在这里插入图片描述

2.3 创建表格并插入数据

创建两个表格,一个是students存储学生信息,一个classes存储班级信息。

-- 创建classes表:

CREATE TABLE classes (
    id BIGINT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建students表:
CREATE TABLE students (
    id BIGINT NOT NULL AUTO_INCREMENT,
    class_id BIGINT NOT NULL,
    name VARCHAR(100) NOT NULL,
    gender VARCHAR(1) NOT NULL,
    score INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

同样是先选中创建表格的代码,再点击执行! 注意只选中建表的代码就行了。

执行完毕后,test下会出现两个表格:
在这里插入图片描述
再插入一些数据,为接下来的增删改查操作做准备,具体的插入操作后面会讲。

-- 插入classes记录:
INSERT INTO classes(id, name) VALUES (1, '一班');
INSERT INTO classes(id, name) VALUES (2, '二班');
INSERT INTO classes(id, name) VALUES (3, '三班');
INSERT INTO classes(id, name) VALUES (4, '四班');

-- 插入students记录:
INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'M', 90);
INSERT INTO students (id, class_id, name, gender, score) VALUES (2, 1, '小红', 'F', 95);
INSERT INTO students (id, class_id, name, gender, score) VALUES (3, 1, '小军', 'M', 88);
INSERT INTO students (id, class_id, name, gender, score) VALUES (4, 1, '小米', 'F', 73);
INSERT INTO students (id, class_id, name, gender, score) VALUES (5, 2, '小白', 'F', 81);
INSERT INTO students (id, class_id, name, gender, score) VALUES (6, 2, '小兵', 'M', 55);
INSERT INTO students (id, class_id, name, gender, score) VALUES (7, 2, '小林', 'M', 85);
INSERT INTO students (id, class_id, name, gender, score) VALUES (8, 3, '小新', 'F', 91);
INSERT INTO students (id, class_id, name, gender, score) VALUES (9, 3, '小王', 'M', 89);
INSERT INTO students (id, class_id, name, gender, score) VALUES (10, 3, '小丽', 'F', 85);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

然后双击classes表和students表格,可以看到数据已经插入成功!
在这里插入图片描述
在这里插入图片描述
至此,数据准备完毕,同时你也学会了pycharm创建数据库、创建表格的基本操作。

3.查询数据

数据库最常用的操作当然是查询了,这里先介绍查询操作。

3.1 查询表格中所有数据

select * from students;
  • 1

在这里插入图片描述

3.2 条件查询

使用SELECT * FROM <表名>可以查询到一张表的所有记录。但是,很多时候,我们并不希望获得所有记录,而是根据条件选择性地获取指定条件的记录,例如,查询分数在80分以上的学生记录。

SELECT * FROM students WHERE score >= 80;
  • 1

在这里插入图片描述
使用and多条件查询分数大于80的男生信息:

SELECT * FROM students WHERE score >= 80 AND gender = 'M';	
  • 1

在这里插入图片描述
使用or查询分数大于等于80或者性别为’M’的学生信息。

SELECT * FROM students WHERE score >= 80 OR gender = 'M';
  • 1

在这里插入图片描述
and和or一起使用:

SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';
  • 1

在这里插入图片描述

3.3投影查询

如果我们只希望返回某些列的数据,而不是所有列的数据,我们可以用SELECT 列1, 列2, 列3 FROM …,让结果集仅包含指定列。这种操作称为投影查询。

SELECT id, score, name FROM students;
  • 1

在这里插入图片描述

3.4 排序

我们使用SELECT查询时,细心的读者可能注意到,查询结果集通常是按照id排序的,也就是根据主键排序。这也是大部分数据库的做法。如果我们要根据其他条件排序怎么办?可以加上ORDER BY子句。例如按照成绩从低到高进行排序:

SELECT id, name, gender, score FROM students ORDER BY score;
  • 1

在这里插入图片描述
由高到低排序:

SELECT id, name, gender, score FROM students ORDER BY score DESC;
  • 1

3.5 分页

使用SELECT查询时,如果结果集数据量很大,比如几万行数据,放在一个页面显示的话数据量太大,不如分页显示,每次显示100条。

要实现分页功能,实际上就是从结果集中显示第1100条记录作为第1页,显示第101200条记录作为第2页,以此类推。

因此,分页实际上就是从结果集中“截取”出第M~N条记录。这个查询可以通过LIMIT OFFSET 子句实现。

现在,我们把结果集分页,每页3条记录。要获取第1页的记录,可以使用LIMIT 3 OFFSET 0:

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
上述查询LIMIT 3 OFFSET 0表示,对结果集从0号记录开始,最多取3条。注意SQL记录集的索引从0开始。

如果要查询第2页,那么我们只需要“跳过”头3条记录,也就是对结果集从3号记录开始查询,把OFFSET设定为3:

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 3;
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
要注意的是OFFSET超过了查询的最大数量并不会报错,而是得到一个空的结果集。

3.6 聚合查询

COUNT()表示查询所有列的行数,要注意聚合的计算结果虽然是一个数字,但查询的结果仍然是一个二维表,只是这个二维表只有一行一列,并且列名是COUNT()。

通常,使用聚合查询时,我们应该给列名设置一个别名,便于处理结果:

– 使用聚合查询并设置结果集的列名为num:

SELECT COUNT(*) num FROM students;
  • 1

使用聚合查询计算男生平均成绩:

SELECT AVG(score) average FROM students WHERE gender = 'M';
  • 1

3.7 分组查询

如果我们要统计一班的学生数量,我们知道,可以用SELECT COUNT(*) num FROM students WHERE class_id = 1;。如果要继续统计二班、三班的学生数量,难道必须不断修改WHERE条件来执行SELECT语句吗?

对于聚合查询,SQL还提供了“分组聚合”的功能。

按class_id分组:

SELECT COUNT(*) num FROM students GROUP BY class_id;
  • 1

但是这3行结果分别是哪三个班级的,不好看出来,所以我们可以把class_id列也放入结果集中:

SELECT class_id, COUNT(*) num FROM students GROUP BY class_id;
  • 1

这下结果集就可以一目了然地看出各个班级的学生人数。

4.插入数据

当我们需要向数据库表中插入一条新记录时,就必须使用INSERT语句。

例如,我们向students表插入一条新记录,先列举出需要插入的字段名称,然后在VALUES子句中依次写出对应字段的值:

添加一条新记录

INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80);
-- 查询并观察结果:
SELECT * FROM students;
  • 1
  • 2
  • 3

还可以一次性添加多条记录,只需要在VALUES子句中指定多个记录值,每个记录是由(…)包含的一组值:

INSERT INTO students (class_id, name, gender, score) VALUES
  (1, '大宝', 'M', 87),
  (2, '二宝', 'M', 81);

SELECT * FROM students;
  • 1
  • 2
  • 3
  • 4
  • 5

5.更新数据

如果要更新数据库表中的记录,我们就必须使用UPDATE语句。

例如,我们想更新students表id=1的记录的name和score这两个字段,先写出UPDATE students SET name=‘大牛’, score=66,然后在WHERE子句中写出需要更新的行的筛选条件id=1:

UPDATE students SET name='大牛', score=66 WHERE id=1;
-- 查询并观察结果:
SELECT * FROM students WHERE id=1;
  • 1
  • 2
  • 3

注意到UPDATE语句的WHERE条件和SELECT语句的WHERE条件其实是一样的,因此完全可以一次更新多条记录:

UPDATE students SET name='小牛', score=77 WHERE id>=5 AND id<=7;
-- 查询并观察结果:
SELECT * FROM students;
  • 1
  • 2
  • 3

在UPDATE语句中,更新字段时可以使用表达式。例如,把所有80分以下的同学的成绩加10分:

UPDATE students SET score=score+10 WHERE score<80;
-- 查询并观察结果:
SELECT * FROM students;
  • 1
  • 2
  • 3

其中,SET score=score+10就是给当前行的score字段的值加上了10。

如果WHERE条件没有匹配到任何记录,UPDATE语句不会报错,也不会有任何记录被更新。例如:

UPDATE students SET score=100 WHERE id=999;
-- 查询并观察结果:
SELECT * FROM students;
  • 1
  • 2
  • 3

6.删除数据

如果要删除数据库表中的记录,我们可以使用DELETE语句。

例如,我们想删除students表中id=1的记录,就需要这么写:

DELETE FROM students WHERE id=1;
-- 查询并观察结果:
SELECT * FROM students;
  • 1
  • 2
  • 3

注意到DELETE语句的WHERE条件也是用来筛选需要删除的行,因此和UPDATE类似,DELETE语句也可以一次删除多条记录:

DELETE FROM students WHERE id>=5 AND id<=7;
-- 查询并观察结果:
SELECT * FROM students;
  • 1
  • 2
  • 3

7.参考文献

廖雪峰的官方网站

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/717115
推荐阅读
相关标签
  

闽ICP备14008679号