当前位置: 首页 > news >正文

MySQL基础终端命令与Python简单操作MySQL

文章目录

  • MySQL终端命令
    • 1. 进入mysql
    • 2. 创建数据库
    • 3. 选择数据库
    • 4. 创建数据表
      • 1. 主键约束
      • 2. 外键约束
      • 3. 非空约束
      • 4. 唯一约束
      • 5. 使用默认约束
      • 6. 设置id为自增列
    • 5. 查看数据表
    • 6. 修改数据表
      • 1. 修改表名
      • 2. 修改表的字段类型
      • 3. 修改表的字段名
      • 4. 为表添加字段
      • 5. 删除字段
      • 6. 调整字段的位置
      • 7. 删除表的外键约束
      • 8. 删除数据表
    • 7. 数据表的操作
      • 1. 新增数据
      • 2. 查询数据
      • 3. 修改数据
      • 4. 删除数据
      • 5. replace
  • Python操作MySQL
    • 1. 连接数据库
    • 2. 创建表
    • 3. 插入数据
    • 4. 查询数据
    • 5. 更新数据
    • 6. 删除数据

MySQL终端命令

1. 进入mysql

win+r输入cmd进入终端

输入:

mysql -u root -p

再输入密码进入mysql
在这里插入图片描述

2. 创建数据库

输入(注意语句后面一定要加“ ; ”):

create database test;

创建好后查看数据库:

show databases;

在这里插入图片描述

3. 选择数据库

输入:

use test;

进入test数据库。

在这里插入图片描述

4. 创建数据表

1. 主键约束

输入:

create table example1 (id int(3),name varchar(20),age int(3),primary key(id, name));

在这里插入图片描述

2. 外键约束

create table example2(id int primary key, name varchar(20));create table example2sub(id int primary key, name varchar(20), age int, c_id int, constraint p_c_id foreign key(c_id) references example2(id));

在这里插入图片描述
p_c_id是外键约束的名字,c_id是添加了外键约束的列,id是父表中定义的主键列

3. 非空约束

create table example3(id int, name varchar(20) not null);

在这里插入图片描述

4. 唯一约束

create table example4(id int unique, name varchar(20));

在这里插入图片描述

5. 使用默认约束

create table example5(id int, name varchar(20) default "hahaha");

在这里插入图片描述

6. 设置id为自增列

create table example6(id int primary key auto_increment, name varchar(20));

在这里插入图片描述

5. 查看数据表

先选择数据库,再查看该数据库的表

use test;show tables;

在这里插入图片描述
查看表中各个列的定义:

desc example4;

在这里插入图片描述

6. 修改数据表

1. 修改表名

alter table example1 rename my_example1;

在这里插入图片描述

2. 修改表的字段类型

alter table my_example1 modify name varchar(55);

在这里插入图片描述

3. 修改表的字段名

alter table my_example1 change name my_name varchar(55);

在这里插入图片描述

4. 为表添加字段

alter table my_example1 add column gender varchar(2) not null;

在这里插入图片描述

5. 删除字段

alter table my_example1 drop column age;

在这里插入图片描述

6. 调整字段的位置

将my_example1表中的my_name改为第一列

alter table my_example1 modify my_name varchar(55) first;

在这里插入图片描述

将id调整到gender后

alter table my_example1 id int after gender;

在这里插入图片描述

7. 删除表的外键约束

alter table example2sub drop foreign key p_c_id;

在这里插入图片描述

8. 删除数据表

drop table example4, example5, example6;

在这里插入图片描述

7. 数据表的操作

1. 新增数据

create table user(id int primary key auto_increment, name varchar(100), age int, phone_num varchar(20));insert into user(name, age, phone_num) values('xiaoli', 21, 111), ('qiansan', 18, 222), ('zhangsan', 30, 333);

在这里插入图片描述

2. 查询数据

查询全部数据

select * from user;

在这里插入图片描述
查询年龄大于20的用户

select name, age from user where age > 20;

在这里插入图片描述

3. 修改数据

将用户id为1的年龄更新为22

update user set age = 22 where id = 1;

在这里插入图片描述

4. 删除数据

删除年龄在25以上的用户

delete from user where age > 25;

在这里插入图片描述

5. replace

如果表中存在相同主键的数据,replace的作用相当于修改操作;否则就是插入操作

select * from user;replace into user(id, name, age, phone_num) values(1, 'xiaoli', 21, 444), (2, 'qiansan', 18, 888), (3, 'zhangsan', 30, 999);select * from user;

在这里插入图片描述

Python操作MySQL

1. 连接数据库

数据库的访问是通过连接对象来实现的。程序模块中必须提供连接对象构造函数

import pymysql# connect是连接对象构造函数
# db是connect对象实例
db = pymysql.connect(# 连接的数据库服务器主机名,默认为本地主机(localhost)host = 'localhost',	# 连接数据库的用户名,默认为当前用户user = 'root',# 连接密码password = '020202ly',# 连接的数据库名database = 'testmysql',
)# 创建一个游标对象
cursor = db.cursor()cursor.execute("select version()")# fetchone():从查询结果中获取下一行数据,返回值为一个值的序列,如果没有更多数据则返回None。
# 通过游标获取sql语句执行的结果。如果没有下面的代码,则执行python代码并不能看到在MySQL中执行的结果。
result = cursor.fetchone()print(result)# 关闭游标
cursor.close()# 关闭数据连接
db.close()

若程序成功执行,则会打印MySQL的版本。
在这里插入图片描述

2. 创建表

import pymysqldb = pymysql.connect(host = 'localhost',user = 'root',password = '020202ly',database = 'testmysql',charset = 'utf8'
)cursor = db.cursor()sql = """
create table example(id int not null auto_increment,name varchar(45),age int null,primary key(id))
"""# 运行sql语句,创建数据表example
cursor.execute(sql)# 查询创建的新表的结构
cursor.execute("desc example")
# fetchall():从查询结果中获取结果的所有行数据,返回值包含序列的序列。
result = cursor.fetchall()print(result)cursor.close()db.close()

执行结果在这里插入图片描述
使用pprint.pprint(result)打印出来的结果如下:
在这里插入图片描述
可以看到使用pprint打印的结果可读性更强,看着更舒服。

pprint也是python中的一个打印模块,在使用前需要导入包。pprint()的作用也就是使打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。

3. 插入数据

需要注意的是,在execute后需要调用commit方法提交对数据的修改,否则数据并不会真的插入到数据库中。

import pymysqldb = pymysql.connect(host = 'localhost',user = 'root',password = '020202ly',database = 'testmysql',charset = 'utf8'
)cursor = db.cursor()sql = """insert into example(id, name, age) values(1, '小明', 20), (2, '小红', 40)
"""# 运行sql语句,创建数据表example
try:cursor.execute(sql)db.commit()print('数据提交成功!!')
except Exception as e:# 调用此方法将导致数据库回滚到事事务开始时的状态。# 关闭数据库连接之前没有明确调用commit()提交数据更新,将导致一个隐含的回滚动作,rollback()被执行。db.rollback()cursor.close()
db.close()

在这里插入图片描述

4. 查询数据

用fetchone()方法返回一行数据,用fetchall()方法返回多行数据。

import pymysql
import pprint
db = pymysql.connect(host = 'localhost',user = 'root',password = '020202ly',database = 'testmysql',charset = 'utf8'
)cursor = db.cursor()cursor.execute("select * from example")# fetchone方法
result1 = cursor.fetchone()
print("fetchone: ")
pprint.pprint(result1)# 在第一次查询获取数据后一定要再执行一次查询语句,因为上面fetchone获取了一条数据,游标向后移动,就只剩一条数据了。
cursor.execute("select * from example")# fetchall方法
result2 = cursor.fetchall()
print("fetchall: ")
pprint.pprint(result2)cursor.close()
db.close()

在这里插入图片描述

5. 更新数据

更新操作和插入操作类似,在修改完成后需要调用commit方法提交修改。

import pymysql
import pprint
db = pymysql.connect(host = 'localhost',user = 'root',password = '020202ly',database = 'testmysql',charset = 'utf8'
)cursor = db.cursor()cursor.execute("select * from example")# fetchone方法
result = cursor.fetchall()
print('更新前')
pprint.pprint(result)cursor.execute('update example set age = 30 where id = 2')cursor.execute("select * from example")# fetchall方法
result = cursor.fetchall()
print("更新后")
pprint.pprint(result)cursor.close()
db.close()

在这里插入图片描述

6. 删除数据

删除数据操作完后也需要调用commit方法提交

import pymysql
import pprint
db = pymysql.connect(host = 'localhost',user = 'root',password = '020202ly',database = 'testmysql',charset = 'utf8'
)cursor = db.cursor()cursor.execute("select * from example")
result = cursor.fetchall()
print('删除前')
pprint.pprint(result)cursor.execute('delete from example where id = 2')
cursor.execute("select * from example")
result = cursor.fetchall()
print("删除后")
pprint.pprint(result)cursor.close()
db.close()

在这里插入图片描述

相关文章:

MySQL基础终端命令与Python简单操作MySQL

文章目录 MySQL终端命令1. 进入mysql2. 创建数据库3. 选择数据库4. 创建数据表1. 主键约束2. 外键约束3. 非空约束4. 唯一约束5. 使用默认约束6. 设置id为自增列 5. 查看数据表6. 修改数据表1. 修改表名2. 修改表的字段类型3. 修改表的字段名4. 为表添加字段5. 删除字段6. 调整…...

编译原理.龙书学习1

第一章: 编译器:将程序翻译成一种能够被计算机执行的形式 解释器:解释器直接利用用户提供的输入执行源程序中指定的操作 一个编译器的结构 编译器将源程序映射为语义上等价的目标程序,这个映射过程由两部分组成:分析…...

anaconda安装完成之后输入conda -V没有反应

anaconda安装完成后,conda没有反应 vim ~/.bashrc后面添加内容 # added by Anaconda3 5.3.0 installer # >>> conda init >>> # !! Contents within this block are managed by conda init !! __conda_setup"$(CONDA_REPORT_ERRORSfalse /u…...

netty报文解析之粘包半包问题

粘包问题 Netty 的粘包问题是指在网络传输过程中,由于 TCP 协议本身的特点,导致发送方发送的若干个小数据包被接收方合并成了一个大数据包。这种情况称为粘包。 TCP 协议是面向流的协议,没有数据边界,发送方发送的数据可能会被分…...

EasyCode整合mybatis-plus的配置

文章目录 entitymapper.javamapper.xmlserviceserviceImplcontroller 这篇文章不教你如何安装和使用EasyCode,只是贴出可以使用的配置。 具体EasyCode的使用可以查看其它的文章。 entity ##导入宏定义 $!{define.vm}##保存文件(宏定义) #sa…...

实施预测性维护解决方案的挑战及PreMaint的应对方法

前面我们介绍了企业选择预测性维护解决方案的常见问题和PreMaint的策略,本期我们将带来实施过程中可能会遇到的挑战,以及如何通过PreMaint来应对这些挑战,以实现可靠的预测性维护。 随着工业技术的不断进步,预测性维护作为一种先进…...

1. js中let、var、const定义变量区别与方式

1 声明语法 var upperA A; let upperB B; const upperC C; 只声明不初始化的结果,【 const定义的常量不可以修改,而且必须初始化】 // var 声明变量 var upperA; console.log(打印大写的A:%s, upperA); // 结果:打印大写的A&am…...

【STM32学习】I2C通信协议 | OLED屏

🐱作者:一只大喵咪1201 🐱专栏:《STM32学习》 🔥格言:你只管努力,剩下的交给时间! 今天需要将代码烧录到开发板中,本喵默认大家都会创建工程,以及进行基本的…...

Nvme Spec 第一章节学习

Nvme Express Base Specification 第一章 简介 1.1概述 NVM ExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信。 此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCI Express接口。 注:在…...

第一章:最新版零基础学习 PYTHON 教程(第九节 - Python 语句中的 – 多行语句)

Python 中的语句: 在Python中,语句是Python解释器可以读取和执行的逻辑命令。它可能是Python 中的赋值语句或表达式。 Python 中的多行语句: 在Python中,语句通常写成一行,每行的最后一个字符是换行符。要将语句扩展到一行或多行,我们可以使用大括号 {}、圆括号 ()、方…...

kafka 3.0 离线安装

1.安装zookeeper 解压apache-zookeeper-3.8.0-bin.tar.gz到指定目录,复制conf目录下zoo_sample.cfg到zoo.cfg,并修改配置。 # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit…...

MySQL数据库入门到精通2--基础篇(函数,约束,多表查询,事务)

3. 函数 函数 是指一段可以直接被另一段程序调用的程序或代码。MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。 3.1 字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 演示如下: A. con…...

c-数据在内存中的存储-day7

...

3D大模型如何轻量化?试试HOOPS Communicator,轻松读取10G超大模型!

随着计算机技术的不断发展,3D模型在各行各业中的应用越来越广泛。然而,随着模型的复杂性和规模不断增加,处理和浏览超大型3D模型变得越来越具有挑战性。本文将探讨如何轻量化3D大模型,以及如何使用HOOPS Communicator来读取和浏览…...

go并发操作且限制数量

使用管道chan func returnNum() int64 {return time.Now().Unix() } func main() {threadAmount : runtime.GOMAXPROCS(0)if threadAmount < 2 {threadAmount 2}fmt.Println(threadAmount)threadChan : make(chan int, threadAmount)defer close(threadChan)for {for i :…...

AI深度学习-卷积神经网络000

文章目录 前言1.什么是深度学习2.语义分割与实例分割概述3.什么是卷积&#xff1f;4.Unet网络 前言 本栏目&#xff0c;主要为深度学习保姆教程。 主要通过B站视频整理而来&#xff1a; 深度学习保姆级教学 Unet语义分割视觉三维重建算法 1.什么是深度学习 深度学习保姆级教…...

网站有反爬机制就爬不了数据?那是你不会【反】反爬

目录 前言 一、什么是代理IP 二、使用代理IP反反爬 1.获取代理IP 2.设置代理IP 3.验证代理IP 4.设置代理池 5.定时更新代理IP 三、反反爬案例 1.分析目标网站 2.爬取目标网站 四、总结 前言 爬虫技术的不断发展&#xff0c;使得许多网站都采取了反爬机制&#xff…...

2023华为杯研究生数学建模C题分析

完整的分析查看文末名片获取&#xff01; 问题一 在每个评审阶段&#xff0c;作品通常都是随机分发的&#xff0c;每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性&#xff0c;不同专家评审的作品集合之间应有一些交集。但有的交集大了&#xff0c;则…...

第三天:实现网络编程基于tcp/udp协议在Ubuntu与gec6818开发板之间双向通信

互联网地址 每一台设备接入互联网后&#xff0c;都会举报一个唯一的地址编号 IP地址 INTERNET地址 internet地址 &#xff1a;它是协议上的一个逻辑地址 目前来说&#xff0c;我们主要的IP地址有两类 IPV4 IPV6 IPV4 其实就是使用一个32bit整数作为IP IPV6 其实就是使用一…...

【MediaSoup---源码篇】(三)Transport

概述 RTC::Transport是mediasoup中的一个重要概念&#xff0c;它用于在mediasoup与客户端之间传输实时音视频数据。 Transport继承着众多的类&#xff0c;主要用于Transport的整体感知 class Transport : public RTC::Producer::Listener,public RTC::Consumer::Listener,publ…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...