MySQL 学习指南

本文最后更新于:2023年8月4日 下午

基本概念

MySQL是一种关系型数据库管理系统,被广泛用于存储和管理结构化数据。它是开源的,免费使用,并且支持多种操作系统。

以下是一些MySQL的基本概念:

  • 数据库和表格

    • 数据库:MySQL可以管理多个数据库,每个数据库是一个独立的数据存储单元。
    • 表格:数据库由多个表格组成,每个表格是一个二维数据结构,用于存储数据。
  • 基本数据类型
    MySQL支持多种数据类型,
    常用的数据类型有:

    • INT:整数类型
    • VARCHAR:可变长度字符串类型
    • DATE:日期类型
    • FLOAT:浮点数类型
  • SQL语句
    SQL(Structured Query Language)是用于与数据库进行交互的语言。通过SQL语句可以完成各种操作:

    • 查询数据:使用SELECT语句来检索数据。
    • 插入数据:使用INSERT INTO语句将数据插入表格。
    • 更新数据:使用UPDATE语句更新表格中的数据。
    • 删除数据:使用DELETE FROM语句删除表格中的数据。
  • 数据库连接
    连接数据库是在Python或其他编程语言中与MySQL进行交互的第一步。连接器库(如mysql-connector-python或pymysql)提供了与数据库建立连接的功能。

一旦建立了数据库连接,你可以通过执行SQL语句来读取、写入和修改数据库中的数据。

安装MySQL教程

https://blog.csdn.net/m0_52559040/article/details/121843945

常用cmd命令

  • mysql -uroot -p : 启动数据库
    • 最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。
  • \h :查看命令行说明
  • \c :clear the current input statement
  • \G : send commend to mysql server, display result vertically
  • \p : print current command
  • \q : Quit Mysql
  • \s : get status information from the server
    更多命令输入\h查看

基本操作

查看当前的数据库

1
show databases;

创建数据库

1
create database MyDB_one;
  • 创建数据库时设置字符编码:
    1
    create database MyDB_three charset utf8;
    通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。
  • 查看和显示数据库的编码方式
    1
    2
    show create database MyDB_one;
    show create database MyDB_two;
  • 修改数据库编码
    1
    alter database MyDB_one character set utf8;

进入或切换数据库

1
2
use MyDB_one
use MyDB_two;

刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。

use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。

  • 显示当前数据库:
    1
    select database();

创建数据表

查看当前数据库中的表

1
show tables;

创建表

1
create table Phone_table(pid INT, name CHAR(20), price INT);

显示表信息

1
show create table Phone_table;

给表增加字段

1
alter table Phone_table add color CHAR(20);

删除表的字段

1
alter table Phone_table drop price;

更多操作参考:https://zhuanlan.zhihu.com/p/370510336

import pymysql 操作MySQL数据库

  • pip install pymysql 安装pymysql库
  • 在python脚本中导入库:
    1
    import pymysql
  • 建立数据库连接
    使用pymysql.connect( )函数来建立与MySQL数据库的连接。提供MySQL服务器的主机名、用户名、密码和数据库名称等信息。
    1
    2
    3
    4
    5
    6
    7
    # 建立数据库连接
    connection = pymysql.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database_name'
    )
  • 创建游标对象
    在连接上创建游标对象,用于执行SQL查询和获取结果。
    1
    cursor = connection.cursor()
  • 执行SQL查询
    • 查询数据
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # 查询数据
      query = "SELECT * FROM your_table_name;"
      cursor.execute(query)

      # 获取所有结果
      results = cursor.fetchall()

      # 遍历结果并打印
      for row in results:
      print(row)
  • 插入数据
    1
    2
    3
    4
    5
    6
    7
    # 插入数据
    query = "INSERT INTO your_table_name (column1, column2, column3) VALUES (%s, %s, %s);"
    data = ('value1', 'value2', 'value3')
    cursor.execute(query, data)

    # 提交更改
    connection.commit()
    使用游标对象cur执行了一个INSERT语句,向名为your_table_name的表格中插入一条数据。

INSERT语句中的参数使用占位符%s表示。这样做可以防止SQL注入攻击。cur.execute()方法将会将后面提供的参数值安全地插入到SQL语句中。

调用了conn.commit()来提交更改,将数据插入到数据库中。如果没有调用commit()方法,数据库将不会保存插入的数据。

  • 关闭连接
    在完成所有数据库操作后,关闭游标和连接。
    1
    2
    cursor.close()
    connection.close()

样例源码:更新库中用户数据

假设你有一个名为users的表格,包含id、name和age三列。现在,你想根据id来更新某个用户的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import pymysql

def update_user_by_id(user_id, new_name, new_age):
# 建立数据库连接
connection = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database_name'
)

try:
# 创建游标对象
cursor = connection.cursor()

# 执行UPDATE操作
query = "UPDATE users SET name=%s, age=%s WHERE id=%s;"
data = (new_name, new_age, user_id)
cursor.execute(query, data)

# 提交更改
connection.commit()

print("User information updated successfully!")
except Exception as e:
# 如果出现错误,回滚更改
connection.rollback()
print(f"Error: {str(e)}")
finally:
# 关闭游标和连接
cursor.close()
connection.close()

if __name__ == "__main__":
# 要更新的用户信息
user_id = 1
new_name = "Alice Smith"
new_age = 32

update_user_by_id(user_id, new_name, new_age)

MySQL 学习指南
http://zoechen04616.github.io/2023/08/03/MySQL-学习指南/
作者
Yunru Chen
发布于
2023年8月3日
许可协议