python web开发 MySQL数据库基础

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: python web开发 MySQL数据库基础

文章目录


1. 简介

2. 下载安装

3. 操作 MysQL 数据库

3.1 创建数据库

3.2 选择数据库

3.3 查看数据库

3.4 删除数据库

4. 数据类型

5. 操作 MysQL 数据表

5.1 创建数据表

5.2 查看表的结构

5.3 修改表的结构

5.4 删除数据表

6. 操作 MySQL 数据表记录

6.1 添加数据

6.2 查询、修改、删除

learning from 《python web开发从入门到精通》


1. 简介


MySQL 是目前最为流行的开源数据库,网络化、跨平台的关系型数据库

特点:功能强大(多种引擎),跨平台,速度快(B树磁盘表+索引压缩),免费,支持多种语言,存储容量大(由外部操作系统对文件大小的限制决定)


2. 下载安装


跳过登录,下载 (mysql-installer-community-8.0.27.1.msi) 470MB:

> mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.27 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>


3. 操作 MysQL 数据库


3.1 创建数据库



  • create database DBname;
mysql> create database michaeldata;
Query OK, 1 row affected (0.05 sec)
  • 表名,不能重名
mysql> create database michaeldata;
ERROR 1007 (HY000): Can't create database 'michaeldata'; database exists
  • 可以 是 字母, 阿拉伯数字,下划线,$ ,中的任意字符开头,但不能纯数字,名称最长64个字符,别名最多256个字符
  • 不能是 内置的关键字
  • 各平台间的表名 大小写 敏感度不一样,建议都用小写表名
mysql> create database 123data;
Query OK, 1 row affected (0.03 sec)
mysql> create database $;
Query OK, 1 row affected (0.04 sec)
mysql> create database 123;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123' at line 1


3.2 选择数据库


  • use DBname;
mysql> use michaeldata;
Database changed

显示当前数据库

select database();
mysql> select database();
+-------------+
| database()  |
+-------------+
| michaeldata |
+-------------+
1 row in set (0.00 sec)

3.3 查看数据库


  • show databases;已经存在的数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| $                  |
| 123data            |
| information_schema |
| michaeldata        |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
9 rows in set (0.02 sec)

3.4 删除数据库


  • drop database DBname;(慎重,没有备份 是恢复不了的)
mysql> drop database $;
Query OK, 0 rows affected (0.04 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| 123data            |
| information_schema |
| michaeldata        |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
8 rows in set (0.00 sec)


4. 数据类型


数字


TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT

字符串


普通文本:CHAR,VARCHAR(后者长度可变)

TEXT适合存储长文本,BLOB适合存储二进制数据(文本,声音,图像)

两者也可以带前缀 tiny,medium,long,对应范围不同

ENUM枚举,SET一组值

日期和时间


DATETIME,DATE,TIMESTAMP,TIME,TEAR,如果赋值不合法,会被0代替


5. 操作 MysQL 数据表


5.1 创建数据表


CREATE TABLE table_name (column_name column_type);

mysql> create table users(
    -> id int(8) auto_increment primary key,
    -> username varchar(30) not null,
    -> password varchar(30) not null,
    -> createtime datetime);
Query OK, 0 rows affected, 1 warning (0.08 sec)

image.png


5.2 查看表的结构


  • show columns from 数据库.数据表;
mysql> show columns from users;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int         | NO   | PRI | NULL    | auto_increment |
| username   | varchar(30) | NO   |     | NULL    |                |
| password   | varchar(30) | NO   |     | NULL    |                |
| createtime | datetime    | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
4 rows in set (0.00 sec)
  • describe 表名;可简写为 desc 表名,也可只看某列(后面加列名)
mysql> describe users; 
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int         | NO   | PRI | NULL    | auto_increment |
| username   | varchar(30) | NO   |     | NULL    |                |
| password   | varchar(30) | NO   |     | NULL    |                |
| createtime | datetime    | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> desc users createtime;
+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| createtime | datetime | YES  |     | NULL    |       |
+------------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)

5.3 修改表的结构


alter table 表名 alter_spec[,alter_spec]

可参考:https://www.w3cschool.cn/mysql/mysql-alter.html


例如,添加新字段 address,更改 username 为 varchar(50)

ALTER TABLE users
add address varchar(52) not null,
modify username varchar(50)
mysql> desc users;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int         | NO   | PRI | NULL    | auto_increment |
| username   | varchar(50) | YES  |     | NULL    |                |
| password   | varchar(30) | NO   |     | NULL    |                |
| createtime | datetime    | YES  |     | NULL    |                |
| address    | varchar(52) | NO   |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

5.4 删除数据表


  • drop table 表名;
mysql> create table temp(id int);
Query OK, 0 rows affected (0.09 sec)
mysql> drop table temp;
Query OK, 0 rows affected (0.05 sec)

避免报错 if exists

mysql> drop table temp;
ERROR 1051 (42S02): Unknown table 'michaeldata.temp'
mysql> drop table if exists temp;
Query OK, 0 rows affected, 1 warning (0.03 sec)


6. 操作 MySQL 数据表记录


6.1 添加数据

mysql> insert into users(id, username, password, createtime, address)
    -> values (1, 'michael', '123', '2021-12-01 00:00:10', 'China');
Query OK, 1 row affected (0.03 sec)
mysql> select * from users;
+----+----------+----------+---------------------+---------+
| id | username | password | createtime          | address |
+----+----------+----------+---------------------+---------+
|  1 | michael  | 123      | 2021-12-01 00:00:10 | China   |
+----+----------+----------+---------------------+---------+
1 row in set (0.00 sec)
  • 如果是全部列的数据都有,可以省略 列名
mysql> insert into users
    -> values (3, 'happy', '456', '2021-12-01 15:14:10', 'China');
Query OK, 1 row affected (0.03 sec)
mysql> select * from users;
+----+----------+----------+---------------------+---------+
| id | username | password | createtime          | address |
+----+----------+----------+---------------------+---------+
|  1 | michael  | 123      | 2021-12-01 00:00:10 | China   |
|  3 | happy    | 456      | 2021-12-01 15:14:10 | China   |
+----+----------+----------+---------------------+---------+
2 rows in set (0.00 sec)
mysql> insert into users(id, username, password, address)
    -> values (4, 'bird', '789', 'China');
Query OK, 1 row affected (0.04 sec)
mysql> select * from users;
+----+----------+----------+---------------------+---------+
| id | username | password | createtime          | address |
+----+----------+----------+---------------------+---------+
|  1 | michael  | 123      | 2021-12-01 00:00:10 | China   |
|  3 | happy    | 456      | 2021-12-01 15:14:10 | China   |
|  4 | bird     | 789      | NULL                | China   |
+----+----------+----------+---------------------+---------+
3 rows in set (0.00 sec)

6.2 查询、修改、删除


查询 select col from table where...

参看:文中的 前置入门学习

修改和删除,记得带 where 条件,否则对整张表操作

  • where 在 group by 之前,having 在 group by 之后
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统源码+运行步骤
基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
58 7
|
12天前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
75 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
14天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统源码+运行
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
37 9
|
11天前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
45 3
|
17天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的摄影网上预约管理系统源码+运行
基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
36 8
|
14天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统源码+运行
基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
43 5
|
13天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
32 2
|
18天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的民宿客房预订管理系统源码运行
基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
45 8
|
20天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的反诈视频宣传管理系统源码+运行步骤
基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的反诈宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
42 6
|
23天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的家具商城管理系统源码+运行步骤
基于Python+Vue开发的家具商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的家具商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
43 8

热门文章

最新文章