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

一篇文章打好SQL基础,熟悉数据库的基础操作和方法,以及安装MySQL软件包和Python操作MySQL基础使用

 1.SQL的概述

SQL的全称:Structured Query Language,结构化查询语言,用于访问和处理数据库的标准计算机语言

SQL语言1974年有Boyce和Chamberlin提出的,并且首先在IBM公司研制的关系数据库系统SystemR上实现。

经过多年发展,SQL已经成为数据库领域同意的数据操作标准语言,可以说几乎市面上所有的数据库系统都支持使用SQL语言来操作。

SQL语言的分类

由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包括数据的管理、表的管理、库的管理、账户管理、权限管理等等。

所以基于操作数据库的SQL语言,也基于此功能划分为四类:

  1. 数据定义:DDL(Data Definition Language)

    库的创建删除、表的创建删除等

  2. 数据操控:DML(Data Manipulation Language)

    新增数据、删除数据、修改数据等

  3. 数据控制:DCL(Data Control Language)

    新增用户、删除用户、密码修改、权限管理等

  4. 数据查询:DQL(Data Query Language)

    基于需求查询和计算数据

SQL的语法特征

在学习DDL、DQL等之前,我们先来了解SQL的语法特征。

  1. SQL语言,大小写不敏感

  2. SQL可以单行或多行书写,最后以;号结束

  3. SQL支持注释:

  4. 单行注释:--注释内容 (-- 后面一定要有一个空格)

  5. 单行注释:# 注释内容 (#后面可以不加空格,推荐加上)

  6. 多行注释:/* 注释内容 */

show 
-- 这是第一种注释方法
# 这是第二种注释方法
/* 多行注释 * */
databases;

 

 2.SQL的DDL

DDL是指数据定义语言,用来对数据库中库表建立删除定义的。

创建库

# 查看数据库
SHOW DATABASES
# 使用数据库
USE 数据库名称:
# 创建数据库
CREATE DATABASE数据库名称[CHARSET UTF8]:
# 删除数据库
DROP DATABASE数据库名称;
# 查看当前使用的数据库
SELECT DATABASE();

创建表和删除表

 

 

# 查看有哪些表
SHOW TABLES; # 注意要先选择数据库
# 创建表
create table 表名称(列名称 列类型,列名称 列类型,……
);
​
drop table 表名称;
drop table if exists 表名称;
drop table where 条件判断;

列类型

-- 列类型:
int -- 整数
float -- 浮点数
varchar(长度) -- 文本,长度为数字,做最大长度限制
date -- 日期类型
timestamp -- 时间戳类型

3.SQL的DML

DML是指数据操作语言,用来对数据库中表的数据记录进行更新。

关键字:

  1. 插入INSERT

  2. 删除DELETE

  3. 更新UPDATE

基础语法

insert into 表(列1,列2,列3,列4,……,列N) values(值1,值2,值3,……,值N)[(值1,值2,值3,……,值N),……,(值1,值2,值3,……,值N)]

示例

create table student(id int,name varchart(20),age int
);
​
# 仅插入id数据
insert into student(id) values(1000),(1002),(1003);
# 插入全部id列数据
insert into student(id, name, age) values(1001, '张三', 20),(1002, '李四', 19),(1003, '王五', 21);
# 插入全部列数据,快捷写法
insert into student values(1001, '张三', 20),(1002, '李四', 19),(1003, '王五', 21);

数据删除DELETE

基础语法

DELETE FROM 表名称 WHERE 条件判断
条件判断:列 操作符 值
操作符:= < > <= >= != 等 如:
id = 5
id < 3
id >= 6
id != 5

演示案例

CREATE TABLE student(id int,name varchar(10),age int
);
​
INSERT INTO student(id) values(1), (2), (3);
/** 等价于下面的代码* INSERT INTO student(id) values(1);* INSERT INTO student(id) values(2);* INSERT INTO student(id) values(3);
*/
​
insert into student(id, name, age) values(4, '张三', 31),(5, '李四',33);
delete from student where age = 33;

4.SQL的DQL

1.基础查询

基础语法:SELECT 字段列表|* FROM表

含义就是:从(FROM)表中,选择(SELECT)某些列进行展示

代码演示

select id, name from student;
select * from student;
select * from student where age > 20;
select * from student where id = '张三';

2.分组聚合

分组聚合应用场景,如:统计班级中男生和女生的人数。

这种需求就需要:

  1. 按性别分组

  2. 统计各组的人数

这就称之为:分组聚合。

基础语法

select 字段|聚合函数 from 表 [where 条件] group by 列
聚合函数:
sum(列) 求和
avg(列) 求平均值
min(列) 求最小值
max(列) 求最大值
count(列|*) 求数量

示例

select gender, avg(age), sum(age), min(age), max(age), count(avg) from student group by gender;

3.排序分页

结果排序

可以对查询结果,使用order by关键字,指定某个列进行排序,语法:

select 列|聚合函数|* from 表
where ……
group by ……
order by …… [ASC | DESC]

示例

select * from student where age > 20 order by age asc;
select * from student where age > 20 order by age desc;

结果分页限制

同样,可以使用limit关键字,对查询结果进行数量限制或分页显示,语法:

select 列|聚合函数|* from 表
where ……
group by ……
order by …… [asc | desc]
limit n[, m]

示例

select * from student limit 10; # 取10条信息
select * from student limit 10, 5; # 从第11条开始往后取5条
select * from student where age > 20 group by age
order by age limit 3;

5.Python操作MySQL基础使用

1.基础使用

pymysql

除了使用图像化工具以外,我们也可以使用编程编程语言来执行SQL从而操作数据库。

在Python中,使用第三方库:pymysql来完成对MySQL数据库的操作。

安装:pip install pymysql

 

 but,一开始,在我的命令提示符里面怎么都下不下来,这时候按照notice里面的To update run后面的绿色的代码,粘贴到下面来进行操作:

 

 或者使用下列的方式:

pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host [pypi.douban.com](http://pypi.douban.com/)

 

 创建到MySQL的数据库链接

代码如下:

from pymysql import Connection
# 获取到MySQL数据库的连接对象
conn = Connection(host='localhost', # 主机名(或者IP地址)port=3306,        # 端口,默认3306user='root',      # 账户名password='123456' # 密码
)
# 打开MySQL数据库软件信息
print(conn.get_server_info())
# 关闭到数据库的链接
conn.close()

或者输入如下的代码:

import pymysql
​
db = pymysql.connect(host="localhost",port=3306,user='root',    #在这里输入用户名password='qazwsxedc.2345',     #在这里输入密码charset='utf8mb4') #连接数据库
​
cursor = db.cursor() #创建游标对象
​
sql = 'show databases' #sql语句
​
cursor.execute(sql)  #执行sql语句
​
one = cursor.fetchone()  #获取一条数据
print('one:',one)
​
many = cursor.fetchmany(3) #获取指定条数的数据,不写默认为1
print('many:',many)
​
all = cursor.fetchall() #获取全部数据
print('all:',all)
​
cursor.close()
db.close()  #关闭数据库的连接

 

 出现上图界面就说明pymysql成功将pycharm和mysql连接起来了。

执行查询性质的SQL语句

from pymysql import Connection
# 获取到MySQL数据库的连接对象
conn = Connection(host='localhost',port=3306,user='root',password='2345'
)
# 获取游标对象
cursor = conn.cursor()
conn.select_db("world")
# 使用游标对象,执行sql语句
cursor.execute("SELECT * FROM student")
# 获取查询结果
results = cursor.fetchall()
for r in results:print(r)
# 关闭到数据库的链接
conn.close()

2.数据插入

commit提交

pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码“确认”这种更改行为。

通过链接对象.commit()即可确认此行为。

from pymysql import Connection
# 获取到MySQL数据库的连接对象
conn = Connection(host='localhost',port=3306,user='root',password='2345'
)
# 获取游标对象
cursor = conn.cursor()
conn.select_db("world")
# 使用游标对象,执行sql语句
cursor.execute("insert into student values(10001, '唐七', 19)")
# 关闭到数据库的链接
conn.close()

6.综合案例

使用SQL语句和pymysql库完成综合案例的开发

 

 DDL定义

本次需求开发我们需要新建一个数据库来使用,数据库名称:py_sql

基于数据结构,可以得到建表语句:

CREATE TABLE order(order_date DATE,order_id, VARCHAR(255),money INT,province VARCHAR(10)
);

实现步骤

读取数据 -> 封装数据对象 -> 构建数据库链接 -> 写入数据库

import ..
text_file_reader = TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("0:/2011年2月销售数据JS0N.txt")
jan_data:list[Record] = text_file_reader.read_data()
feb_data:list[Record] = json_file_reader.read_data()
# 将2个月份的数据合并list来存储
all_data:list[Record] = jan_data + feb_data# 构建MySQL链接对象
cursor = conn.cursor()
conn.select_db("py_sql")
# 组织SQL语句
for record in all_data:sql = f"insert into orders(order_data, order_id, money, province)" f"values('{record.date}','{record.order_id)'{record.noney},'{record.province}')"print(sql)cursor.excute(sql)
conn.close()

相关文章:

一篇文章打好SQL基础,熟悉数据库的基础操作和方法,以及安装MySQL软件包和Python操作MySQL基础使用

1.SQL的概述 SQL的全称&#xff1a;Structured Query Language&#xff0c;结构化查询语言&#xff0c;用于访问和处理数据库的标准计算机语言。 SQL语言1974年有Boyce和Chamberlin提出的&#xff0c;并且首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发展&am…...

C4D R26 渲染学习笔记 建模篇(3):生成器

文章目录 前文回顾介绍篇建模篇 生成器介绍生成器变形器搭配举例 生成器详细介绍细分曲面布料曲面 未完待续 前文回顾 介绍篇 C4D R26 渲染学习笔记&#xff08;1&#xff09;&#xff1a;C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记&#xff08;2&#xff09;&#xff…...

智慧梁场3D建模

智慧梁场3D建模&#xff1a;数字化革命下的新起点 ​ 随着科技的迅猛发展&#xff0c;数字化已经成为了现代工业生产的必然趋势。作为传统工业的核心产业&#xff0c;建筑行业也在不断地探索数字化变革的新路径。而“智慧梁场3D建模”便是其中的一项杰出实践。 ​ 梁场是建筑…...

《程序员面试金典(第6版)》面试题 02.08. 环路检测(哈希法,双指针,检测链表是否有环)

题目描述 给定一个链表&#xff0c;如果它是有环链表&#xff0c;实现一个算法返回环路的开头节点。若环不存在&#xff0c;请返回 null。 题目传送门&#xff1a;面试题 02.08. 环路检测 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链…...

软考A计划-试题模拟含答案解析-卷六

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…...

Linux 上的 .NET 崩溃了怎么抓 Dump

一&#xff1a;背景 1. 讲故事 训练营中有朋友问在 Linux 上如何抓 crash dump&#xff0c;在我的系列文章中演示的大多是在 Windows 平台上&#xff0c;这也没办法要跟着市场走&#xff0c;谁让 .NET 的主战场在工控 和 医疗 呢&#xff0c;上一张在 合肥 分享时的一个统计图…...

QT桌面项目(状态栏和导航栏设置)

文章目录 前言一、状态栏二、导航栏三、同时添加状态栏和导航栏总结 前言 为了和我们这个项目做的更加真实&#xff0c;这里为我们的项目添加上状态栏和导航栏让他变成更加接近手机的桌面效果。 一、状态栏 这个状态栏就是显示时间和wifi状态&#xff0c;电池电量的&#xf…...

数据链路层:点对点协议PPP

数据链路层&#xff1a;点对点协议PPP 笔记来源&#xff1a; 湖科大教书匠&#xff1a;点对点协议PPP 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 数据链路层只负责直接相连的两个结点之间的通信 PPP是点对点数据链路层协议 用户通过ISP接入因特…...

C/C++读取txt文件中的float数据并用指针存储

C语言中读取txt文件中的数据 以下是一个简单的示例代码&#xff0c;演示如何在C语言中读取txt文件中的数据&#xff1a; #include <stdio.h>int main() {FILE *fp;char buffer[100];// 打开文件fp fopen("example.txt", "r");// 如果文件打开失败…...

对KMP算法的一点碎碎念——上篇

对KMP算法的一点碎碎念——上篇 文章目录 对KMP算法的一点碎碎念——上篇1. KMP 算法 Next数组 求解问题1.1 前置知识-最长公共前后缀LCP1.1.1 前缀与后缀1.1.2 最长公共前后缀LCP 1.2 手算法求解 Next数组值(3种常见情况)1.2.1 情况1: next数组 正常存放匹配字符的长度情况1的…...

算法---边界着色

题目 给你一个大小为 m x n 的整数矩阵 grid &#xff0c;表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。 两个网格块属于同一 连通分量 需满足下述全部条件&#xff1a; 两个网格块颜色相同 在上、下、左、右任意一个方向上…...

二叉排序树的查找、插入、删除

目录 二叉排序树的定义 二叉排序树的查找 二叉排序树的插入 二叉排序树的定义 二叉排序树的定义 二叉排序树&#xff08;Binary Sort Tree&#xff0c; BST&#xff09;&#xff0c;也称二叉查找树。 二叉排序树或者是一棵空树&#xff0c;或者是一棵具有下列特性的非空二叉…...

《Opencv3编程入门》学习笔记—第三章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第三章 HighGUI图形用户界面初步 一、图像的载入、显示和输出到文件 &#xff08;一&#xff09;OpenCV的命名空间 简单的OpenCV程序标配&#xff1a; #include <o…...

如何从Ubuntu Linux中删除Firefox Snap?

Ubuntu Linux是一款广受欢迎的开源操作系统&#xff0c;拥有强大的功能和广泛的应用程序选择。默认情况下&#xff0c;Ubuntu提供了一种称为Snap的软件打包格式&#xff0c;用于安装和管理应用程序。Firefox是一款流行的开源网络浏览器&#xff0c;而Firefox Snap是Firefox的Sn…...

数学建模的初阶-快速上手

目录 第一步&#xff1a;明确问题 第二步&#xff1a;选择建模方法 第三步&#xff1a;收集数据 第四步&#xff1a;构建数学模型 第五步&#xff1a;模型验证与评估 数学建模软件推荐 统计模型 (1) 线性回归模型 (2) 逻辑回归模型 (3) 时间序列模型 优化模型 (1) …...

复习向 C/C++ 编程语言简介和概括(C++复习向p1)

文章目录 C 编程语言C 和 C 关系标准的 C 组成ANSI 标准比较重要的标准化时间 C 编程语言 是一种静态类型的、编译式的、通用式的、大小写敏感、不规则的编程语言支持过程化编程&#xff0c;面向对象&#xff0c;泛型编程 C 和 C 关系 C 是 C 的一个超集&#xff0c;任何合法…...

DRF之过滤,排序,分页

一、权限组件源码解读 1.继承了APIView 才有的---》执行流程---》dispatch中----》三大认证 APIView的dispatch def initial(self, request, *args, **kwargs):self.perform_authentication(request)self.check_permissions(request)self.check_throttles(request) 2 读…...

我的Redis学习,共写了14篇博客文章

早在19和20年全面学习SpringBoot相关技术知识时也曾经有学习到Redis&#xff0c;主要是看了几家的视频教程&#xff0c;但是未曾有具体的实践&#xff0c;后来再学习到Docker和Spring Session框架的Redis存储时&#xff0c;又稍微的实践了一丢丢&#xff0c;所有的实践也就仅此…...

mPython软件使用指南

①软件界面 一、软件界面的介绍 1.模式切换 硬件编程 Python3.6 Jupyter python3.6模式细节补充&#xff08;一般不使用该模式&#xff0c;此处可跳过&#xff09; Python3.6模式的界面 左侧指令分类栏 Python3.6模式的图形化指令分类分为&#xff1a; Python语法基础相关指令&…...

龙芯2K1000实战开发-系统配置详解

目录 概要 整体架构流程 技术名词解释 技术细节 ​编辑 总结...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...