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
目录
打赏
0
0
0
0
1
分享
相关文章
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
37 19
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
打造高效的Web Scraper:Python与Selenium的完美结合
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
150 68
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
420 15
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
170 1
Web应用防火墙(WAF)与数据库应用防火墙有什么区别?
Web应用防火墙(WAF)专注于Web应用系统和网站的应用层防护,可有效应对OWASP Top 10等常见攻击,防止SQL注入、CC攻击等。而数据库应用防火墙则位于应用服务器与数据库之间,提供数据库访问控制、攻击阻断、虚拟补丁等高级防护功能,直接保护数据库免受攻击。两者分别针对Web层和数据库层提供不同的安全保护。
70 4
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
79 4

热门文章

最新文章

  • 1
    部署使用 CHAT-NEXT-WEB 基于 Deepseek
    137
  • 2
    FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
    15
  • 3
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    4
  • 4
    java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
    7
  • 5
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
    2
  • 6
    零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
    5
  • 7
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    4
  • 8
    打造高效的Web Scraper:Python与Selenium的完美结合
    4
  • 9
    AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
    6
  • 10
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    2
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等