python web开发 MySQL数据库基础

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 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
相关文章
|
18天前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
|
3月前
|
存储 数据库连接 API
Python环境变量在开发和运行Python应用程序时起着重要的作用
Python环境变量在开发和运行Python应用程序时起着重要的作用
121 15
|
28天前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
2月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
247 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
3月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
143 62
|
28天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
2月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
299 15
|
2月前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
133 5
|
3月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
48 7

热门文章

最新文章