2.2 SQL入门和实战

news2024/11/14 14:59:31

文章目录

    • 数据库介绍
    • MySQL的入门应用
    • SQL的基础与DDL
      • SQL的分类:
      • SQL的基础语法特性:
      • DDL库管理:
      • DDL表管理:
    • SQL-DML
    • SQL-DQL
      • DQL基础查询
      • DQL分组聚合
      • 排序分页
    • Python&MySQL
      • commit

数据库介绍

  1. 数据库的层级:按照库->表->数据进行储存(简单字面理解即可)。
  2. 数据库就是指数据存储的库,作用是组织数据或者存储数据。
  3. 常见的数据库软件有:Oracle 、MySQL 、SQL Server 、PostgreSQL 、SQLite,这里介绍以MySQL为主。
  4. 数据库和SQL的关系:数据库(软件)提供数据组织存储的能力,SQL就是在这个过程中帮助我们处理的工具。

具体的安装过程就不细说了:
在这里插入图片描述
大家可以通过mysql -uroot -p进行访问,看看自己有没有安装错误。

MySQL的入门应用

常见的基础操作:

操作说明
mysql -uroot -p登陆操作
show databases查看有哪些数据库
use 数据库名称使用某个数据库
show tables查看数据库内有哪些表
exit退出MySQL命令行环境

命令框上具体的操作:
在这里插入图片描述
在这里插入图片描述
而不可能所有的操作都在命令框当中进行使用,所有后续的介绍以软件DBeaver进行介绍:
在这里插入图片描述

SQL的基础与DDL

SQL的分类:

数据定义:DDL(库的创建删除,表的创建删除等)
数据操纵:DML(新增数据,删除数据,修改数据等)
数据控制:DCL(新增用户,删除用户,密码修改,权限管理)
数据查询:DQL(基于需求查询和计算数据)

SQL的基础语法特性:

1. SQL语言,大小写不敏感。
2. SQL可以单行或者多行书写,最后以;结束
3. SQL支持注释:
	(1)单行注释:-- 注释内容(--之后需要有一个空格)2)单行注释:# 注释内容(#之后可加可不加空格,推荐加上)3)多行注释:/*注释内容*/ 

小样例:
在这里插入图片描述

DDL库管理:

管理函数说明
show databases;查看数据库
use 数据库名称使用数据库
create database 数据库名称[charset UTF8]创建数据库
drop database 数据库名称删除数据库
select database()查看当前使用的数据库

DDL表管理:

管理函数说明
show tables;查看有那些表,前提是先选择哪一个数据库
drop table 表名称;删除表
drop table if exists 表名称;删除表
create 表名称(列名称 列类型,列名称 列类型······);创建一个新表
列的类型说明
int整数
float浮点数
varchar(长度)文本,长度为数字(最大255),做最大长度限制
data日期类型
timestamp时间戳类型

SQL-DML

# 数据插入
insert into 表名称[(1,列2······)] values(1,2······)[,(1,2······),······];

# 数据删除
# 条件判断操纵符:= 、!=、<、<=、>、>=
# 值得关注的是是 = 不是 ==。
# 如果不存在条件判断,则是将表当中的数据全部删除。
delete from 表名称[where 条件判断];

# 数据更新 
# 如果不存在条件判断,则将整张表的所有列的值改变成相对应的修改值
updata 表名 set=[where 条件判断];


关于插入样例:

create table student(id int,name varchar(10),age int);

insert into student (id,name,age) values(1,'张三',18),(2,'李四',19),(3,'王五',18);

输出结果:
在这里插入图片描述
关于删除样例:

create table student(id int,name varchar(10),age int);

insert into student (id,name,age) values(1,'张三',18),(2,'李四',19),(3,'王五',18);

delete from student where id=1;

输出样例:
在这里插入图片描述
关于数据更新:

create table student(id int,name varchar(10),age int);

insert into student (id,name,age) values(1,'张三',18),(2,'李四',19),(3,'王五',18);

delete from student where id=1;

update student set name = '张三' where id = 2;

输出结果:
在这里插入图片描述

值得关注的是DML当中字符串的值,如果是字符串,应该用’'(单引号)包裹起来

SQL-DQL

DQL基础查询

# 基础查询
# *代表查询所有的内容
select 字段列表|* from[where 条件判断]

查询样例1:

select name,age from student ;

输出结果:
在这里插入图片描述
查询案例2:

select * from student where age=19;

输出结果:
在这里插入图片描述

DQL分组聚合

# 分组聚合
# 聚合函数:
# sum(列) 求和
# avg(列) 求平均值
# min(列) 求最小值
# max(列) 求最大值
# count(列|*) 求数量
# 一个小的条件限制:字段仅能出现列出现的。
select 字段|聚合函数 from 表名称[where 判断条件] group by;

样例:

create table student(id int,name varchar(10),age int,gender varchar(5));

insert into student (id,name,age,gender) values(1,'张三',18,'男'),(2,'李四',19,'女'),(3,'王五',18,'男');

select gender,avg(age) from student group by gender;

输出结果:
在这里插入图片描述
实际上的理解:select gender,avg(age) from student group by gender;

  1. 按照gender分组,计算每一组的age的平均值。
  2. gender,avg(age) 代表输出的结果显示为。
  3. 可以改成id,avg(age)吗?肯定是不行的,在select之后的列只能填组名列。
  4. count的理解 count(age)实际上是判断age是否为0,如果不为0,则加一,实际上我们count()当中写一个万能的*即可,即count(*)。

排序分页

# 排序
select 字段|聚合函数 from 表名称[where 判断条件] group by 列    加上下面的     ;
# 前面和正常的写法一样,爱怎么写,怎么写,最后面写上order by 标准[ASC|DESC]
# asc升序 ,DESC降序

# 分页
# 再在后面加上limit n[,m]
# 如果是limit n代表仅从头取5条数据。
# 如果是limit n,m代表从n+1条开始取m条数据。

排序例子:

select * from student order by age asc;

输出结果:
在这里插入图片描述
分页例子1:

select * from student order by age asc limit 2;

输出结果:
在这里插入图片描述
分页例子2:

select * from student order by age asc limit 1,2;

输出结果:
在这里插入图片描述
总结:
在这里插入图片描述

Python&MySQL

使用Python当中的第三方数据库:pymysql

from pymysql import Connection
conn = Connection(
    host='localhost',  # 主机名,或者ip地址
    port=3306,         # 端口默认3306
    user='root',       # 账户名
    password='123456' # 密码
)
# 选择游标对象
cursor = conn.cursor()
# 选择数据库相当于use操作
conn.select_db('test')
# 使用游标对象
# 执行非查询性质的SQL
cursor.execute('create table test_pymysql2(id int,name varchar(5))')
# 使用查询性质的SQL
cursor.execute('select * from test_pymysql2')
result = cursor.fetchall()
for r in result :
    print(r)
# 关闭链接
conn.close()

commit

以及插入数据的:

手动commit版本:

from pymysql import Connection
conn = Connection(
    host='localhost',  # 主机名,或者ip地址
    port=3306,         # 端口默认3306
    user='root',       # 账户名
    password='123456' # 密码
)
# 选择游标对象
cursor = conn.cursor()
# 选择数据库相当于use操作
conn.select_db('test')
# 使用游标对象
# 执行非查询性质的SQL
cursor.execute('create table student(id int,name varchar(10),age int);')
cursor.execute('insert into student (id,name,age) values(1,"张三",18),(2,"李四",19),(3,"王五",18);')
# 插入语句之后,需要添加一个commit函数进行确认
conn.commit()
# 使用查询性质的SQL
cursor.execute('select * from student')
result = cursor.fetchall()
for r in result :
    print(r)
# 关闭链接
conn.close()

当然也有自动版本:

conn = Connection(
    host='localhost',  # 主机名,或者ip地址
    port=3306,         # 端口默认3306
    user='root',       # 账户名
    password='123456' # 密码
    autocommit = True  # 设置自动提交
)

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

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

相关文章

WAL Write AheadLog

WAL即 Write Ahead Log&#xff0c;WAL的主要意思是说在将元数据的变更操作写入磁盘之前&#xff0c;先预先写入到一个log文件中 磁盘读取分为顺序读取和随机读取 内存读取也有顺序读取和随机读取 下图是磁盘&#xff0c;内存 顺序和随机读取的效率表 一般来说内存读取速度要…

硬件设计基础 —— 电流、电压、功率

目录 电流的形成 原子的结构 原子核与电子 电子的移动 电流的测量 电子的运动形成电流 电压的作用 功率 电流的形成 原子的结构 上图为原子结构示意图中间带正电的称为原子核带负电荷的电子围绕在他周围旋转原子核与电子 电子离原子核越远&#xff0c;外围电子越少&…

Cadence PCB仿真使用Allegro PCB SI进行数字电路毛刺容差设置的方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1, 概述2,配置方法3,总结1, 概述 数字信号的波形往往不是完美的低和高电平,经常会有一些毛刺。这在信号完整性仿真中也经常遇到,为了保证仿真顺利进行需要对接收电路的毛刺容差进行设置。本文简单介绍其配置方法。…

COCO_02 二值分割数据集制作为COCO数据集

文章目录1 前言2 分割数据集格式2.1 原始图像2.2 分割标注2.3 文件名信息3 制作COCO格式基本流程4 根据分割标注制作COCO标注&#xff08;核心&#xff09;Main1 前言 最近要开始实例分割任务&#xff0c;由于实例分割是建立再目标检测基础之上的&#xff0c;因此需要制作能用…

两道一年级数学题把我干废了

目录一、背景二、题目三、过程第一解&#xff1a;第二解&#xff1a;第三解&#xff1a;四、总结五、升华一、背景 最近在看小学一年级数学课本的时候&#xff0c;其中两道题让我感叹现在小学教育题的伟大和深厚&#xff0c;并且从中领悟到了…哈哈哈&#xff0c;先卖个官司&a…

【Ansible】Ansible 角色

Ansible 角色 文章目录Ansible 角色一、Ansible Roles 介绍二、Roles 结构三、role 的制作过程四、如何在PlayBook中使用 Role1. 经典&#xff08;原始&#xff09;方式2. 新方式五、如何使用 Galaxy一、Ansible Roles 介绍 一个数据中心有可能存在好多类型的服务器。比如&…

【博客588】ipvs nat模式下独立于iptables与conntrack的连接跟踪表和NAT机制

ipvs nat模式下独立于iptables与conntrack的连接跟踪表和NAT机制 ipvs的连接跟踪表和NAT机制 ipvs只有DNAT和de-DNAT功能 ,它独立与iptables和conntrack,实现了自己的一套连接跟踪表和NAT机制。ipvs仅仅在做DNAT后对conntrack连接进行更新,防止回包因为没有记录而被丢弃。 i…

邂逅Vue.js开发

1、认识Vue Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式 JavaScript框架。 全称是Vue.js或者Vuejs&#xff1b;它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff1b;帮助你高效地开发用户…

学习笔记 一天学完JavaScript基础语法(全)

JavaScript 文章目录JavaScript第一章——初始JavaScript1.1 浏览器执行 JS 简介1.2 JS的组成1.2.1 ECMAScript1.2.2 DOM ——文档对象模型1.2.3 BOM ——浏览器对象模型1.3 JS的写法1.3.1 行内式写法1.3.2 内嵌式写法1.3.3 外部js文件1.4 注释1.5 变量1.5.1 变量声明1.5.2 变量…

【源码解析】Nacos配置中心的源码解析

POM文件添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>在依赖中查看自动装配文件spring.factories org.springframework.cloud.bootstr…

String类详解

在Java编程中&#xff0c;除Object类外&#xff0c;最常用的类就是String类了。本文将从String类源码出发&#xff0c;对String类进行一个全面的分析&#xff0c;以帮忙我们更好的理解和使用String类。 String类概述 Java 使用 String 类代表字符串。Java 中的所有字符串字面…

已解决MemoryError

已解决Python读取20GB超大文件报错&#xff1a;MemoryError 文章目录报错问题报错翻译报错原因解决方法1解决方法2&#xff08;推荐使用&#xff09;帮忙解决报错问题 日常数据分析工作中&#xff0c;难免碰到数据量特别大的情况&#xff0c;动不动就2、3千万行&#xff0c;…

Linux——网络配置篇

1、前情提要&#xff1a; 今晚在配置Linux &#xff08;CentOS7完整版&#xff09;的时候 明明已经配好了网络环境&#xff0c;重启虚拟机后&#xff0c;又出现了Ping不通 主机、Ping不通网关&#xff0c;外网的情况 &#xff08;NAT&#xff09;。 让我很费解的一个情况是&am…

数据结构与算法基础(王卓)(8):线性表的应用

PPT&#xff1a;第二章P173&#xff1b; 并集集合&#xff1a;线性表的合并&#xff08;无需有序&#xff0c;不能重复&#xff09; 线性表&#xff1a; Status Union(Sqlist& A, Sqlist& B)//并集 {int len_A A.length;int len_B B.length;for (int i 1; i < …

SpringCloud学习(1)

SpringCloud学习 软件架构演进之路 对于单体架构&#xff0c;我们根据设计期和开发实现期的不同模式和划分结构&#xff0c;可以分为&#xff1a; 简单单体模式&#xff1a; 代码层面没有拆分&#xff0c;所有的业务逻辑都在一个项目&#xff08;Project&#xff09;里打包…

​力扣解法汇总2293. 极大极小游戏

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a; 力扣 描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums &#xff0c;其长度是 2 的幂。 对 n…

伪随机码序列

伪随机码又称伪随机序列&#xff0c;是用确定性方法产生的在一段周期内具有类似白噪声的随机特性的二&#xff08;或多&#xff09;进制数据序列。 伪随机序列在码分复用、码分多址和扩频通信中都有重要应用。常用的伪随机序列有m序列、M序列和Gold序列。 作为地址码和扩频码…

pycharm中commit/push撤销+分支合并

一、现在想撤销到打印3怎么操作&#xff1f; 1复制修订号 2鼠标右键 3去项目下执行git bash here&#xff0c;再输入git push -f 4此时&#xff0c;github中的push就已经回退成功&#xff1b;再进行一次新代码的commit和push&#xff0c;master分支的颜色就变成黄色了&#x…

Windows中安装 MySQL8.0.30 数据库

下载安装文件 访问MySQL官网下载安装文件https://downloads.mysql.com/archives/community/。 如下图所示&#xff0c;点击页面中的“DOWNLOAD”按钮。 然后&#xff0c;会出现如下所示页面&#xff0c;点击页面底部的“No thanks, just start my download”&#xff0c;就可…

Vue3商店后台管理系统设计文稿篇(四)

记录使用vscode构建Vue3商店后台管理系统&#xff0c;这是第四篇&#xff0c;主要记录使用git与vscode将代码同步提交到GitHub上面 文章目录一、Git与Github建立连接二、配置开发工具三、实用Git命令仓库相关命令分支相关命令正文内容&#xff1a; 一、Git与Github建立连接 使…