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

news2024/11/27 12:29:09

 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,        # 端口,默认3306
    user='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()

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

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

相关文章

KVM(二)命令行新建虚拟机

目录 一、准备工作 二、新建虚拟机 2.1 文件准备 2.2 正式安装 2.3 时区设置 2.4 安装设置 2.5 设置root用户密码 2.6 vm2安装完成 三、进入虚拟机vm2 四、网络设置 五、参考链接 若还未部署KVM&#xff0c;请参考第一节&#xff1a; KVM&#xff08;一&#xff09;…

如何让你的 Jmeter+Ant 测试报告更具吸引力?

目录 引言 一、安装apache-Ant 二、Jmeter准备 3、生成测试报告 4、JMeter动态参数处理逻辑是什么&#xff1f; 5、JMeter是怎么做API自动化测试的&#xff1f; 结语 引言 想象一下&#xff0c;你辛苦搭建了一个复杂的网站&#xff0c;投入了大量的时间和精力进行开发和…

java 对接国标摄像头流程、代码整合 springboot SIP -GB2818

java 对接设备的代码资料较少&#xff0c;这里介绍GB2818的基本对接流程&#xff0c;有用自取&#x1f447; java负责SIP信令的注册交互&#xff0c;推流、拉流鉴权摄像头负责推流、流媒体负责拉流、转码 wvp-GB28181-pro项目 ,如果java对接各种摄像头&#xff0c;这个项目很&a…

Java流程控制(二)

⭐ 循环结构⭐ 嵌套循环⭐ break 语句和 continue 语句⭐ 方法⭐ 方法的重载(overload)⭐ 递归结构 ⭐ 循环结构 循环结构分两大类&#xff0c;一类是当型&#xff0c;一类是直到型。 &#x1f41f; 当型&#xff1a; 当布尔表达式条件为 true 时&#xff0c;反复执行某语句&a…

【eNSP】win11解决virtualbox5.2.44无法安装、不兼容的问题

问题描述&#xff1a; 本人大三学生一枚&#xff0c;这学期上计算机网络&#xff0c;老师要求安装华为eNSP软件&#xff0c;安装环节一切顺利&#xff0c;直到安装到依赖组件中VirtualBox-5.2.44时&#xff0c;发生了问题&#xff0c;Windows提示此应用无法在此设备上运行&…

AI工具第三期:本周超16款国内精选AI工具分享!

1. 未来百科 未来百科&#xff0c;是一个知名的AI产品导航网站——为发现全球优质AI工具而生。目前已聚集全球2500优质AI工具产品&#xff0c;旨在帮助用户发现全球最好的AI工具&#xff0c;同时为研发AI垂直应用的创业公司提供展示窗口&#xff0c;迎接未来的AI时代。未来百科…

RocketMq源码分析(七)--消息发送流程

文章目录 一、消息发送入口二、消息发送流程1、消息验证1&#xff09;消息主题验证2&#xff09;消息内容验证 2、查找路由3、消息发送1&#xff09;选择消息队列2&#xff09;消息发送-内核实现sendKernelImpl方法参数获取brokerAddr添加消息全局唯一id设置实例id设置系统标记…

Linux Audio (5) DAPM-2 Widget/Path/Route

DAPM-2 Widget/Path/Route WM8960结构图WidgetRoutePath总结 课程&#xff1a;韦东山音频专题 内核&#xff1a;Kernel 3.5 实例&#xff1a;WM8960 WM8960结构图 录音时的音频通路 抽象图为&#xff1a; Widget wm8960.c sound\soc\codecs static const struct snd_soc_dap…

C++进阶——mapset的实现

C进阶——map&set的实现 红黑树的迭代器 迭代器的好处是可以方便遍历&#xff0c;是数据结构的底层实现与用户透明。如果想要给红黑树增加迭代器&#xff0c;需要考虑以前问题&#xff1a; 迭代器的定义 begin()与end() STL明确规定&#xff0c;begin()与end()代表的是一…

OS7安装rabbitmq

1.卸载存在的rabbitmq 停止rabbitmq服务&#xff1a; systemctl stop rabbitmq-server 查看rabbitmq安装的相关列表: yum list | grep rabbitmq 卸载rabbitmq已安装的相关内容: yum -y remove rabbitmq-server.noarch 查看erlang安装的相关列表: yum list | grep erlang 卸…

shell脚本----免交互操作

文章目录 一、Here Document免交互1.1免交互概述1.2语法格式1.3操作实验1.4tee命令 二、expect命令 一、Here Document免交互 1.1免交互概述 使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如 ftp、cat 或 read 命令。 是标准输入的一种替代品可以帮助脚…

【Unity3D】立方体纹理(Cubemap)和天空盒子(Skybox)

1 立方体纹理&#xff08;Cubemap&#xff09; 本文完整资源见 → 立方体纹理&#xff08;Cubemap&#xff09;和天空盒子&#xff08;Skybox&#xff09; 。 1&#xff09;立方体纹理简介 立方体纹理是指由上、下、左、右、前、后 6 张纹理组成的立方体结构纹理&#xff0c;其…

X3运行paddle-lite Demo

仓库地址GitHub - PaddlePaddle/Paddle-Lite-Demo at master git clone直接下载到X3上 环境准备 $ sudo apt-get update $ sudo apt-get install gcc g make wget unzip libopencv-dev pkg-config $ wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz $ tar -zxvf …

Node.js--》深入理解 PM2:Node.js 应用部署和管理利器

目录 pm2&#xff1a;进程自动化管理工具 pm2的安装与使用 pm2&#xff1a;进程自动化管理工具 PM2&#xff1a;是一个流行的Node.js进程管理器&#xff0c;它可以帮助您在生产环境中管理和保持Node.js应用程序运行。PM2的功能包括监视您的应用程序、自动重启您的应用程序、…

手撕代码——异步FIFO

手撕代码——异步FIFO 一、异步FIFO原理与设计读写地址指针控制读写地址指针跨时钟处理与空满信号判断读写地址与读写操作 二、完整代码与仿真文件三、仿真结果 一、异步FIFO原理与设计 在FIFO的设计中&#xff0c;无论是同步FIFO&#xff0c;还是异步FIFO&#xff0c;最最最最…

ChatGPT:4. 使用OpenAI API创建自己的AI网站:3. flask web框架将OpenAI 创作的图片显示在网页界面上

ChatGPT&#xff1a;4. 使用OpenAI API创建自己的AI网站&#xff1a;3. flask web框架将OpenAI 创作的图片显示在网页界面上 如果你还是一个OpenAI的小白&#xff0c;有OpenAI的账号&#xff0c;但想调用OpenAI的API搞一些有意思的事&#xff0c;那么这一系列的教程将仔细的为…

nginx缓存

实验&#xff1a; 步骤一 tomcat1&&tomcat2部署&#xff1a; tomcat部署参照下面博客 (232条消息) Tomcat部署及优化_zhangchang3的博客-CSDN博客 两个网页入下图设计 步骤二 nginx 七层转发设置 编译安装nginx 修改配置文件 vim /usr/local/nginx/conf/nginx.…

5.21学习周报

文章目录 前言文献阅读摘要简介方法介绍讨论结论 时间序列预测 前言 本周阅读文献《Streamflow and rainfall forecasting by two long short-term memory-based models》&#xff0c;文献主要提出两种基于长短时记忆网络的混合模型用于对水流量和降雨量进行预测。小波-LSTM&a…

全网最全,性能测试-性能瓶颈分析详全,优秀的性能测试工程师养成记...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 内存分析 内存的…

06:mysql---约束

目录 1介绍 2:约束演示(建表) 3:外键约束 4:外建行为 5:外建是否可以删除 6:多表查询 1介绍 1:概念:约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 2:目的:保证数据库中数据的正确、有效性和完整性。 3:分类: 约束描述关键字非空约束限制…