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

news2024/11/29 22:43:38

文章目录

  • 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 pymysql


db = 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 pymysql

db = 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()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML的学习 Day01

《网页设计与制作》是web前端开发技术中静态网页中的内容,主要包括html、css、js中的静态内容部分,是专业基础课程。 随着5G时代的到来,人工智能与物联网结合行业的飞速发展,更多的互联网的崛起。这肯定就比如伴随着对移动互联网…

05-Redis高可用集群之水平扩展

上一篇:04-Redis哨兵高可用架构 1.概要说明 Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,…

Houdini 灯光插件工作流程,如何将 HDR Light Studio 与 Houdini 结合使用?

如何不额外购买硬件,流畅的运行Houdini: Houdini项目渲染慢,本地硬件配置不够,想要加速渲染,在不增加额外的硬件成本投入的情况下,最好的解决方式是使用渲云云渲染,在云端批量渲染,…

高效通过指定秒数分割视频,定制你的片段!

大家好!在处理电脑上的视频文件时,如果需要从指定秒数处进行分割视频,传统的方法可能会显得非常繁琐和费时。为了让您能够轻松实现这一需求,我们为您提供了一种高效的方法,让您能够精准地从指定秒数处分割视频&#xf…

出现线程安全问题的原因和解决方案

文章目录 一、什么是线程安全问题二、出现线程安全问题的原因三、解决方案3.1加锁 一、什么是线程安全问题 某些代码在单线程环境下执行结果完全正确,但在多线程环境下执行就会出现Bug,这就是“线程安全问题”。 下面以一个变量n自增两次,每…

Linux【一】

目录 一、Linux操作系统发展历史 Unix Minix Linux 二、Linux简介 Linux是什么 Linux的版本 Linux内核版本 Linux发行版本 Linux应用领域? Linux注意事项 三、Linux目录 系统目录 用户目录 文件颜色 四、Linux命令行基本操作 Linux命令格式&#x…

小程序中会员如何绑定身份证信息

在小程序中,会员绑定身份证信息是一项重要且常见的功能,可以帮助商家更好地了解用户的身份信息,提供个性化的服务和保障用户的权益。例如生日礼物,还有以及医保支付等需要实名认证的场景等。下面将介绍一些小程序中会员如何绑定身…

Open Feign

Open Feign 在前面的学习中,我们使用了Ribbon的负载均衡功能,简化了远程调用时的代码: String user this.restTemplate.getForObject("http://spring-provider/provider/" id, String.class);如果就学到这里,可能以…

Zebec 生态 AMA 回顾:Nautilus 以及 $ZBC 的未来

在 9 月 7 日,Zebec 创始人 Sam 做客社区,并进行了“Nautilus Chain 以及 $ZBC 的未来”主题的 AMA 访谈。Sam 在本次访谈中对 Nautilus Chain 生态的价值捕获、Zebec 生态布局规划、可能会推出的 Nautilus Chain 治理通证 NAUT 进行了解读。本文将对本次…

基于SSM的医院在线挂号预约系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

人大女王金融硕士项目——应以长远的眼光去规划自己的人生蓝图

我们的现在的生活都是过去努力的结果,你的未来如何是由今后的努力决定。我们不要停滞不前,应从长远的眼光去规划自己的人生蓝图。你有想过在职攻读人民大学与加拿大女王大学金融硕士项目来提升自己吗? 着我国经济迅猛的发展,金融…

鸿蒙HarmonyOS应用开发初体验

最近华为发布mt60新机火了,作为一名移动开发程序员,对鸿蒙系统开发移动端就很感兴趣了。 开发工具:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 下载完后按默认安装就可以了,界面跟AS很类似,之前我jdk环…

前端面试合集(二)

前端面试题合集 1.懒加载的原理及实现了解吗2.如何理解JS异步3.阐述一下 JS 的事件循环4.JS 中的计时器能做到精确计时吗?为什么? 1.懒加载的原理及实现了解吗 原理:当图片没有到达可视范围内时,图片不加载,当图片一旦…

【Realtek sdk-3.4.14b】RTL8197FH-VG和RTL8812F自适应认证失败问题分析及修改

WiFi自适应认证介绍 WiFi 自适应可以理解为针对WiFi的产品,当有外部干扰信号通过,WiFi产品自动停止发出信号一段时间,以达到避让的目的。 问题描述 2.4G和5G WiFi自适应认证失败,信道停止发送信号时间过长,没有在规定时间内停止发包 2.4G截图 问题分析 根据实验室描述可以…

yolov7简化网络yaml配置文件

yolov7代码结构简单,效果还好,但是动辄超过70几个模块的配置文件对于想要对网络进行魔改的朋友还是不怎么友好的,使用最小的tiny也有77个模块 代码的整体结构简单,直接将ELAN结构化写成一个类就能像yolov5一样仅仅只有20几个模块&…

[H5动画制作系列] 奔跑的豹子的四种Demo演化

资源: bg.jpg: leopard.png: 背景透明 peopard2.png 背景不透明 参考代码1: leopard.js: (function(window) {ma = function() {this.initialize();}ma._SpriteSheet = new createjs.SpriteSheet({images: ["leopard.png"], frames: [[0,0,484,207],[486,0,484,20…

H5唤醒App

H5唤醒App 在App的业务场景中,H5唤醒App是一个几乎必备的功能。比如你想要实现以下需求:当App内容通过各种途径(短信、二维码、微信等)触达用户,从浏览器或者第三方内部可以直接打开H5网页,由网页端交互操作…

线性代数的本质(十)——矩阵分解

文章目录 矩阵分解LU分解QR分解特征值分解奇异值分解奇异值分解矩阵的基本子空间奇异值分解的性质矩阵的外积展开式 矩阵分解 矩阵的因式分解是把矩阵表示为多个矩阵的乘积,这种结构更便于理解和计算。 LU分解 设 A A A 是 m n m\times n mn 矩阵,…

web安全漏洞-SQL注入实验2

实验目的 学习sql显注的漏洞判断原理掌握sqlmap工具的使用分析SQL注入漏洞的成因 实验工具 sqlmapsqlmap是用python写的开源的测试框架,支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access&#x…

SLS 1508 支持艾默生DeltaV报警抑制模块的设计

SLS 1508 支持艾默生DeltaV报警抑制模块的设计 宣布其SILAlarm V2.10合理化工具支持艾默生DeltaV报警抑制模块的设计和自动配置。这些模块通过在满足预定义条件时抑制来自操作员的警报来消除警报泛滥,并帮助用户符合ISA-18.2和IEC 62682标准。 报警抑制逻辑在艾默…